Every path ends at the Exit node. Exit is always on the canvas and can’t be removed.
Send Email
1
Choose the template
Under Email template, click Choose template and pick one of your approved templates. Library designs only appear here after you’ve made them your own under Templates. To change the email, click Edit template. The builder opens, and saving brings you back to the journey. Change template swaps in a different one.
2
Write the subject line
Enter a Subject line. You can use Liquid in it. The template is the body and the subject comes from the step, so both are required.
3
Pick the sender and send policy (optional)
Sender profile decides who the email is from. Leave it blank to use the sender that the send policy provides. Send policy decides the delivery route and the default sender. If you don’t pick one, the Marketing default is used. See Send policies.
- Contact merge tags such as
{{ first_name }}and{{ email }} - The trigger’s payload as
data, for example{{ data.order.total }}. This is thedatafrom an API call, the properties of an event, the answers from a form, or a normalised Shopify order. - The event that started the journey as
event, for example{{ event.name }}. This is only set when an event started the journey.
{% for item in data.items %}…{% endfor %}. If the Liquid in a template has an error, the step fails and Logs shows the reason.
With a Marketing policy, the email gets the unsubscribe footer and headers, and unsubscribed contacts are skipped. With a Transactional policy, there’s no footer, and unsubscribed contacts still receive it. Bounced, complained and unconfirmed contacts are always skipped. If the contact has a language set and the template has a translation for it, they get the translation.
Journey email counts against your monthly email allowance. If the allowance runs out, the step waits instead of dropping the email. If your sending domain fails the deliverability check (or has hit its warm-up cap for the day), the email is skipped and Logs records why.
Wait / Delay
Set a Delay amount and a Delay unit: minutes, hours, days or weeks. The contact moves on to the next step once the delay has passed. A wait at the end of a path has no effect, so validation treats it as an error and the journey won’t activate until you fix it.Update Contact
Choose a Field, then enter the Value:- First name, Last name or Source.
- Custom field: then pick one of the fields defined under Custom Fields. The value box follows the field’s type: Yes/No for a boolean, the options for a select, a date picker for a date. The value is saved on the contact’s custom field, so segments,
{{ customField.KEY }}in emails and date-field schedules see it. If the value doesn’t fit the field’s type (for example text in a number field), or the field has been deleted, the step fails and Logs shows why. - Metadata key: then enter the key, for example
plan. This writes free-form data to the contact’smetadata, not to a custom field.
Add to List / Remove from List
Choose a Contact list.- Add to List subscribes the contact to that list. This re-subscribes a contact who had unsubscribed from that one list, so use it with care. It won’t send mail to someone who unsubscribed from everything, though: their contact status still blocks marketing email.
- Remove from List takes the contact off the list completely. It’s a removal, not an unsubscribe, and it’s recorded on the contact’s timeline.
Send Webhook
Posts to your own endpoint when a contact reaches the step.
In a custom body, you can use
{{email}}, {{firstName}}, {{lastName}} and dotted paths such as {{ data.order.total }} or {{ event.name }}. Objects and arrays are inserted as JSON, so write them without quotes.
The request times out after 10 seconds. Server errors (5xx), timeouts and network errors are tried up to 3 times in total. A 4xx response fails the step straight away.
Ad steps
- Sync to Ad Audience: choose an Ad audience and an Operation, either Add to audience or Remove from audience. Only active contacts with an email address are synced.
- Advertising campaign: adds the contact to the audience of an ad campaign that was created for this journey. Contacts who reach the step start seeing the ad. A campaign that wasn’t created from a journey has no audience for this step to use, so click Create an ad campaign for this journey.
If/Else Condition
Click Configure conditions to open the Condition builder. Each condition has a field, an operator and a value. You can use the same contact fields as the segment builder, such as status, list membership, email engagement and dates. You can also use Payload value (data.*) with a dotted path such asorder.total or items[0].sku to branch on the trigger’s data.
To combine conditions, choose ALL conditions or ANY condition, or choose Custom logic and enter an expression such as 1 AND (2 OR 3).
The node has two outputs: Yes (the condition is met) and No. Connect at least one of them.
A/B Split
Sends each contact down path A or path B at random. Drag the Traffic to A slider in steps of 5%, anywhere from All B through 50 / 50 to All A. The default is 50/50. On the canvas, the branches are labelled with their share, for exampleA · 60% and B · 40%.
Each contact is assigned once, when they reach the step, and the choice is saved on their journey timeline. Put a different email on each branch, then compare the per-step stats in Analytics to see which one did better.