Skip to main content

Dynamic Content Tags

Dynamic Content Tags allow you to personalize email campaigns by displaying specific content based on predefined criteria. You can create content units that are triggered when contact details, such as location, profession, or age, match your set conditions. Multiple content units can be assigned to a single tag, allowing for highly targeted and relevant messaging within your emails.

Quick Reference

Variable TypeSyntaxExamplePurpose
Dynamic Content Tag[[tag-name]][[welcome-offer]]Conditional content blocks with rules
Inline Condition[if:field]...[endif][if:name]Hi %%name%%[endif]Quick inline conditionals
Recipient Field%%field%%%%first_name%%Contact data personalization
Spintax{{tag}}{{greeting}}Rotating text variations
RSS Variable___tag______title___RSS feed content (in Dynamic Tags)

Overview

Dynamic Content Tags are powerful placeholders that display different content to different recipients based on rules you define. They are the foundation for:

  • Personalized content - Show different messages based on contact attributes
  • RSS feed integration - Embed blog posts, news, or any RSS/JSON feed content
  • Conditional blocks - Display content only when specific criteria are met
  • Multi-unit content - Combine multiple content variations in a single tag

Tag Format

Dynamic Content Tags use double square brackets:

[[tag-name]]

Example: [[welcome-message]], [[rss-feed]], [[location-offer]]

How Dynamic Content Tags Work

DYNAMIC TAG          CONTENT UNITS           OUTPUT
[[my-tag]] --> Unit 1 (Rule: US) --> "Hello America!"
Unit 2 (Rule: UK) --> "Hello Britain!"
Unit 3 (Default) --> "Hello World!"

When an email is sent:

  1. The system evaluates each content unit's rules against the recipient's data
  2. If a unit's rules match, its content is returned
  3. Multiple units can be combined or only the first match is used (configurable)

Viewing Dynamic Content Tags

Navigate to Campaigns → Dynamic Content Tags to view all tags.

Page Features

  • Add New button to create a dynamic content tag
  • Pre-Defined Templates button for template tags
  • Bulk Actions dropdown for operations on selected items
  • Our records / User records toggle
  • Filter by admin dropdown
  • Show entries dropdown
  • Search box

Tag Information

ColumnDescription
TagTag name in [[tag-name]] format
DescriptionOptional description of the tag's purpose
Created OnDate and time created
ActionsAction menu (three dots)

Creating a Dynamic Content Tag

Navigate to Campaigns → Dynamic Content Tags and click Add New.

Tag Settings

Tag Name

Enter a name for the tag. Only lowercase alphanumeric characters and hyphens (-) are supported.

Examples:

  • welcome-message
  • rss-blog-feed
  • location-based-offer
  • vip-content

Content Return Mode

Choose how content is returned when multiple units qualify:

OptionDescription
Return the content when the first unit qualifiesOnly the first matching unit's content is displayed
Return combined content of all qualified unitsAll matching units' content is combined and displayed

Content Units

Content units are the building blocks of a dynamic tag. Each unit contains:

  • Rules that determine when the content applies
  • The actual content (HTML or text)
  • Optional RSS feed integration

Click [+] Add Content Unit to create a new unit.

Description

Optional description to help identify the tag's purpose.

Save the Tag

Click Save to create the tag, or Cancel to discard.


Content Units

Content units define what content to show and when to show it.

Creating a Content Unit

  1. Click [+] Add Content Unit on the tag edit page
  2. Configure the unit settings in the modal
  3. Click Update Content Unit to save

Unit Settings

Unit Name

Enter a descriptive name for this content unit. Only lowercase alphanumeric characters and hyphens are supported.

Examples:

  • us-customers
  • blog-feed
  • confirmed-subscribers

Unit Rules

Define conditions that must be met for this unit's content to display.

Building Rules

Each rule consists of three parts:

ComponentDescription
FieldThe attribute to check (contact, date, broadcast, or schedule)
OperatorThe comparison method
ValueThe value to match against

Available Rule Fields

Recipient Details:

FieldValueDescription
Profile Fieldcustom_fieldsAny custom profile field value
Email AddressemailContact's email address
Is Member ofmember_ofList membership check
Confirmation StatusconfirmationConfirmed or Unconfirmed
Creation Datecreated_atWhen contact was created
List Namelist_nameName of contact's list

Time and Date:

