Docs
Guides Templates & blocks Use snippets

Use snippets

Snippets keep the values many emails share in one place: the next webinar’s title, date and link, this month’s featured guide, your support address. Templates, blocks and subject lines read them with a tag like {{ snippets.webinar.title }}, and they’re filled in when each email sends.

So when a snippet changes, every email that hasn’t gone out yet picks it up. That includes draft and scheduled broadcasts, and emails already set up in a sequence. You don’t re-save them, and you don’t adopt a new version.

Snippets live in sets. A set has fields, for example Title, Date and Registration link, and each snippet in it fills them in. A set’s snippets take turns: line up the next three webinars ahead of time, and each one takes over from the last on its own.

In this section:

Before you begin#

  • Some comfort with templates or blocks. Snippets show up in an email only where a template, block or subject line uses their tags.
  • For the API, keys need the templates:read scope to read snippets and templates:write to change them. See Create & use API keys and the Snippets API.

Create a set#

In the sidebar, open Content→Snippets, then click New set.

  • Name — what you’ll see in the list, such as Webinar.
  • Liquid name — the name emails use: webinar gives {{ snippets.webinar.… }}. It’s made from the name as you type. It can’t change once the set has snippets, because emails read it by this name. The name resolve is reserved.
  • Fields — one row per value. Give each a Label, a Type and a Liquid name. Click Add field for more.

The field types are Text, Long text, Rich text (HTML), URL, Image URL, Number, Yes / no, Date, and Date & time.

Then choose How snippets take turns:

ChoiceWhich snippet showsUse it for
Single snippetIts one snippet. You change it by hand.The company address, a signature, a standing offer
Next upcomingThe snippet whose date comes next. Each one rolls off when its date passes, and the next takes over. Pick the date under Ordered by.Webinars and events
On a scheduleEach snippet starts on the date you give it and shows until the next one starts.A featured guide, a seasonal promo, a monthly offer

Click Create set.

Add snippets#

Open the set and click Add snippet. The form has one field per field you set up.

  • For Next upcoming, the date you pick decides when the snippet shows. The line under the form says when, for example Shows from Dec 3, 1:00 PM EST until Jan 14, 1:00 PM EST.
  • For On a schedule, pick Starts showing.
  • Dates and times are in your workspace’s timezone, set in Settings→Account.

Click Add to queue (on a Single snippet set, Save). To change or remove a snippet, click it in the queue, then Save or Delete snippet.

Read the set page#

  • Showing now — the snippet a send would use right now, and exactly when it hands over: At Thu, Oct 22, 1:00 PM EDT this rolls off and Value metrics that scale takes over.
  • Queue — a strip from today forward and the list of snippets. Now marks the one showing, then Next and Later. On a Next upcoming set, a hatched stretch at the end marks when nothing is lined up. Click Show past snippets to see the ones that have finished.
  • A warning appears when the queue will run dry within two weeks.
  • Fields lists each field’s type and Liquid name. Use it in an email has the tags to copy.

Use it in an email#

Write snippets, the set’s Liquid name, then the field’s:

{{ snippets.webinar.title }}
<a href="{{ snippets.webinar.url }}">Save my seat</a>

It’s snippets, plural, every time. The template check warns about {{ snippet.… }}, which would show nothing.

The tags work in the subject line too. The Merge tags window lists every snippet field under Snippets. Open it with Open merge tags in the template and block editors, or { } Merge in the broadcast and email editors, and search for the set’s name to find its fields.

Dates and times print in your workspace’s timezone with the date filter: {{ snippets.webinar.date | date: "%a %b %-d, %-I:%M %p" }} reads Thu Oct 22, 1:00 PM.

Hide the section when nothing is showing. When a queue runs out, the set’s fields are empty. Wrap the section in a check so it disappears instead of showing blanks. In MJML, put the tags in <mj-raw> around the section:

<mj-raw>{% if snippets.webinar %}</mj-raw>
<mj-section>
  …
</mj-section>
<mj-raw>{% endif %}</mj-raw>
Warning

Don’t write {% if %} straight around an <mj-section>. MJML drops it, so the section always shows. The template check reports this as RECIPIENT_CONDITION_AROUND_SECTION.

Links in snippets are click-tracked like any other link.

When snippets lock#

An email reads snippets once, when its send starts, so everyone it goes to gets the same values:

  • A broadcast locks them when it starts sending. Every A/B version and a split test’s winner get those values, even if a snippet rolls over during the send.
  • A broadcast spread over several days locks them again each day, so later days get the snippet showing then.
  • A sequence email locks them when that email sends.

View in browser shows the values the reader was sent, not today’s.

Keep it current automatically#

A webinar queue that refills itself needs something to add each new webinar. Two ways:

  • An AI app connected over MCP, such as Claude, can read and update snippets. Ask it in plain words (“Add next month’s webinar to the Webinar set”), or give it a recurring task. See Connect Claude and other AI apps.
  • The API, from a script or an automation tool: PUT /api/snippets/{set}/entries. See the Snippets API.

Either way, match snippets on a field that names the thing, such as the registration link. Then a webinar that’s rescheduled moves to its new date instead of being added twice.

Change or delete a set#

Click Edit set. Once a set has snippets you can rename it, relabel fields and add new ones. Its Liquid name, how its snippets take turns, and existing fields’ Liquid names and types stay as they are.

To delete a set, open the menu next to Edit set and choose Delete set. If it has snippets, type its Liquid name to confirm. Emails that use it then show its fields empty.

Common issues#

  • The section shows with blank values. The queue ran out and the section isn’t wrapped in {% if snippets.<name> %}. Add the check, or add a snippet.
  • The section always shows, even when nothing is lined up. The {% if %} is straight around an <mj-section>. Put it in <mj-raw> tags, as above.
  • Nothing shows where a snippet should. Check the tag says snippets, plural. {{ snippet.webinar.title }} shows nothing; the template check warns about it.
  • A time is off by some hours. The date filter prints a Date & time in your workspace’s timezone. Check the timezone in Settings→Account.
  • A test send shows {{ first_name }} but fills in the snippets. A test send has no contact behind it, so it leaves contact merge tags as written. Snippets belong to the account, so it fills them in: with the values showing now, or the values a broadcast locked once it started sending. An {% if %} check stays as written, and the unsubscribe and view-in-browser links point to example.com placeholders. A deliverability test, from a broadcast or the Emails library, runs every tag, but for a stand-in contact with no name or details, so contact tags show their fallback.
  • A custom field can’t be called snippets. That name belongs to snippets.

Good to know#

  • An account can have 50 sets. A set can have 30 fields and 200 snippets.
  • Changes made through the API or an AI assistant show in the queue as Added or changed through the API.
  • Snippets aren’t in contact exports or segments: they’re about your account, not your contacts.
  • Snippets aren’t your website’s tracking code or a form’s embed code. Those are under Settings and in each form.