Skip to main content

Content Blocks

Content Blocks are reusable snippets - a legal footer, a promo banner, an unsubscribe line, a localized greeting - that you write once and drop into any message, on any channel, with a single Liquid token: {{ blocks.your_slug }}.

Edit the block in one place and every message that references it updates. No more copy-pasting the same footer into every email, SMS, push, and WhatsApp template.

Creating a block

Open Brand Studio → Content Blocks and select New block:

FieldWhat it's for
NameA human label (e.g. "Legal footer").
SlugThe token key. Lowercase letters, digits, and underscores only - this is what you reference as {{ blocks.slug }}. Auto-filled from the name; can't be changed after creation.
TypePlain text (sms / push / whatsapp) or HTML (email). See Block types.
ContentThe snippet itself. Can contain Liquid.
DescriptionOptional note on where it's used.
TagsOptional. Tag the block from the editor using the shared tag picker - pick an existing tag or create a new one, so blocks join the same workspace-wide tag pool and filter alongside campaigns and templates.

Using a block

Reference it anywhere you can write a message - campaign composer, journey message nodes, email/SMS/push/WhatsApp/in-app - with:

{{ blocks.legal_footer }}

At send time the token is replaced with the block's rendered content. On the Content Blocks page, the Token column copies the exact {{ blocks.slug }} to your clipboard, and in the journey personalization picker, Content blocks lets you select a block and insert its token for you.

Blocks resolve everywhere the rest of your personalization does - every channel, in both campaigns and journeys - because they go through the same shared render context as {{ user.* }}, filters, and entity feeds.

Liquid inside a block

A block's content is itself Liquid, so it can use everything a normal message can:

Thanks for shopping with us, {{ user.firstName | default: "there" }}!
© {{ "now" | date: "%Y" }} Acme Inc. - {{ user.custom.city }}

That includes filters, entity feeds, and even other blocks - a block can reference {{ blocks.another_block }}. (Self-referential loops are detected and stopped, so a block can't recurse into itself.)

Block types

  • Plain text - for SMS, push, and WhatsApp. Rendered as-is.
  • HTML - for email. Use this for anything with markup (a styled footer, a banner).

Pick the type that matches where you'll use the block. Dropping an HTML block into an SMS will send the raw markup, so keep a text variant for text channels.

  1. Create a block - Name "Legal footer", slug legal_footer, type HTML:
    <p style="font-size:12px;color:#888">
    © {{ "now" | date: "%Y" }} Acme Inc. All rights reserved.
    <a href="{{ unsubscribe_url }}">Unsubscribe</a>
    </p>
  2. In every email, drop it at the bottom:
    {{ blocks.legal_footer }}
  3. When the copyright year or address changes, edit the block once - every email updates.

Notes

  • Deleting a block that messages still reference renders it as empty in those messages (it won't error). Search for the token before deleting.
  • Blocks are workspace-scoped - they're available to every campaign and journey in the workspace.
  • A block's slug is immutable after creation (so existing references never break); create a new block if you need a different key.