FieldValueDescription
Time Right NownowCurrent time (HH:MM format)
Date TodaytodayCurrent date
Date Of MonthdayDay number (1-31)
Day Of Weekday_of_weekDay name (Monday, Tuesday, etc.)
This Monththis_monthCurrent month name

Broadcast Details:

FieldValueDescription
Broadcast Namebroadcast_nameName of the broadcast being sent
Broadcast Creation Datebroadcast_creationWhen broadcast was created
Broadcast Groupbroadcast_groupBroadcast group name
Broadcast Subjectbroadcast_subjectEmail subject line
Attachmentsbroadcast_attachmentWhether broadcast has attachments

Schedule Details:

FieldValueDescription
Schedule Labelsch_labelCampaign/schedule name
Campaign Typecamp_typeRegular, Split Test, or Evergreen
Audience Typeaud_typeLists or Segments

Available Operators

Basic Operators:

OperatorDescription
IsExact match
Isn'tDoes not match
ContainsValue contains the text
Doesn't containValue does not contain the text

Advanced Operators (for dates and numbers):

OperatorDescription
EqualExactly equals
Not equalDoes not equal
Greater thanValue is greater
Lesser thanValue is less
Greater and equalValue is greater or equal
Lesser and equalValue is less or equal
First charFirst character matches
BetweenValue falls within range
Older thanDate is older than specified
Occurred afterDate occurred after specified
Occurred beforeDate occurred before specified
For the pastWithin the past N days/weeks/months
AfterTime is after specified
BeforeTime is before specified
ExactlyExact date/time match

Multiple Rules

Click the + button to add additional rules. Multiple rules are connected with "and" logic - all rules must match for the unit to qualify.

Example:

Confirmation Status | Is        | Confirmed
and
Profile Field | Is | Premium
and
Day Of Week | Is | Monday

If the Rule Qualifies

Check this box to display the content when the rules match. This is typically enabled for conditional content.


Advanced Rule Examples

Time-Based Content

Show different content based on time of day:

MORNING UNIT (6 AM - 12 PM)
+-----------------+ +-------+ +-------+
| Time Right Now | -> | After | -> | 06:00 |
+-----------------+ +-------+ +-------+
AND
+-----------------+ +--------+ +-------+
| Time Right Now | -> | Before | -> | 12:00 |
+-----------------+ +--------+ +-------+

AFTERNOON UNIT (12 PM - 6 PM)
+-----------------+ +-------+ +-------+
| Time Right Now | -> | After | -> | 12:00 |
+-----------------+ +-------+ +-------+
AND
+-----------------+ +--------+ +-------+
| Time Right Now | -> | Before | -> | 18:00 |
+-----------------+ +--------+ +-------+

Day-Specific Promotions

Show weekend deals only on Saturday and Sunday:

WEEKEND DEALS
+-------------+ +----+ +----------+
| Day Of Week | -> | Is | -> | Saturday |
+-------------+ +----+ +----------+
OR
+-------------+ +----+ +--------+
| Day Of Week | -> | Is | -> | Sunday |
+-------------+ +----+ +--------+

VIP Customer Content

Show premium content to confirmed VIP members:

VIP CONTENT
+---------------+ +----+ +-----+
| Profile Field | -> | Is | -> | VIP |
+---------------+ +----+ +-----+
AND
+---------------------+ +----+ +-----------+
| Confirmation Status | -> | Is | -> | Confirmed |
+---------------------+ +----+ +-----------+

Location-Based Content

Show region-specific offers:

CALIFORNIA CUSTOMERS
+-------------------------+ +----+ +---------------+
| Profile Field (country) | -> | Is | -> | United States |
+-------------------------+ +----+ +---------------+
AND
+-----------------------+ +----+ +------------+
| Profile Field (state) | -> | Is | -> | California |
+-----------------------+ +----+ +------------+

New Subscriber Welcome

Show special content to recently joined subscribers:

NEW SUBSCRIBERS
+---------------+ +--------------+ +--------+
| Creation Date | -> | For the past | -> | 7 days |
+---------------+ +--------------+ +--------+
AND
+---------------------+ +----+ +-----------+
| Confirmation Status | -> | Is | -> | Confirmed |
+---------------------+ +----+ +-----------+

List Membership

Show content based on which list the contact belongs to:

