Skip to content

Flow Step Types

Flows are built from a sequence of steps. Each step performs a specific action -- sending an email, waiting, checking a condition, or updating contact data. Steps execute in order for each contact that enters the flow.


Send Email

The most common step type. It renders a template with the contact's data and sends the email.

How It Works

  1. Synapse loads the email template you selected.
  2. All NLT expressions in the template are resolved using the contact's profile and the trigger event's attributes.
  3. If any required variable is missing, the email is suppressed (not sent) and logged as "suppressed" instead of "failed".
  4. If everything resolves successfully, the email is sent via your configured sender domain.
  5. An email log entry is created to track delivery, opens, and clicks.

Configuration

SettingDescription
TemplateSelect the email template to send
DescriptionOptional note explaining the purpose of this step
Tip

You can reuse the same template across multiple flows. If you update the template, all flows using it will pick up the changes on the next send.


Wait

Pauses the flow for a specified duration before continuing to the next step. This is essential for building multi-step journeys like follow-ups and reminders.

How It Works

  1. When the flow reaches a wait step, a timer is set for that contact.
  2. The contact's trip status remains "active" during the wait.
  3. After the delay expires, the flow resumes with the next step.

Configuration

SettingDescriptionExamples
DurationHow long to wait1h (1 hour), 24h (1 day), 7d (7 days), 2w (2 weeks)

Common Patterns

PatternDurationUse Case
Quick follow-up1hNudge after form start but no submission
Next-day reminder24hRemind to complete a pending action
Weekly digest7d or 1wWait a week before sending a summary
Cooldown period48hSpace out messages to avoid overwhelming contacts
Note

Wait durations support hours (h), days (d), and weeks (w). For example: 1h, 24h, 7d, 2w. There is no maximum duration enforced by the system, but very long waits may result in stale data by the time the flow resumes.


Condition

Branches the flow based on a check. This lets you create different paths depending on contact data, event history, or other criteria.

How It Works

  1. Synapse evaluates the condition you define.
  2. If the condition is true, one action is taken (continue or skip to end).
  3. If the condition is false, a different action is taken.

Configuration

SettingDescription
CheckWhat to evaluate (see check types below)
If TrueWhat to do if the condition passes (continue to next step, or skip to end)
If FalseWhat to do if the condition fails (continue to next step, or skip to end)

Check Types

CheckDescriptionExample
Event existsHas the contact performed a specific event since entering the flow?"Has the contact submitted a claim_completed event?"
Contact propertyCheck a value on the contact's profile"Is the contact's subscription status subscribed?"
Event attributeCheck data from the trigger event"Is the trigger event's claim_type equal to work_injury?"

Example: Follow-Up Only If Not Completed

A common pattern is to send a reminder only if the contact hasn't taken the next action:

StepTypeDetails
1Send Email"Please complete your submission"
2Wait24 hours
3ConditionHas the contact performed form_submitted? If yes: skip to end. If no: continue.
4Send Email"Reminder: you still need to complete your submission"

Update Contact

Modifies properties on the contact's profile. This is useful for tagging contacts based on their flow participation or updating their status.

How It Works

  1. Synapse updates the specified properties on the contact's record.
  2. These changes persist and are visible in the Contacts section.
  3. Updated properties can be used by subsequent flow steps, other flows, and segment evaluations.

Configuration

SettingDescriptionExample
PropertyThe contact field to updateproperties.onboarding_status
ValueThe new value to setcompleted

Common Uses

  • Mark a contact as onboarded after they complete a welcome flow
  • Set a last_campaign property to track which flow the contact went through
  • Update a segment_tag property used by segments for future targeting
Note

Update Contact changes are applied immediately and are visible to all subsequent steps in the flow, as well as other flows and segments.


Conditional Split

Branches the flow into multiple paths based on contact attributes, event data, or property values. Unlike the basic Condition step (which has only true/false), a Conditional Split can have many branches -- each with its own condition and sequence of steps.

How It Works

  1. Each branch defines a condition (e.g., "contact's country is SG", "plan is premium").
  2. Synapse evaluates branches in order, from top to bottom.
  3. The contact enters the first branch whose condition is true.
  4. If no branch condition matches, the contact enters a default "Everyone Else" path (if configured) or continues to the next step.

Configuration

SettingDescription
BranchesAn ordered list of conditions, each with its own label and filter criteria
LabelA human-readable name for each branch (e.g., "Premium Users", "SG Region")

Example: Region-Based Content

BranchConditionAction
Branch 1properties.country is SGSend "Singapore Welcome" email
Branch 2properties.country is USSend "US Welcome" email
Everyone Else(no condition)Send "Global Welcome" email
Note

Branch conditions are evaluated in order. If a contact matches multiple branches, only the first match is used. Order your branches from most specific to most general.


A/B Split

Randomly divides contacts into two or more groups based on percentages. Use this to test different email content, subject lines, or flow paths against each other.

How It Works

  1. You define two or more variants, each with a percentage allocation.
  2. When a contact reaches the A/B Split step, they are randomly assigned to one variant.
  3. Each variant leads to a different path of subsequent steps.
  4. Percentages must add up to 100%.

Configuration

SettingDescription
VariantsA list of variant names with percentage allocations

Example: Subject Line Test

VariantPercentageAction
Variant A50%Send "Don't miss this" email
Variant B50%Send "Limited time offer" email

Example: 3-Way Split

VariantPercentageAction
Control33%Send original email
Variant A33%Send new subject line
Variant B34%Send new design
Tip

Pair A/B Splits with Conversion Goals to measure which variant performs better. Set a goal event (like "purchase_completed") and compare conversion rates across variants.


Step Execution Order

Steps execute sequentially, from first to last. Each contact who enters the flow gets their own independent journey (called a "trip"). Key points:

  • Each trip progresses through steps one at a time.
  • If a step fails (e.g., email delivery error), it is logged and the trip continues to the next step.
  • Wait steps pause only that contact's trip -- other contacts in the same flow are unaffected.
  • Condition steps may cause a trip to skip remaining steps and end early.

Combining Steps

Here are some common flow patterns using multiple step types:

Welcome Series

StepTypeDetails
1Send EmailWelcome email
2Wait3 days
3Send EmailGetting started tips
4Wait7 days
5ConditionHas user completed onboarding?
6Send EmailReminder to complete setup (only if not completed)

Transaction Follow-Up

StepTypeDetails
1Send EmailOrder confirmation
2Update ContactSet last_order_date to today

Conditional Notification

StepTypeDetails
1ConditionIs contact's plan "premium"?
2Send EmailPremium notification (if yes)
Tip

Start simple with one or two steps. You can always edit an active flow to add more steps -- new trips will use the updated flow, while existing trips continue with the version they entered on.


Looking for the API?

If you prefer to manage flow steps programmatically, see the Flows API Reference.