Merge tags reference
Find supported merge tags for abandoned checkout, welcome and broadcast emails, with unsubscribe links, custom properties, unsupported-tag behavior and testing examples.
Merge tags are dynamic placeholders in email templates. At send time, Reach replaces them with the recipient and email data available for that message, such as a customer's name, an abandoned product or an unsubscribe link.
Choose the email type first, then use its supported tags. Abandoned checkout emails, subscription-triggered welcome emails and broadcasts support different fields. Tags are not interchangeable across these types.
Universal tag: unsubscribe link
All email types support this tag. Keep an unsubscribe option in marketing emails.
| Tag | Meaning | Where to use it |
|---|---|---|
*|UNSUBSCRIBE_URL|* | The recipient's unique unsubscribe URL | The link address of your footer's unsubscribe text or button |
The unsubscribe tag uses asterisks and vertical bars. Do not convert it to double-brace syntax. For example:
<a href="*|UNSUBSCRIBE_URL|*">Unsubscribe</a>
In the visual editor, enter the tag as the link address rather than displaying it as body text. See Subscription status and unsubscribes for what happens after a recipient unsubscribes.
Abandoned checkout emails
These fields are available in abandoned checkout emails. Product details and the checkout link come from the abandoned checkout that the email relates to.
Check the prefix
The product and checkout prefix is abandoned, not abandon. For example, use {{ abandoned.product_title }}.
| Tag | Meaning |
|---|---|
{{ abandoned.product_title }} | Product title |
{{ abandoned.product_price }} | Product price |
{{ abandoned.product_img_url }} | Product image URL |
{{ abandoned.checkout_url }} | Recovery checkout URL, with discount code and UTM parameters added automatically |
{{ customer.first_name }} | Customer's first name |
{{ customer.last_name }} | Customer's last name |
{{ customer.email }} | Customer's email address |
{{ shop.name }} | Shop name |
{{ brand.brand_name }} | Brand name from brand settings |
{{ brand.brand_logo }} | Brand logo URL from brand settings |
{{ company_address }} | Company address for the footer |
Use product titles and prices in text, image and logo tags as image URLs, and the checkout tag as the destination of a button or text link. For example:
<p>Hi {{ customer.first_name }},</p>
<p>Your {{ abandoned.product_title }} is waiting for you.</p>
<img src="{{ abandoned.product_img_url }}" alt="{{ abandoned.product_title }}" />
<p>{{ abandoned.product_price }}</p>
<a href="{{ abandoned.checkout_url }}">Return to checkout</a>
<p>{{ company_address }}</p>
<a href="*|UNSUBSCRIBE_URL|*">Unsubscribe</a>
This example shows where to place the tags. Confirm that the test recipient has the required data before using it. Replacing the checkout tag with a regular product page URL will take the recipient to that page instead of their recovery checkout.
Welcome emails: subscription-triggered
Subscription-triggered welcome emails support the following customer fields, plus the universal unsubscribe tag above.
| Tag | Meaning |
|---|---|
{{ customer.first_name }} | Customer's first name |
{{ customer.last_name }} | Customer's last name |
{{ customer.email }} | Customer's email address |
For example:
Hi {{ customer.first_name }}, thanks for subscribing!
This email was sent to {{ customer.email }}.
Do not copy abandoned product, brand or broadcast custom-property tags into a welcome email. Fields not listed in this section are not supported for this email type. Enter other footer information, such as your company address, as actual text and update the template when those details change.
Broadcast emails
| Tag | Meaning |
|---|---|
{{ customer.first_name }} | Customer's first name |
{{ customer.last_name }} | Customer's last name |
{{ customer.name }} | Customer's full name |
{{ customer.email }} | Customer's email address |
{{ customer.properties.xxx }} | A custom customer property; replace xxx with the actual property key |
{{ company_address }} | Company address |
Custom properties
First check the property key and value in the contact record. If the actual key is membership_level, for example, use:
Hi {{ customer.first_name }},
Your membership level is {{ customer.properties.membership_level }}.
membership_level is an example, not a built-in field. A value is available only if the contact has that property. Do not leave the placeholder xxx in the tag.
Company address and footer
{{ company_address }} reads the company address from Brand Kit. Complete it before your first send and update your brand details when the address changes. See Brand Kit.
<p>{{ company_address }}</p>
<a href="*|UNSUBSCRIBE_URL|*">Unsubscribe</a>
Syntax and unsupported tags
Spaces inside double braces are optional. These forms are equivalent:
{{customer.email}}
{{ customer.email }}
Each email type supports only the fields in its list. For example, a broadcast has no abandoned checkout context, so {{ abandoned.product_title }} will not produce an abandoned product title.
Misspelled or unsupported tags do not raise an error, but the output depends on the email type:
| Email type | Misspelled or unsupported tag |
|---|---|
| Abandoned checkout | Replaced with an empty value |
| Welcome, triggered by a subscription | Left as the original tag text |
| Broadcast | Replaced with an empty value |
A successful send does not mean that every tag resolved correctly. If you see blanks or literal tags, check the email type and spelling first, then check the underlying data.
This reference does not specify default-value, conditional or loop syntax. Do not add filters to invent a fallback value. When recipient data is incomplete, use wording that does not depend on the missing field. Check editor guidance and an actual send before using tags in subject lines or preview text; do not assume that body support applies to those fields.
Before sending
Confirm the scenario: select tags for abandoned checkout, subscription-triggered welcome or broadcast emails.
Check the data: review customer names, custom properties and brand details. Abandoned checkout emails also need product and checkout data.
Test the matching scenario: inspect a received email, not just the placeholders in the editor. If a test send lacks the relevant data, use your own test contact and the corresponding trigger flow to verify it.
Check output and links: look for unexpected blanks or literal tags, confirm that images load, the recovery button opens the correct checkout, the unsubscribe link works and the company address is correct.
For editing, see Designing emails in the editor. For sending and automation, see Sending your first broadcast and Building an automation.