Automations
Last updated on 2026-08-27
The automation system lets you build complex email workflows visually using a node-graph canvas. Automations trigger based on subscriber actions and execute a sequence of steps including emails, delays, conditions, and splits.
Automation List (/automations)
The automation list shows all automations with key metrics.
Features
- Status filtering -- filter by active, paused, or draft
- Status badges -- color-coded badges for each automation state
- Trigger display -- shows the trigger type for each automation
- Performance metrics -- enrolled count, completed count, and revenue attribution
- Last triggered -- timestamp of the most recent trigger execution
- Quick actions -- activate, pause, edit, duplicate, or delete
Automation Statuses
| Status | Description | Behavior |
|---|---|---|
active |
Currently running | New subscribers matching the trigger are enrolled |
paused |
Temporarily stopped | No new enrollments; in-progress subscribers continue |
draft |
Not yet activated | Being built in the canvas; not visible to subscribers |
Data Model
interface Automation {
id: string;
name: string;
description?: string;
status: 'active' | 'paused' | 'draft';
trigger: string | FlowTrigger;
enrolled?: number;
enrolledCount?: number;
completed?: number;
completedCount?: number;
revenue: number;
lastTriggered?: string | null;
createdAt: string;
activatedAt?: string;
}
Visual Flow Builder Canvas (/automations/[id])
The flow builder is the centerpiece of the automation system. It provides a visual node-graph canvas where you connect trigger nodes, action nodes, and conditional branches into a complete workflow.
Canvas Features
- Zoom controls -- zoom in, zoom out, and fit-to-view buttons
- Pan navigation -- drag the canvas background to pan around the flow
- Node positioning -- each node has x/y coordinates on the canvas
- SVG path connections -- curved SVG paths connect parent nodes to child nodes
- Node selection -- click a node to open its configuration panel
- Save and activate -- toolbar actions to save the current flow or activate the automation
Node Types
The flow builder supports 7 node types:
| Node Type | Icon | Description | Configurable Properties |
|---|---|---|---|
trigger |
Zap |
Entry point that starts the automation | Trigger type, conditions |
email |
Mail |
Send an email to the subscriber | Email template, subject line |
wait |
Clock |
Delay for a specified duration | Wait duration (hours, days, weeks) |
split |
GitBranch |
Split subscribers into branches | Split criteria, branch labels |
webhook |
Globe |
Send data to an external URL | Webhook URL, payload |
tag |
Tag |
Add or remove a tag from the subscriber | Tag name, action (add/remove) |
condition |
Filter |
Conditional branch based on criteria | Field, operator, value |
Trigger Types
Automations can be triggered by various subscriber actions:
| Trigger Type | Description |
|---|---|
list-join |
Subscriber joins a specific mailing list |
tag-added |
A tag is applied to a subscriber |
date-based |
A specific date field matches (birthday, anniversary) |
purchase |
Subscriber completes a purchase |
api-event |
Custom event sent via API |
form-submission |
Subscriber submits a growth form |
page-visit |
Subscriber visits a tracked page |
interface FlowTrigger {
type: 'list-join' | 'tag-added' | 'date-based' | 'purchase'
| 'api-event' | 'form-submission' | 'page-visit';
conditions: Record<string, unknown>;
}
Node Data Model
interface FlowNode {
id: string;
automationId?: string;
type: 'trigger' | 'email' | 'wait' | 'split'
| 'webhook' | 'tag' | 'move-to-list' | 'condition';
title?: string;
position?: FlowNodePosition;
x?: number;
y?: number;
data?: Record<string, unknown>;
config?: Record<string, unknown>;
connectedTo?: string[];
parentId?: string;
pathLabel?: string;
}
How the Canvas Works
- Node rendering -- each
FlowNodeis rendered at its(x, y)position on the canvas - Connection drawing -- SVG
<path>elements are drawn between parent and child nodes using curved bezier paths - Node configuration -- clicking a node opens a
Sheetdrawer with fields specific to that node type - Adding nodes -- click the
+button between nodes to insert a new node in the flow - Branch paths -- split and condition nodes create multiple outgoing paths, each labeled (e.g., "Yes" / "No")
- Zoom/pan -- zoom controls adjust the canvas scale; dragging the background pans the viewport
Automation Analytics (/automations/[id]/analytics)
Each automation has its own analytics page showing performance metrics.
Metrics
- Enrollment count -- total subscribers who entered the automation
- Completion count -- subscribers who reached the end
- Completion rate -- percentage of enrolled subscribers who completed
- Revenue attribution -- total revenue attributed to the automation
- Step-by-step funnel -- conversion rates at each step in the flow
- Time-series data -- enrollment and completion trends over time
Automation Templates (/automations/templates)
Pre-built automation templates provide starting points for common workflows.
Features
- Category organization -- templates grouped by use case
- Template details -- name, description, email count, and estimated revenue
- One-click creation -- select a template to pre-populate the flow builder with nodes
Data Model
interface AutomationTemplate {
id: string;
name: string;
category: string;
description: string;
emailCount?: number;
estimatedRevenue?: number;
nodes?: FlowNode[];
previewUrl?: string;
}
Common Template Categories
| Category | Examples |
|---|---|
| Welcome | Welcome series, onboarding sequence |
| Cart Abandonment | Abandoned cart recovery, browse abandonment |
| Re-engagement | Win-back campaign, inactive subscriber nudge |
| Post-Purchase | Order confirmation, review request, cross-sell |
| Date-Based | Birthday email, anniversary, renewal reminder |
Activity Log (/automations/activity)
The activity log provides a real-time feed of automation executions.
Columns
| Column | Description |
|---|---|
| Type | The action type (email sent, tag added, wait started, etc.) |
| Subscriber Email | The subscriber who triggered the action |
| Automation Name | The automation that executed |
| Details | Step-specific information |
| Timestamp | When the action occurred |
Data Model
interface ActivityLog {
id: string;
type: string;
subscriberEmail: string;
automationName: string;
timestamp: string;
details: string;
}
Related Docs
- Screens -- complete screen catalog
- Campaigns -- campaign management system
- Analytics -- analytics and deliverability
- Customization -- add custom automation node types