NEWSLETTER SUBSCRIBERS
+--------------+ +----+ +------------------------+
| Is Member of | -> | Is | -> | Newsletter Subscribers |
+--------------+ +----+ +------------------------+

RSS Feed Integration

Dynamic Content Tags are the only way to embed RSS feeds into your emails. RSS content is configured within content units.

Enabling RSS

  1. Toggle Include RSS Feed to enable
  2. Enter the Feed URL
  3. Click Fetch Tags to retrieve available RSS tags

Feed URL

Provide the URL to crawl the RSS feed from.

Supported Feed Formats

FormatDescription
RSS 2.0 (XML)Standard RSS with <channel><item> structure
Atom (XML)Atom feeds with <entry> structure (YouTube, etc.)
JSON FeedJSON-based feeds with array structure
Media RSSFeeds with media:content, media:thumbnail, media:group

Examples:

  • https://example.com/feed - Standard RSS
  • https://example.com/rss.xml - RSS XML
  • https://example.com/atom.xml - Atom feed
  • https://example.com/feed.json - JSON feed
  • https://www.youtube.com/feeds/videos.xml?channel_id=xxx - YouTube channel

RSS Tags

After fetching, a table displays available tags from your feed:

ColumnDescription
TagThe RSS element name (e.g., title, link)
VariableThe placeholder to use in content (e.g., ___title___)
Sample ContentPreview of the actual feed data
ViewEye icon to preview full content

Common RSS Tags

Basic Feed Elements:

TagVariableDescription
title___title___Article/post title
link___link___URL to the full article
description___description___Article summary/excerpt
pubDate___pubDate___Publication date (raw format)
formatteddate___formatteddate___Human-readable date (e.g., "2 days ago")
category___category___Content category
guid___guid___Unique identifier URL

Author Information:

TagVariableDescription
dc:creator___dc:creator___Author name
author___author___Author email or name

Content:

TagVariableDescription
content:encoded___content:encoded___Full article HTML content
description___description___Short summary/excerpt

Image Variations:

TagVariableDescription
imageUrl___imageUrl___Original/featured image URL
image-url___image-url___Alternative image URL
image-url-thumb___image-url-thumb___Thumbnail size image
image-url-medium___image-url-medium___Medium size image
image-url-large___image-url-large___Large size image

Media RSS Elements (if available):

TagVariableDescription
media:content___media:content___Media file URL
media:thumbnail___media:thumbnail___Media thumbnail
media:description___media:description___Media description
Available Tags

The tags shown depend on your specific RSS feed. Click Fetch Tags to see exactly which elements are available in your feed, along with sample content from each.

RSS Variable Format

RSS variables use triple underscores on each side:

___tagname___

Examples:

  • ___title___ - Article title
  • ___link___ - Article URL
  • ___pubDate___ - Publication date

Feed Items Iteration

Enable Feed Items Iteration to display multiple items from the feed.

When enabled, specify the starting item number (0 = first item).

Use the #N suffix to reference specific items:

VariableDescription
___title#1___Title of first item
___title#2___Title of second item
___title#3___Title of third item
___link#1___Link of first item

Content Parameters

RSS variables support parameters for advanced formatting. Parameters are enclosed in curly braces and separated by semicolons:

___tagname{param1=value;param2=value;}___

Available Parameters

ParameterValuesDescription
charAny numberLimit output to specified number of characters
imagesnoneRemove all <img> tags from the content
stylenoneStrip all HTML tags except <ul>, <ol>, <li>, <br>

Parameter Examples

Character Limit Only:

___content:encoded#1{char=300;}___

Limits the content to 300 characters.

Remove Images:

___content:encoded#1{images=none;}___

Removes all images from the content.

Strip Styling:

___content:encoded#1{style=none;}___

Removes all HTML formatting except basic list and line break tags.

Combined Parameters:

___content:encoded#1{char=1500;images=none;style=none;}___

Applies all three: limits to 1500 characters, removes images, and strips styling.

With Feed Item Iteration

Parameters work with numbered items:

<h2>___title#1___</h2>
<p>___content:encoded#1{char=200;images=none;}___</p>
<a href="___link#1___">Read More</a>

<h2>___title#2___</h2>
<p>___content:encoded#2{char=200;images=none;}___</p>
<a href="___link#2___">Read More</a>

Update Feed Automatically

Enable to automatically refresh the RSS feed on a schedule.

Frequency Options

