Merge Tags Cheat Sheet

Templates are plain HTML. Everything dynamic goes through a merge tag written {{name}}, resolved per recipient at send time.
One syntax only. Templates use {{name}}. Mailchimp's *|TAG|* syntax is converted when you save a pasted template — it is never a second syntax to maintain.

Supported merge tags

This is the entire vocabulary. Anything else is reported as unknown.
TagResolves toExample output
{{firstName}}Contact's first nameCamille
{{lastName}}Contact's last nameDubois
{{email}}Contact's email addresscamille@exemple.fr
{{unsubscribeUrl}}Unique unsubscribe link for this recipienthttps://app/u/a1b2c3
{{currentYear}}Year at the moment of rendering2026
{{today}}Today's date, long formAugust 22, 2026
{{postalAddress}}Your organization's postal address12 rue des Lilas, 59000 Lille
{{topicOptOutUrl}}Opt-out link for the send's topic (optional)https://app/t/d4e5f6
{{poweredBy}}A small "Sent with AgentsMail.io" linkSent with AgentsMail.io
{{today}} and {{currentYear}} are computed at render time, in the sending organization's time zone and language. Both come from Settings → Sending. The same instant produces a different date for an organization in Paris and one in New York — that is the point. Values passed for them in an API call are ignored: like {{unsubscribeUrl}}, AgentsMail decides them.
Language{{today}} renders
French22 août 2026
EnglishAugust 22, 2026
Spanish22 de agosto de 2026
In an automated sequence, {{today}} is resolved when the step actually sends — not when the sequence version was published. A published step is otherwise a frozen snapshot, so this is the one thing in it that moves.
{{poweredBy}} is the one merge tag that inserts a link for you. Every other tag resolves to text — with {{unsubscribeUrl}}, your template writes the <a> around it. This one arrives ready: a small, discreet link, no underline, in the colour of the surrounding text, so it sits in a footer without competing with anything. Because it is already a link, do not put it inside an attribute (href="{{poweredBy}}" produces broken HTML) — drop it on a line of its own.It is entirely optional: nothing requires it, nothing stops you from deleting it, and it is never added to your template behind your back. Templates from the gallery carry it in the footer; remove it and the template still sends.It follows your organization's email language, and it is not counted as a tracked link — it never appears in your campaign's click statistics.
Whitespace inside the braces is allowed — {{ firstName }} works like {{firstName}}. Merge tags are resolved in both the subject line and the HTML body.
{{unsubscribeUrl}} is mandatory. A template whose rendered HTML does not contain the unsubscribe link is refused at render time, with an explicit error. No footer is silently appended to your HTML — the link must be somewhere in your template.

Mailchimp tags converted on save

Paste a Mailchimp template and save it: these are rewritten automatically.
Mailchimp tagBecomes
*|UNSUB|*{{unsubscribeUrl}}
*|FNAME|*{{firstName}}
*|LNAME|*{{lastName}}
*|EMAIL|*{{email}}
*|CURRENT_YEAR|*{{currentYear}}

Not supported

Any other *|TAG|* is left untouched in the HTML and reported in the editor when you save. It is never silently shipped to recipients.
Mailchimp tagWhy it is not supported
*|DATE:d F Y|*Carries a format string. Merge tags substitute, they do not format — converting it would silently throw your format away. Use {{today}} (long date) or {{currentYear}} (bare year); an arbitrary format is not supported.
*|IF:…|* etc.Conditional blocks require a template engine, not substitution.
*|ARCHIVE|*No web archive of sent campaigns yet.
*|LIST:NAME|*List and account metadata are not exposed to templates.
*|MERGE1|*, …No custom contact fields — the vocabulary above is closed.
If you paste a template using one of these, fix it in the editor: replace the tag with static text, or drop it.

Behaviour rules

A known tag with no value renders empty. If a contact has no first name, Salut {{firstName}}, renders as Salut ,. Write around it, or keep the tag out of a sentence that breaks without it. An unknown tag is left visible and reported. {{fistName}} (typo) stays in the output as {{fistName}} and is listed as an unknown variable in the preview panel — so you catch it before sending, not after. The preview uses sample data. The preview panel renders your template with example values and a placeholder unsubscribe URL, so what you see is what a real send actually produces.

Example

html
<td>Salut {{firstName}}, voici les nouvelles du mois.</td>
<!-- … -->
<a href="{{unsubscribeUrl}}">Se désinscrire</a>
Rendered for a contact named Camille:
html
<td>Salut Camille, voici les nouvelles du mois.</td>
<!-- … -->
<a href="https://agentsmail.io/unsubscribe/a1b2c3">Se désinscrire</a>