Workflow Builder
The Workflow Builder is a visual editor in the Zyphr dashboard for designing notification workflows without writing code.
Getting Started
- Navigate to Messaging → Workflows in the dashboard
- Click Create Workflow
- Give your workflow a name (the key is auto-generated)
- Start adding steps
Step Types
Channel Steps
Drag channel steps onto the canvas to add notification delivery points:
| Step | Description | Configuration |
|---|---|---|
| Send email | Subject, HTML body, text body | |
| Push | Send push notification | Title, body, image URL, custom data |
| SMS | Send SMS | Body text (with character counter) |
| In-App | Send in-app notification | Title, body, action URL, category, priority |
Delay Step
Insert pauses between notification steps:
- Amount: Number value (e.g., 1, 24, 72)
- Unit: Minutes, hours, or days
Common patterns:
- Wait 1 hour before sending push fallback
- Wait 24 hours before sending email reminder
- Wait 3 days before re-engagement
Branch Step
Add conditional logic based on previous step outcomes. Branches let you create different notification paths based on whether a prior step succeeded or was engaged with.
How Branches Work
- Select a previous step in the workflow to evaluate
- Choose a condition to check against that step's outcome
- The workflow splits into two paths: Yes (condition met) and No (condition not met)
- Add different steps to each path
Available Conditions
| Condition | Description | Use Case |
|---|---|---|
delivered | Message was successfully delivered to the recipient | Check if email/push/SMS reached the user |
read | Recipient opened or viewed the message | Check if email was opened or in-app was seen |
clicked | Recipient clicked a link in the message | Check if user engaged with the CTA |
failed | Message delivery failed | Route to fallback channel on failure |
Condition Syntax
Each branch evaluates as:
IF [step_name] outcome IS [condition] THEN → Yes path
ELSE → No path
For example:
IF "Welcome Email" outcome IS clicked→ Yes: done / No: send push reminderIF "Push Notification" outcome IS delivered→ Yes: done / No: send SMS fallbackIF "SMS Alert" outcome IS failed→ Yes: send email fallback / No: done
Common Branch Patterns
Engagement-based escalation:
Email → Delay 24h → Branch (email clicked?)
→ Yes: Done
→ No: Push Notification → Delay 4h → Branch (push delivered?)
→ Yes: Done
→ No: SMS
Failure fallback:
Push Notification → Branch (push delivered?)
→ Yes: Done
→ No: Email fallback
Read confirmation:
In-App Notification → Delay 1h → Branch (in-app read?)
→ Yes: Done
→ No: Email digest
Multiple Branches
You can chain branches sequentially. Each branch can contain additional branches, delays, and channel steps on either path. There is no limit to nesting depth, but keep workflows readable — deeply nested branches become hard to debug.
Template Variables
All channel step content supports {{variable}} syntax:
Title: Hello {{subscriber.name}}!
Body: Your order {{payload.orderId}} is confirmed.
Available variables:
{{payload.*}}— Data from the trigger payload{{subscriber.name}}— Subscriber name{{subscriber.email}}— Subscriber email{{subscriber.metadata.*}}— Custom subscriber metadata
Workflow Lifecycle
- Draft — Build and test your workflow
- Active — Workflow accepts triggers and processes executions
- Paused — Temporarily stop accepting new triggers
- Archived — Soft-delete (existing executions complete)
Monitoring
View execution history from the workflow detail page:
- See all executions with status (pending, running, completed, failed)
- Click into an execution to see step-by-step progress
- Each step shows its status, timing, and result