FrequencyDescription
YearlyUpdate once per year
MonthlyUpdate once per month
WeeklyUpdate once per week
DailyUpdate once per day
HourlyUpdate every hour

Time of Day

Set the time when the feed should be updated (e.g., 18:00).


Content Editor

Each content unit includes a content editor for creating the display content.

Content Type

Select the content format:

TypeDescription
HTMLRich HTML content with formatting
TextPlain text content

HTML Editor

The HTML editor includes a full toolbar with:

  • Text formatting (bold, italic, strikethrough)
  • Lists and indentation
  • Links and anchors
  • Images and media
  • Tables
  • Special characters and emojis
  • Source code view

Variable Buttons

Insert dynamic content using the variable buttons below the editor:

ButtonDescription
General VariablesSender name, email, dates, web view URL
Recipient FieldsContact data fields (use %%field%% format)
SpintaxInsert rotating content variations
RSS TagsInsert RSS feed variables (use ___tag___ format)
Profile VariablesProfile-related variables

Using Dynamic Content Tags

Once created, use your dynamic content tag anywhere by inserting it with double square brackets.

In Broadcasts

Insert the tag in your broadcast HTML body:

<div class="content">
[[my-rss-feed]]
</div>

In Drip Campaigns

Use tags in drip email content to personalize each message.

In Evergreen Campaigns

Dynamic content tags with RSS integration are ideal for evergreen campaigns that need fresh content.

Example: RSS Newsletter

  1. Create the Dynamic Content Tag:

    • Tag name: blog-updates
    • Add a content unit with RSS enabled
    • Configure the feed URL
    • Build the HTML template using RSS variables
  2. Content Unit HTML:

<h2>___title#1___</h2>
<p>___formatteddate#1___</p>
<p>___content:encoded#1{char=300;images=none;}___</p>
<a href="___link#1___">Read More</a>

<h2>___title#2___</h2>
<p>___formatteddate#2___</p>
<p>___content:encoded#2{char=300;images=none;}___</p>
<a href="___link#2___">Read More</a>
  1. Use in Broadcast:
    • Create a broadcast
    • Insert [[blog-updates]] in the HTML body
    • Schedule via Evergreen Campaigns

Inline Dynamic Content Tags

Inline conditions let you show or hide content directly in your email based on contact data—without creating a separate Dynamic Content Tag. They're perfect for quick personalizations and fallbacks.

Syntax Overview

All inline conditions use square brackets with a colon:

[if:condition]content shown when true[endif]

Checking if a Field Has Value

The simplest condition checks whether a field contains any data:

[if:company]You work at %%company%%[endif]

If the contact has a company name, they see the message. If not, nothing appears.

Adding Fallback Content with ELSE

Use [else] to show alternative content when the condition isn't met:

[if:first_name]Hi %%first_name%%![else]Hi there![endif]

This ensures every contact sees a greeting—personalized if possible, generic otherwise.

Comparing Field Values

Check if a field equals a specific value using =:

[if:country=Canada]Shipping is free across Canada![endif]

Add a fallback for non-matching values:

[if:plan=enterprise]Contact your account manager.[else]Visit our pricing page.[endif]

Checking for Empty Fields

Use = with no value to check if a field is empty:

[if:phone=]Please update your phone number.[endif]

Chaining Multiple Conditions

Use [elseif:] to check multiple conditions in sequence:

[if:membership=gold]Welcome, Gold Member![elseif:membership=silver]Welcome, Silver Member![else]Join our membership program![endif]

You can also mix different types of checks:

[if:first_name=]We don't have your name yet.[elseif:first_name]Hello %%first_name%%![else]Hello![endif]

How it works:

  1. First, checks if name is empty
  2. Then, checks if name has any value
  3. Finally, shows default if nothing matches

Comparison Operators

OperatorMeaningExample
=Equals[if:status=active]
==Equals (alternative)[if:status==active]
!=Does not equal[if:country!=USA]
>Greater than[if:purchases>10]
<Less than[if:age<18]

List Membership Conditions

Check if a contact belongs to specific lists using [ifmemberof:]:

[ifmemberof:"Newsletter Subscribers"]Thank you for subscribing![endif]

Check multiple lists (contact must be in at least one):

[ifmemberof:"VIP Customers","Premium Members"]Exclusive offer inside![endif]

Real-World Examples

Smart Greeting:

