Skip to content
ChangelogBook a demoSign up

Journey steps

AudienceMarketers configuring steps in a journey
PrerequisitesA journey in draft or edit mode (see Create a journey)

Journey steps control what happens after a member enters: when they wait, which path they follow, what gets sent, and which values or offers are assigned.

Overview

Add steps to the journey canvas in the order members should encounter them:

  • Control timing with Time delay and Hold until.
  • Create branches with Segment and A/B Split.
  • Send messages or data with Send email, Send SMS, Send push, and Send to destination.
  • Assign values or offers with Set variable and Assign coupon.

For entry, exit criteria, scheduling, and activation, see Create a journey.

Control timing

Time delay

The Time delay step holds each member until its delay condition is met. Choose one of four modes:

  • Duration — Wait for a fixed period, such as two hours or three days.
  • Specific date — Wait until a calendar date and time.
  • Date from a profile property — Wait until a date stored on the member's profile, with an optional offset, such as two days before subscription_renewal_date.
  • Next matching time — Wait until the next occurrence of a recurring time, such as Monday at 9 AM.

After the delay condition is met, the member advances on the next journey run. For example, with a six-hour schedule, a one-day delay can result in a wait of 24 to 30 hours. See How the schedule affects timing.

Time delay tile

A duration shorter than the evaluation interval doesn't cause the journey to run sooner. On an hourly schedule, both a 15-minute delay and a 59-minute delay advance on the next hourly run.

Hold until

The Hold until step holds each member until a condition is met or the maximum hold duration expires. It creates two paths:

  • Rule met — The member follows this path when the condition is met.
  • Rule not met — The member follows this path when the maximum hold duration expires first.

Define the condition using either:

  • Event is performed — Wait for a specific event.
  • Criteria is met — Wait for a condition built in the query builder. Criteria can reference profile attributes, traits, audience membership, event history, and related-model data.

Hightouch checks the condition on each journey run, not when the underlying data changes.

Hold until tile

Create branches

Segment

The Segment step routes members based on profile attributes, traits, audience membership, event history, or relationships.

Hightouch evaluates branches from top to bottom. A member follows the first branch whose conditions they meet, so branch order matters when conditions overlap.

Segment tile

A/B Split

The A/B Split step divides members across branches by the percentages you set. Assignment is deterministic: Hightouch hashes each member's primary key with a split-specific salt, so a member returns to the same branch on re-entry as long as the split configuration doesn't change.

Configure the number of branches, the percentage assigned to each branch, and the branch names.

A/B Split tile

Changing branch allocations after activation changes the population assigned under each allocation and can invalidate comparisons between branches.

A/B Split experiment measurement must be enabled by Hightouch. to turn it on.

To measure outcomes by branch:

  1. Open the A/B Split step.
  2. Under Measurement configuration, select Create experiment.
  3. Configure a primary metric, any secondary metrics, and the measurement window.

View results from the A/B Split step or under Intelligence > Experiments. See Experiments.

Split tile measurement configuration

Send messages or data

Send email, SMS, or push

The Send email, Send SMS, and Send push steps deliver messages directly from Hightouch. They don't create a sync to a downstream messaging tool.

Hightouch must enable direct delivery for your workspace, and each channel must be configured before its step appears. Otherwise, use Send to destination.

To configure a direct message:

  1. Name the step. Hightouch uses the step name as the message name in reporting.
  2. Create the message from a template or from scratch.
  3. For email, configure the subject, preheader, and body.
  4. Add personalization from profile attributes. In an event-triggered journey, you can also reference properties from the event that triggered entry.
  5. Preview the message with a profile and send a test message.
  6. Configure send limits, if needed.

The journey determines which members reach the step and when Hightouch evaluates it. Direct messages don't have a separate audience or schedule, and reporting aggregates performance by message rather than by journey run. Hightouch applies unsubscribe, bounce, and suppression rules before delivery.

Send to destination

The Send to destination step runs a sync when members reach it. Select an existing sync or create one from the step.

Send to destination tile

