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 Type | Syntax | Example | Purpose |
|---|---|---|---|
| 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:
- The system evaluates each content unit's rules against the recipient's data
- If a unit's rules match, its content is returned
- 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
| Column | Description |
|---|---|
| Tag | Tag name in [[tag-name]] format |
| Description | Optional description of the tag's purpose |
| Created On | Date and time created |
| Actions | Action 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-messagerss-blog-feedlocation-based-offervip-content
Content Return Mode
Choose how content is returned when multiple units qualify:
| Option | Description |
|---|---|
| Return the content when the first unit qualifies | Only the first matching unit's content is displayed |
| Return combined content of all qualified units | All 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
- Click [+] Add Content Unit on the tag edit page
- Configure the unit settings in the modal
- 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-customersblog-feedconfirmed-subscribers
Unit Rules
Define conditions that must be met for this unit's content to display.
Building Rules
Each rule consists of three parts:
| Component | Description |
|---|---|
| Field | The attribute to check (contact, date, broadcast, or schedule) |
| Operator | The comparison method |
| Value | The value to match against |
Available Rule Fields
Recipient Details:
| Field | Value | Description |
|---|---|---|
| Profile Field | custom_fields | Any custom profile field value |
| Email Address | email | Contact's email address |
| Is Member of | member_of | List membership check |
| Confirmation Status | confirmation | Confirmed or Unconfirmed |
| Creation Date | created_at | When contact was created |
| List Name | list_name | Name of contact's list |
Time and Date:
| Field | Value | Description |
|---|---|---|
| Time Right Now | now | Current time (HH:MM format) |
| Date Today | today | Current date |
| Date Of Month | day | Day number (1-31) |
| Day Of Week | day_of_week | Day name (Monday, Tuesday, etc.) |
| This Month | this_month | Current month name |
Broadcast Details:
| Field | Value | Description |
|---|---|---|
| Broadcast Name | broadcast_name | Name of the broadcast being sent |
| Broadcast Creation Date | broadcast_creation | When broadcast was created |
| Broadcast Group | broadcast_group | Broadcast group name |
| Broadcast Subject | broadcast_subject | Email subject line |
| Attachments | broadcast_attachment | Whether broadcast has attachments |
Schedule Details:
| Field | Value | Description |
|---|---|---|
| Schedule Label | sch_label | Campaign/schedule name |
| Campaign Type | camp_type | Regular, Split Test, or Evergreen |
| Audience Type | aud_type | Lists or Segments |
Available Operators
Basic Operators:
| Operator | Description |
|---|---|
| Is | Exact match |
| Isn't | Does not match |
| Contains | Value contains the text |
| Doesn't contain | Value does not contain the text |
Advanced Operators (for dates and numbers):
| Operator | Description |
|---|---|
| Equal | Exactly equals |
| Not equal | Does not equal |
| Greater than | Value is greater |
| Lesser than | Value is less |
| Greater and equal | Value is greater or equal |
| Lesser and equal | Value is less or equal |
| First char | First character matches |
| Between | Value falls within range |
| Older than | Date is older than specified |
| Occurred after | Date occurred after specified |
| Occurred before | Date occurred before specified |
| For the past | Within the past N days/weeks/months |
| After | Time is after specified |
| Before | Time is before specified |
| Exactly | Exact 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
- Toggle Include RSS Feed to enable
- Enter the Feed URL
- Click Fetch Tags to retrieve available RSS tags
Feed URL
Provide the URL to crawl the RSS feed from.
Supported Feed Formats
| Format | Description |
|---|---|
| RSS 2.0 (XML) | Standard RSS with <channel><item> structure |
| Atom (XML) | Atom feeds with <entry> structure (YouTube, etc.) |
| JSON Feed | JSON-based feeds with array structure |
| Media RSS | Feeds with media:content, media:thumbnail, media:group |
Examples:
https://example.com/feed- Standard RSShttps://example.com/rss.xml- RSS XMLhttps://example.com/atom.xml- Atom feedhttps://example.com/feed.json- JSON feedhttps://www.youtube.com/feeds/videos.xml?channel_id=xxx- YouTube channel
RSS Tags
After fetching, a table displays available tags from your feed:
| Column | Description |
|---|---|
| Tag | The RSS element name (e.g., title, link) |
| Variable | The placeholder to use in content (e.g., ___title___) |
| Sample Content | Preview of the actual feed data |
| View | Eye icon to preview full content |
Common RSS Tags
Basic Feed Elements:
| Tag | Variable | Description |
|---|---|---|
| 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:
| Tag | Variable | Description |
|---|---|---|
| dc:creator | ___dc:creator___ | Author name |
| author | ___author___ | Author email or name |
Content:
| Tag | Variable | Description |
|---|---|---|
| content:encoded | ___content:encoded___ | Full article HTML content |
| description | ___description___ | Short summary/excerpt |
Image Variations:
| Tag | Variable | Description |
|---|---|---|
| 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):
| Tag | Variable | Description |
|---|---|---|
| media:content | ___media:content___ | Media file URL |
| media:thumbnail | ___media:thumbnail___ | Media thumbnail |
| media:description | ___media:description___ | Media description |
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:
| Variable | Description |
|---|---|
___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
| Parameter | Values | Description |
|---|---|---|
char | Any number | Limit output to specified number of characters |
images | none | Remove all <img> tags from the content |
style | none | Strip 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
| Frequency | Description |
|---|---|
| Yearly | Update once per year |
| Monthly | Update once per month |
| Weekly | Update once per week |
| Daily | Update once per day |
| Hourly | Update 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:
| Type | Description |
|---|---|
| HTML | Rich HTML content with formatting |
| Text | Plain 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:
| Button | Description |
|---|---|
| General Variables | Sender name, email, dates, web view URL |
| Recipient Fields | Contact data fields (use %%field%% format) |
| Spintax | Insert rotating content variations |
| RSS Tags | Insert RSS feed variables (use ___tag___ format) |
| Profile Variables | Profile-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
-
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
- Tag name:
-
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>
- 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:
- First, checks if name is empty
- Then, checks if name has any value
- Finally, shows default if nothing matches
Comparison Operators
| Operator | Meaning | Example |
|---|---|---|
= | 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 checks | Complex business rules |
| Simple fallback text | Multiple content variations |
| One-off personalizations | Reusable content blocks |
| Field comparisons | RSS feed integration |
| List membership checks | Time/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
- Click the actions menu (three dots) next to a tag
- Select Edit
- Modify tag settings or content units
- 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
- Click the actions menu next to a tag
- Select Delete
- Confirm deletion
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
- Broadcasts - Use dynamic tags in email content
- Evergreen Campaigns - Schedule recurring RSS campaigns
- Spintax - Create rotating content variations