<p>[if:first_name]Dear %%first_name%%,[else]Dear Valued Customer,[endif]</p>

Loyalty Tier Messaging:

[if:loyalty_points>1000]
<p>You're a Gold member! Enjoy 20% off.</p>
[elseif:loyalty_points>500]
<p>You're a Silver member! Enjoy 10% off.</p>
[else]
<p>Join our loyalty program and start earning points!</p>
[endif]

Exclusive Content for List Members:

[ifmemberof:"Beta Testers","Early Access"]
<div class="exclusive">
<h3>Sneak Peek</h3>
<p>As an early supporter, here's a preview of our upcoming features...</p>
</div>
[endif]

Complete Contact Prompt:

[if:phone=]
<p>Add your phone number to receive SMS updates.</p>
[endif]
[if:company=]
<p>Tell us where you work to get industry-specific content.</p>
[endif]

When to Use Each Approach

Inline Conditions [if:]Dynamic Content Tags [[tag]]
Quick field checksComplex business rules
Simple fallback textMultiple content variations
One-off personalizationsReusable content blocks
Field comparisonsRSS feed integration
List membership checksTime/date-based rules

Variable Reference

Dynamic Content Tag

[[tag-name]]

Use in broadcasts, drips, and evergreen campaigns to insert the tag's content.

Inline Conditional Tags

[if:field_name]content[endif]
[if:field=value]content[else]fallback[endif]
[ifmemberof:"List1","List2"]content[endif]

Use for simple conditional content and fallbacks directly in email content.

Recipient Field Variables

%%field_name%%

Use for contact personalization (first name, email, custom fields).

Spintax Variables

{{spintax_tag}}

Use for rotating text variations.

RSS Variables

___tagname___

Use within content units to insert RSS feed data.

RSS Variables with Iteration

___tagname#N___

Use to reference specific feed items (N = item number starting from 1).

RSS Variables with Parameters

___tagname#N{param=value;}___

Use to format RSS content with specific parameters.


Managing Dynamic Content Tags

Editing a Tag

  1. Click the actions menu (three dots) next to a tag
  2. Select Edit
  3. Modify tag settings or content units
  4. Click Save

Managing Content Units

Within the tag edit page:

  • Drag the handle icon to reorder units
  • Click the edit icon to modify a unit
  • Click the delete icon to remove a unit

Deleting a Tag

  1. Click the actions menu next to a tag
  2. Select Delete
  3. Confirm deletion
Tag in Use

Before deleting, ensure the tag is not used in any active broadcasts, drips, or evergreen campaigns. Deleting a tag will cause [[tag-name]] to display as plain text in emails.


Best Practices

Tag Naming

  • Use descriptive, lowercase names
  • Include the purpose in the name (e.g., rss-blog, offer-us, welcome-vip)
  • Keep names short but meaningful

Content Units

  • Order units from most specific to least specific when using "first unit qualifies" mode
  • Include a default unit without rules as a fallback
  • Test each unit's rules before going live

RSS Integration

  • Test feed URLs before creating content units
  • Use character limits for long content
  • Set appropriate update frequencies
  • Preview feed content using the View button

Performance

  • Avoid excessive content units in a single tag
  • Use specific rules to minimize processing
  • Cache RSS feeds with appropriate update intervals

Troubleshooting

Tag Not Displaying Content

Possible causes:

  • No content units defined
  • No rules match the recipient
  • Rules are too restrictive

Solutions:

  • Add a default content unit without rules
  • Review and test rule conditions
  • Check recipient data matches rule values

RSS Content Not Updating

Possible causes:

  • Update Feed Automatically is disabled
  • Feed URL is invalid or unreachable
  • Feed format not supported

Solutions:

  • Enable automatic updates with appropriate frequency
  • Verify feed URL is accessible
  • Ensure feed is valid XML or JSON

RSS Variables Showing as Text

Possible causes:

  • Variable syntax is incorrect
  • Tag name doesn't match feed element
  • RSS feed not properly configured

Solutions:

  • Use correct format: ___tagname___
  • Verify tag names from the RSS Tags table
  • Re-fetch tags and check sample content

Rules Not Matching

Possible causes:

  • Operator doesn't match data type
  • Field name is incorrect
  • Contact data is missing

Solutions:

  • Verify field values in contact records
  • Test with known contact data
  • Check for case sensitivity in values

Next Steps