Choosing a destination on a Send to destination step

Journey syncs run as part of journey evaluation and don't have an independent schedule. Choose the behavior based on what the destination should receive:

Sync behaviorUse when you want to...Recommended sync mode
TriggerSend a one-time action per member per stepInsert
CohortMaintain a destination list or audience that reflects current journey membershipUpsert or Mirror

Configure the sync type and removal behavior under Journey settings, then configure the destination-specific object and how fields map to the destination.

Selecting Trigger or Cohort and removal behavior in the sync configuration

Configuring the destination-specific sync

Finalizing a journey-triggered sync

The modes available depend on the destination.

Trigger mode

Use Trigger mode for one-time actions where you want one event per member per step.

Sync modeBehaviorRecommendation
InsertMembers entering or re-entering the step during a run are synced. Previously synced members are ignored.Recommended
UpsertNew and updated members are synced, which can cause duplicate sends.Not recommended
UpdateOnly previously synced members are updated. New members are ignored unless they already exist in the destination.Not recommended
MirrorAll members who have ever passed through the step are synced every run.Not recommended
DiffProduces one file per operation: enter, change, and remove.Not recommended

Cohort mode

Use Cohort mode to maintain a destination audience or list that reflects current journey membership.

Sync modeBehaviorRemoval behaviorRecommendation
UpsertNew members sync, and changes to existing members sync.Members are removed based on journey configuration.Recommended
MirrorAll current members sync every run.Members are removed based on journey configuration.Recommended when the destination exposes Mirror and should exactly match journey membership
UpdateOnly existing destination members are updated. New members are ignored.Members are removed, but deleteMode is usually set to clear (attributes removed, member remains).Not recommended
InsertNew members sync. Changes and removals are ignored.No removal occurs.Not recommended
DiffProduces one file per operation.No removal occurs.Not recommended

Avoid deleteMode: do nothing with cohort syncs. Removals won't be applied, and the destination list will continue to grow.

Retries and sequencing

If a record fails to sync, Hightouch retries it on later runs. A cohort sync retries the record while the member remains in the sync and stops once they're removed by an exit or completion. A trigger sync retries until the record syncs or its expiry window (expire_after) elapses.

Send to destination steps reached during the same journey evaluation are scheduled together at the end of the run. Journeys don't guarantee an order between those syncs. To make one sync happen on a later run, add a Time delay step between them.

Sync templates

You can apply a sync template to reuse destination-specific configuration. The template doesn't control the journey sync type or removal behavior, so changes to those settings must be made on each journey sync.

Destination rules can exclude records at sync time without changing journey membership. If the number of members at the step differs from the number processed by the destination, review the destination rules applied to the sync.

Assign and carry values

Set variable

The Set variable step assigns a value to a journey variable. Later steps can use that value for branching or send it to a destination.

Define variables in the journey's Variables settings, then add Set variable steps where their values should change.

Journey Variables settings

Set variable tile configuration

For example, to record whether a member followed a VIP branch and send that value to a destination:

  1. Define a vip_user variable in journey settings.
  2. Add a Segment step that branches on loyalty level.
  3. On the high-loyalty branch, set vip_user to true. On the remaining branches, set it to false.
  4. In a Send to destination step, map vip_user to a destination field.

Setting a journey variable on a branch

Mapping a journey variable to a destination field

After the journey runs, the member details panel shows assigned variable values. Hightouch also writes them to the per-journey JOURNEY_CONTEXT_LOG_<journey_id> table. Query this table to use a journey variable in downstream analysis or audience logic.

The journey UI uses Variables and Set variable. Warehouse log tables and API responses use context variables for the same data.

Assign an offer

Assign coupon

The Assign coupon step assigns a code from a configured coupon pool to each member who reaches it. Use it for promotions that need unique, single-use codes. See Coupon assignment to configure a coupon pool.

Assign coupon tile configuration

Assign coupon steps aren't available in event-triggered journeys. Use audience-based entry when the journey requires coupon assignment.


Next steps

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Privacy PolicyTerms of Service