Update wiki
This commit is contained in:
@@ -0,0 +1,258 @@
|
||||
---
|
||||
title: Visual Workflow Builder
|
||||
description: Build workflows with drag-and-drop
|
||||
icon: Workflow
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The workflow builder is a node-based visual editor for creating email automation. Each node is a step (send email, delay, condition, etc.) and connections define the flow.
|
||||
|
||||
## Canvas controls
|
||||
|
||||
- **-** / **+** - Zoom out/in
|
||||
- **Fit** - Center and zoom to show entire workflow
|
||||
- **Auto-Layout** - Automatically arrange nodes
|
||||
- **Minimap** - Toggle overview map (bottom right)
|
||||
|
||||
## Step types
|
||||
|
||||
### Trigger
|
||||
|
||||
The starting point. Every workflow has one trigger.
|
||||
|
||||
**Types:**
|
||||
- Event (e.g., `user_signed_up`)
|
||||
- Segment entry/exit
|
||||
- Schedule (cron)
|
||||
|
||||
Cannot be deleted.
|
||||
|
||||
### Send Email
|
||||
|
||||
Sends an email to the contact.
|
||||
|
||||
**Configuration:**
|
||||
- Template (required)
|
||||
- Variables (optional overrides)
|
||||
|
||||
Contact must be subscribed for marketing templates. Transactional templates send regardless.
|
||||
|
||||
### Delay
|
||||
|
||||
Pauses execution for a specified time.
|
||||
|
||||
**Configuration:**
|
||||
- Duration: Number
|
||||
- Unit: Minutes, Hours, or Days
|
||||
|
||||
**Example:** Delay 24 hours before next email.
|
||||
|
||||
### Wait for Event
|
||||
|
||||
Pauses until an event occurs or timeout is reached.
|
||||
|
||||
**Configuration:**
|
||||
- Event name
|
||||
- Timeout duration (optional)
|
||||
|
||||
**Requires two outgoing connections:**
|
||||
- Event triggered path
|
||||
- Timeout path
|
||||
|
||||
**Example:**
|
||||
```
|
||||
[Wait for: purchase_completed, timeout: 48h]
|
||||
├─ Purchased → Send thank you
|
||||
└─ Timeout → Send discount reminder
|
||||
```
|
||||
|
||||
### Condition
|
||||
|
||||
Branches workflow based on contact data.
|
||||
|
||||
**Configuration:**
|
||||
- Field to check
|
||||
- Operator (equals, contains, greaterThan, etc.)
|
||||
- Value to compare
|
||||
|
||||
**Requires two outgoing connections:**
|
||||
- True path
|
||||
- False path
|
||||
|
||||
**Example:**
|
||||
```
|
||||
[Condition: plan equals "premium"]
|
||||
├─ True → Send premium features
|
||||
└─ False → Send upgrade offer
|
||||
```
|
||||
|
||||
### Webhook
|
||||
|
||||
Sends HTTP request to external URL.
|
||||
|
||||
**Configuration:**
|
||||
- URL
|
||||
- Method (GET, POST, PUT, DELETE)
|
||||
- Headers (optional)
|
||||
- Body (JSON, optional)
|
||||
|
||||
**Example:** Update CRM when workflow completes.
|
||||
|
||||
### Update Contact
|
||||
|
||||
Updates contact data fields.
|
||||
|
||||
**Configuration:**
|
||||
- Fields: Key-value pairs
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Fields:
|
||||
onboardingCompleted: true
|
||||
lastWorkflowStep: "welcome_series_done"
|
||||
```
|
||||
|
||||
### Exit
|
||||
|
||||
Ends workflow execution. Can have multiple exit points for different paths.
|
||||
|
||||
## Building a workflow
|
||||
|
||||
### Add a step
|
||||
|
||||
**Method 1:** Click **+** button below any node
|
||||
|
||||
**Method 2:** Drag step type from sidebar onto canvas
|
||||
|
||||
### Configure a step
|
||||
|
||||
1. Click node to select
|
||||
2. Right panel opens
|
||||
3. Fill required fields
|
||||
4. Save
|
||||
|
||||
### Connect steps
|
||||
|
||||
Connections auto-create when using + button. To manually connect:
|
||||
1. Drag from node's bottom handle
|
||||
2. Drop on another node's top handle
|
||||
|
||||
### Arrange layout
|
||||
|
||||
Click **Auto-Layout** for automatic top-to-bottom arrangement.
|
||||
|
||||
## Example workflows
|
||||
|
||||
### Linear sequence
|
||||
|
||||
```
|
||||
[Trigger: user_signed_up]
|
||||
↓
|
||||
[Send: Welcome]
|
||||
↓
|
||||
[Delay: 24h]
|
||||
↓
|
||||
[Send: Feature tour]
|
||||
↓
|
||||
[Exit]
|
||||
```
|
||||
|
||||
### With condition
|
||||
|
||||
```
|
||||
[Trigger: trial_started]
|
||||
↓
|
||||
[Send: Welcome]
|
||||
↓
|
||||
[Condition: plan equals "enterprise"]
|
||||
├─ True → [Send: Enterprise onboarding]
|
||||
└─ False → [Send: Standard onboarding]
|
||||
```
|
||||
|
||||
### With event wait
|
||||
|
||||
```
|
||||
[Trigger: cart_abandoned]
|
||||
↓
|
||||
[Delay: 1h]
|
||||
↓
|
||||
[Send: First reminder]
|
||||
↓
|
||||
[Wait for: purchase_completed, timeout: 23h]
|
||||
├─ Purchased → [Exit]
|
||||
└─ Timeout → [Send: Discount offer] → [Exit]
|
||||
```
|
||||
|
||||
## Validation
|
||||
|
||||
The builder validates in real-time. Red border = error.
|
||||
|
||||
**Common errors:**
|
||||
- "No outgoing connections" → Add connection to next step
|
||||
- "Wait for Event requires two paths" → Add event + timeout paths
|
||||
- "Condition requires true and false paths" → Add both paths
|
||||
- "Template not found" → Select valid template
|
||||
|
||||
## Testing
|
||||
|
||||
### Manual execution
|
||||
|
||||
1. **Workflows** → Your workflow → **Executions**
|
||||
2. **Create Execution**
|
||||
3. Select test contact
|
||||
4. Provide test data (JSON)
|
||||
5. **Start**
|
||||
|
||||
Watch execution progress in real-time.
|
||||
|
||||
### Faster testing
|
||||
|
||||
For testing delays:
|
||||
- Temporarily change to 5 minutes instead of days
|
||||
- Test the flow
|
||||
- Change back to real durations
|
||||
|
||||
## Keyboard shortcuts
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| Delete | Delete selected node |
|
||||
| Cmd/Ctrl + Z | Undo |
|
||||
| Cmd/Ctrl + Shift + Z | Redo |
|
||||
| + / - | Zoom |
|
||||
| F | Fit to screen |
|
||||
| Esc | Deselect |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Workflow not triggering**
|
||||
- Workflow is enabled (toggle ON)
|
||||
- Event name matches exactly (case-sensitive)
|
||||
- Contact exists and is subscribed
|
||||
|
||||
**Execution stuck**
|
||||
- Check delay configuration
|
||||
- Verify wait timeout hasn't expired
|
||||
- No circular references
|
||||
|
||||
**Email not sending**
|
||||
- Template exists
|
||||
- Contact is subscribed
|
||||
- Variables in data match template
|
||||
|
||||
## Best practices
|
||||
|
||||
**Keep it simple** - 5-10 steps per workflow. Break complex flows into multiple workflows.
|
||||
|
||||
**Descriptive names** - "Send Welcome Email - Day 0" not "Email 1"
|
||||
|
||||
**Test first** - Always test with a test contact before enabling.
|
||||
|
||||
**Space emails** - Minimum 12-24 hours between emails to avoid fatigue.
|
||||
|
||||
## Next steps
|
||||
|
||||
- [Build your first workflow](/tutorials/welcome-series-workflow)
|
||||
- [Workflow patterns](/automation-patterns/workflow-patterns)
|
||||
- [Conditional branching](/automation-patterns/conditional-branching)
|
||||
Reference in New Issue
Block a user