BlogESJoin the waitlist
← All articles

First name and unsubscribe merge tags in 21 email platforms

Copy-paste syntax for the first-name variable (with a fallback) and the unsubscribe link in Klaviyo, Braze, Iterable, Salesforce, Brevo, Mailchimp, HubSpot and 14 more.

By Mario Calvo · · 3 min read

The most common send-day mistake isn't a bad subject line. It's an email that lands as "Hi {{first_name}}," or "Hi ," because the variable was written in the wrong syntax, or the contact had no name and there was no fallback.

Every platform writes variables differently. Here is the syntax for the two you need in almost every email: the first name, with a fallback for contacts who don't have one, and the unsubscribe link.

How to read the table

  • Replace the field name with the one in your account. first_name, FNAME or FirstName are the defaults; your team may have renamed them.
  • there is the fallback text. Change it to whatever reads well in your sentence ("Hi there", "Hola").
  • Where a platform can't take a fallback inside the tag, the note below the table tells you where to set it.

The cheat sheet

Platform First name (with fallback) Unsubscribe link
Klaviyo {{ first_name|default:'there' }} {% unsubscribe_link %}
Braze {{${first_name} | default: 'there'}} {{${unsubscribe_url}}}
Iterable {{#if firstName}}{{firstName}}{{else}}there{{/if}} {{unsubscribeUrl}}
Salesforce Marketing Cloud %%=IIF(Empty(AttributeValue("FirstName")),"there",AttributeValue("FirstName"))=%% %%unsub_center_url%%
Brevo {{ contact.FIRSTNAME | default : "there" }} {{ unsubscribe }}
Mailchimp *|FNAME|* *|UNSUB|*
HubSpot {{ contact.firstname }} {{ unsubscribe_link }}
ActiveCampaign %FIRSTNAME% %UNSUBSCRIBELINK%
MailerLite {$name} {$unsubscribe}
Kit (ConvertKit) {{ subscriber.first_name | default: "there" }} {{ unsubscribe_url }}
Mailjet {{data:firstname:"there"}} [[UNSUB_LINK_EN]]
Customer.io {{ customer.first_name | default: "there" }} {% unsubscribe_url %}
Omnisend [[contact.first_name|default: "there"]] [[unsubscribe_link]]
GetResponse [[firstname]] [[remove]]
SendGrid (Marketing Campaigns) {{first_name}} {{{unsubscribe}}}
Marketo {{lead.First Name:default=there}} {{system.unsubscribeLink}}
Account Engagement (Pardot) {{Recipient.FirstName}} {{{EmailPreferenceCenter}}}
Mautic {contactfield=firstname|there} {unsubscribe_url}
Zoho Campaigns $[LI:FIRSTNAME]$ $[LI:UNSUBSCRIBE]$
Acumbamail *|YOUR_NAME_FIELD|* *|UNSUBSCRIBE_URL|*
Resend (Broadcasts) {{{contact.first_name|there}}} {{{RESEND_UNSUBSCRIBE_URL}}}

Checked against each platform's documentation in September 2026. Platforms change their syntax from time to time, so send a test before a big send.

The gotchas behind the table

Mailchimp, HubSpot, ActiveCampaign, GetResponse, SendGrid, Zoho. The tag has no fallback inside it. Set the default in the platform instead: in Mailchimp, the default merge value of the audience field; in HubSpot, the default value when you insert the personalization token. If you can't, write the sentence so it still reads well empty ("Hi," is fine, "Hi , your order" is not).

Braze: standard vs custom attributes. First name, language, country or city are standard attributes and go as ${first_name}. Anything you created yourself (plan, favorite store) is a custom attribute and goes as {{custom_attribute.${plan}}}. Mixing them up is the most common Braze personalization bug.

Salesforce Marketing Cloud. AttributeValue("FirstName") reads the column of the sendable data extension or the subscriber attribute with that exact name. If your data extension calls it First_Name, that's what goes inside the quotes.

Brevo. The name attribute is FIRSTNAME in English accounts, but it may be called something else in yours (for example NOMBRE in Spanish accounts). Check it under Contacts → Settings → Contact attributes.

Acumbamail and Mailjet. The field name is whatever your list calls it. Copy the exact tag from the list settings.

Before you hit send

  1. Send two tests: one to a contact with a first name and one to a contact without it. The second one is where problems show up.
  2. Check the subject line too. Most platforms accept the same tags in the subject; a broken tag there is visible to everyone.
  3. Click the unsubscribe link in the test. It must be a real link, not #, and in most countries it's a legal requirement.
  4. If you send in several languages, make sure every version uses the same field names. Translating a template often breaks the tags.

We built Remite so nobody has to memorize this: you paste the brief, and the email comes out with the variables, fallbacks and unsubscribe link already written in your platform's syntax.