Our new dynamic content tags will help you to send highly targeted content to your subscribers, increase engagement and cut turnaround times by effectively rolling many versions of a campaign into one.Dynamic content preview in Campaign Monitor

Regardless of whether you’ve used dynamic content previously, or have never heard of it before, we’ve got you covered in this post. In addition to an introduction to the new dynamic content tags, we’ll show you practical examples, a swag of new documentation to help you get started, plus what you’ll see in your account when you import a campaign.

How it works

The concept is simple – with dynamic content, you can conditionally display text, images or other elements in email campaigns, based on custom field values. It’s similar to personalizing your campaign with custom fields, but with much greater flexibility. For example, let’s say you run an online store and would like to offer a coupon code to your VIP customers only, however you want to send a single email campaign to both VIPs and non-VIPs respectively. No problem. With dynamic content, you can add copy for all customers…

“Check out our new products.”

… then for your VIPs, use dynamic content to mention the coupon:

“Check out our new products – as a VIP, you can receive 25% off…”

Then say, you have both VIPs and vendors tagged in a custom field called “CustomerType”. You could even tailor the content for the latter, too:

“We’d love for you to check out our new products – as a friend of our store, you’ll get 30% off…”

Or for people that are neither tagged as VIPs or vendors:

“Check out our new products and make sure you become a VIP for future discounts…”

That’s only the tip of the iceberg – as far as personalizing both HTML and text-only content goes, the possibilities are endless. As an added benefit, dynamic content may also save you from having to create completely separate campaigns, when all you want to do is alter a call-to-action, or provide relevant information, for a specific group of subscribers.

Introducing the new dynamic content tags

If you’re comfortable with creating campaigns, importing them, and using custom fields, you’ll find using our new dynamic content tags to be a straightforward task. We’ve kept both the tags and logic simple, so you can focus on creative and effective ways to use dynamic content, not debugging code.

There are four scenarios that can be used and respective sets of tags to achieve them. They are:

IF provided
If a specified custom field contains any value, display some content.
IF equals
If a specified custom field equals a specific value, display some content.
If a specified custom field equals a specific value, display some content, otherwise display alternative content.
If a specified custom field equals a specific value, display some content, or else if a specified custom field has a specific value, display some other content. If there is no match in either scenario, display alternative content.

A complete guide to our dynamic content tag language

A practical example

Sample listThis may seem like a lot of new stuff, so let’s look how we’d implement our earlier example to help make sense of it all.

Let’s assume we’ve imported a subscriber list featuring a ‘CustomerType’ custom field, including custom field values (pictured). We’ve also got an HTML email file that we’ll prepare for import. The messages for each ‘CustomerType’ can be added using the following tags and HTML code:

<!-- Using IF/ELSEIF/ELSE to personalize a campaign -->

<p>Check out our new products
[if:CustomerType=VIP]- as a VIP, you can receive 25% off…
[elseif:CustomerType=Vendor]- as a friend, you'll get 30% off...
[else]and make sure you become a VIP for future discounts...

In short, it’s a bit like creating 3 versions of a campaign, but bundling them together into one.

What you’ll see in your account

Dynamic content toggleWe’ve focused on making it as simple as possible to test your campaigns. As you may have noticed in the earlier example, when you preview a campaign with dynamic content (either upon campaign import or via the Campaign Snapshot), you can toggle between versions. In the same vein, once you’ve added recipients with matching custom fields and values, it’s also possible to test your personalization by sending a campaign preview.

A guide to get you started

If you’d like to read up on more practical uses for dynamic content, we’ve got an excellent guide to help you master both the theory and the code.


You can use dynamic content tags in both regular newsletters and auto-responders. An important note is that dynamic content is currently only available when you import a campaign.

We’re very interested to hear how you’ll make the most of dynamic content in your campaigns, so be sure to leave any examples or feedback in the comments below.

  • http://www.bencomicgraphics.com Ben Carver

    Yay! This makes CM even more powerful. Thanks Ros! Any chance for a transactional system? πŸ˜€

  • http://smartcom.com Sam Malone

    Typo “Then say, you’re have both VIPs and vendors”
    You mean “you’ll have”

  • http://www.techniquedm.com Will

    YES, YES, YES!!!! A long time coming and very welcome update. Thanks!

  • http://www.inkdigitalagency.com Tony Pye

    Great job guys and girls. Some of the competition have had this sort of capability for a long time, so its awesome news that CM now does this.

    I’m sure it is, but will this capability be available via the API, so the content can be pushed through to campaigns from other systems?

  • http://www.happymails.fr JEBL

    This is a feature that really improves the customization and the interest of the target for the message. But nothing really innovative, some emailing service already offers, HAPPY mails is one of the most innovative company is currently developing a similar tool with additional contextual scripting functions.

  • James

    Brilliant first step guys – hope you’ve got it coming for the template editor soon too πŸ˜‰ Or do the tags work if we just put them in the content? Ideally we would be able to select whole blocks based on if statements

  • http://www.software4nonprofits.com Dan Cooperstock

    Yay, finally! I think I asked for this a couple of years ago or so. This will really help me.

  • http://www.brett@bcrockett.com bc

    This is fantastic- and just in time for holiday emails. Thanks for the update CM!

    @JEBL Bad form to advertise your company on a competitor’s blog.

  • http://www.b-v.co.uk Phil Le Cheminant

    Just in time… need this facility for a job in the next couple of days. Perfect!

  • http://www.dzyncreative.com JohnP

    Well done CM. That must have been a tough one to keep under wraps Ros…

  • http://www.campaignmonitor.com/ David Greiner

    Thanks for the great comments everyone.

    Sam Malone: Great catch, we’ve just fixed that up.

    Tony Pye: Yep, this will work out of the box for any regular campaign you import via the API. Just include the tags in your HTML and we’ll take care of the rest.

    James: Our editor doesn’t support these in templates just yet, but it’s something we plan on adding in a future release.

  • http://www.brownbox.net.au/ Andrew

    About time – sweet! Now we can recommend a great Australian company instead of having to go to MailChimp for this πŸ˜€

  • http://www.keymultimedia.co.uk Dave Lakins

    Fantastic news – can think of lots of ways to customise our emails. Am assuming it can also be used to show different images as well as text – just as long as they are within the tags ?

  • http://reasonablygood.com Rhys

    At last! Been desperate for this for a long time. Had to reluctantly use MailChimp for a new client recently as they do this.

    Great stuff, keep up the good work.

  • http://www.campaignmonitor.com/our-story/meet-the-team/#rosh Ros Hodgekiss

    Andrew, Dave and Rhys, we’re really glad to get this to you, you’ve all been patient with us :)

    Dave – yes, any HTML/css code can be added between the tags, or even more dynamic content tags if you wish! So images are more than fine. Keen to see what you come up with :)

  • http://andrewcornale.com.au Andrew


    Such a great update :)

  • http://reasonablygood.com Andrew

    Great work. Your hard work on new additions like these mean we keep building on our expertise, allowing good email designers to really add value when we get involved with campaigns. Keep on thinking of ways to make us invaluable.

  • http://www.daviesmeyer.com Christian Rebelsky

    This is absolutely amazing! Needed it a couple of months earlier, but never mind…it’s finally there.

    Thanks a lot and keep on the good work.

  • http://reasonablygood.com Davey

    Great add. Will this work in subject lines? It’d be really useful to develop this feature of not.

    One practical example I thought of was when subscribers arrive from different places, we could create sign up forms that add custom info. it’d help them recognise who’s contacting them.

    Widget exhibition: . . .
    John’s widget shop . . .
    The widget competition . . .

  • Casper

    This is just awesome, but I did like to take it a step future, like using the custom fields to get relevant data via RSS or other similar. Would be perfect to get relevant products or articles depending on readers purchase or preference without need to import the data in custom fields every time, by simply collecting the data remotely

  • http://www.hikepyrenees.co.uk Phil James

    Great stuff. Will be really useful. Looking forward to this functionality being available in the template editor (which as a non-techy I absolutely love!).

  • http://d3r.com Brendan Patterson

    This looks fantastic, are there any limitations to where this can be used? Inside for example?

  • http://d3r.com Brendan Patterson

    This looks fantastic, are there any limitations to where this can be used? Inside “layout” (element tags were removed) for example?

  • Kate

    is it possible to generate dynamic content based on which list the email is on as supposed to a custom field? I have 2 list hat I cannot merge into one, and I would like to send a single email to both lists and change one section depending on the list on which a given subscriber is. Is this possible?

  • Andreas Ringdal

    Great feature, looking forward to using this with our customers
    Some questions
    1) Can less than and greater than be used in the If conditions? Would be great for customizing newsletter based on the customers location.
    2) Will testing for segments be available?

  • http://rocketvalley.com Brian

    This is a great addition! Really opens up a lot of doors. I send out multi-lingual campaigns around Europe and I have been waiting for a feature like this for quite some time.This would allow me to put all language content in one mailing and select content based on the clients language setting. Another annoying thing before was the fact that I had to have a template for each language, each one contained unsubscribe info, contact details etc.. in the relevant language. Now I can just output each footer based on the customer’s language field.

    Bravo CM!!

  • http://rocketvalley.com Brian

    Actually… after testing this, It can’t do what I mentioned above.

    It will allow me to use one template for all languages from now on but it stops there.

    When I create a new campaign, I want the ability to “Add a box for German”, “Add a box for French” etc…

    I tried to do this in my template by creating a layout for each language. It works if I have one layout asking “[if:Language=English]” but when I put more than one IF asking about the same custom field at different positions it breaks. Example Below…

    **Box Layout Here**

    **Box Layout Here**

    The ability to “Add” dynamic content via the template editor is a must. Please let me know this will be available soon?

    or maybe there is a totally other way to do it I am not thinking of?

  • http://rocketvalley.com Brian

    oops… example here… http://i.imgur.com/HfgwtLG.jpg

  • http://j-web.ca Jenn

    Will this be available in the “dear” personalization field? I have tried the below with no luck:

    Dear [fullname,fallback=[if:CustomerType=DNA]Sir/Madame

  • http://j-web.ca Jenn

    Great edition! Thanks :)

  • http://j-web.ca Jenn

    Actually I got it working with dates. It needed:

    [if:CustomerType=DNA]Dear [fullname,fallback=Sir/Madame],
    [else]Dear [fullname,fallback=Advisor],

  • http://barclaey.com Bart

    +1 for Capser’s comment:

    “[…] I did like to take it a step future, like using the custom fields to get relevant data via RSS […]”

    +1 for Brian’s comment:

    “[…] when I put more than one IF asking about the same custom field at different positions it breaks […]”

  • http://www.campaignmonitor.com/our-story/meet-the-team/#rosh Ros Hodgekiss

    Davey – At present, you can’t use dynamic content with subject lines, but it’s a great suggestion for the future. Thank you so much – we’ll keep you posted if this is something we add :)

    Casper and Bart – For this kind of behavioral content, we’d likely look towards developing a deeper integration with your e-commerce software of choice. It’s the kind of solution that’s really difficult to do well, so not likely something we’ll deliver on in the short term, I’m sorry to say. In the interim, I’d recommend checking out Retention Science, as they have a great product recommendations tool that’s currently integrated with both Campaign Monitor and Magento.

    Phil, Brendan, Brian and Bart – we may roll out dynamic content to templates at a later date, so more than happy to keep you updated on this one. Thanks for letting us know this is something you’re after!

    Kate – It isn’t possible to use list/segment name in place of a custom field name with these tags, however if you create and populate a unique custom field in a specific list, you should be able to display content to subscribers for that list only. I hope that workaround helps!

    Andreas – At present, we don’t have plans to add “less than” or “more than” statements to content tags, however it’s certainly one for us to consider, thank you! Providing subscriber geo data is something we’d love to work on, too so we’ll be sure to keep you updated on this.
    In the interim, i’d recommend using textual custom field values where possible, like [if:City=Sydney]…[endif]

    Also, could you kindly tell us a little more about your testing by segments request? By all means [url=http://campaignmonitor.com/contact]get in touch with our team[/url] and we’ll happily discuss this with you.

    Jenn – Perfect, glad you got that working :)

    Thank you so much for the feedback, everyone – we’re certainly very keen to find out how we can improve dynamic content and the app in general, so please keep it coming.

  • Jason

    I am not sure I see the benefit of using this approach, as opposed to sending separate emails to separate or segmented lists.

  • http://www.campaignmonitor.com/our-story/meet-the-team/#rosh Ros Hodgekiss

    Ben and JohnP – Sorry, missed you earlier. Yep, I could barely hold back my excitement for dynamic content and glad you’re finding it to be pretty useful, too. πŸ˜€ As for transactional, there are some pretty good services out there, like our friends at Postmark πŸ˜‰ We’ll keep you posted if it’s something we look into, though!

    Jason – I recommend giving our new Guide to Dynamic Content a read, there’s plenty on the benefits and some practical examples in there. But for starters, this update means that instead of sending separate content versions/HTML emails to separate lists/segments, you can save yourself time and money by bundling all those versions into the one send :)

  • Jay

    This is great! Thanks so much for adding this feature, I’ve been waiting for it!

    Looking forward to dynamic content being added to the template editor – it will be even more useful.

  • Chris Bowler

    Thanks Jay, we appreciate that! And see one of Dave’s comments above β€” this will definitely be added to our template editor at some point down the road!

  • http://rocketvalley.com Brian Laughlan

    Hi Chris,

    Do we have any idea how long down the road is?

  • Jason De Santis

    Hey Brian! There is not a definite time-frame for dynamic-content in the template editor, I’m afraid. However, do keep an eye on our blog for updates to this and other features. Thanks for your patience!

  • http://www.coemans.com Wim

    Great update, guys! I’m really excited but also eager to see the dynamic content in the template editor and subject line.

    But for now, it works like a charm!

  • http://www.getpattern.com paul

    These are really useful and mean we can offer more targeted email content for our customers now, keep up the good work!

  • http://www.morris-chapman.com David

    If the dynamic content is used for multilingual campaigns, is there is a way to also change the subjects also dynamically depending on the language? Can we insert tags in the subject … ?

    “At present, you can’t use dynamic content with subject lines, but it’s a great suggestion for the future. Thank you so much – we’ll keep you posted if this is something we add” -> Ok. I did not read all..

    Please do not lose it, This is an important point of personalized emails with your new great system. Thank you for your work.

  • http://laserred.co Liam O’Leary

    I love you Campaign Monitor!

  • http://www.campaignmonitor.com/our-story/meet-the-team/#rosh Ros Hodgekiss

    David, dynamic content in subject lines is a good suggestion, thanks for mentioning it! In the interim, you may be able to work around this using our custom fields and tags, but we’ll be sure to let you know if we add a more elegant way to localize your content.

  • http:// BraceRosso

    Wondering about the process for previews. I just tested it and like how simple it was to use by adding code directly while editing a template. It will be nice when we can make this easier for clients to use through some kind of UI.
    My only comment was that the preview step after editing doesn’t show the dynamic content because we haven’t selected recipients yet. I’ve always thought selecting recipients AFTER editing copy was strange. You usually know who you’re sending to before you start writing, so why not specify that first with the option to adjust later? Then the first opportunity we have to preview would include the dynamic content?
    Is it finally time to adjust when we Define Recipients?

  • http://www.trafficdigital.com Jonny

    Is the ‘if’ comparison case sensitive? I’m guessing it is but haven’t had a chance to test it yet. E.g will [if:Answer=YES] match ‘yes’ as well?

  • http://www.campaignmonitor.com/our-story/meet-the-team/#rosh Ros Hodgekiss

    Hi BraceRosso, adding dynamic content to templates may work, but as has been mentioned earlier, remains a bit unofficial right now. We’re aiming to create a much better experience down the line, so hang tight!

    This is excellent usability feedback – thank you! We’re certainly open to adjusting the workflow in the app, so really glad you let us know about this. Will keep you posted πŸ˜‰

    Jonny – no, the condition isn’t case-sensitive. So you can have [if:Answer=yes] or [if:Answer=YES]. All the best!

  • http://www.designed2perform.co.uk Martyn

    Brilliant feature

  • Ambra Lazzari

    Wow, I’m gonna try it immediately!

  • http://emailinspiration.co.uk Carl Michael

    Missed this earlier.

    The addition of dynamic content, something loyal users have been crying out for, help to bring CM more in line worth more serious commercial email platforms. Can’t wait to see how this develops going forward.

  • AW

    Excellent addition to the platform. We have been doing this with other providers since 2007 but your approach and implementation seems to be a lot easier and more user friendly.

  • http://www.edmontonweb.ca Anton

    That’s a great feature – it is so important to personalize communications with clients. My current platform does not allow this feature. Looks like I’ll be exploring this functionality further.

  • http://www.campaignmonitor.com/our-story/meet-the-team/#rosh Ros Hodgekiss

    Hey guys, thank you so much for the positive feedback here. By all means, if there’s anything we can do to help you get started with dynamic content, please get in touch with us – we’d love to lend a hand :)

  • http://www.arcusresorts.nl Lex

    Is the use of dynamic content also available for canvas? If this is possible how do i activate/implement this?

    great cool feature by the way!

  • Greg Strutton

    Hey Lex! Controlling Dynamic content isn’t something you can via Canvas just yet, but it is something we’ve got on the cards for a future update :)

  • Leo Antony

    “>Dear [firstname,fallback=Hello] [lastname,fallback=]

  • http://www.campaignmonitor.com/our-story/meet-the-team/#rosh Ros Hodgekiss

    Hi Leo, this is a great question! In your custom template, you might want to look into using the [IF Provided] condition, eg.

    [if:firstname]Dear [firstname,fallback=][else]Hello[endif],

    If you have any other questions about our template tags, let us know :)

  • http://www.barclaey.com Bart

    We really need dynamic subjects. It doesn’t make any sense the body can be dynamic, but the subject can’t.

    How I see this working:

    Simply allow IF ELSE statements in the <title></title> tag of an HTML email that either gets imported manually or through the API. The subject will then be pulled from the HTML page’s <title></title> tag. This could be step 1, and doesn’t require any additional UI.

  • http://www.campaignmonitor.com/our-story/meet-the-team/#rosh Ros Hodgekiss

    Hi Bart, thank you so much for this suggestion. Mind me asking, would there be that many scenarios where personalization, eg. “Great deals in [city,fallback=your city]” would not suffice? Happy to add your vote for this, as well as any scenarios in which this could be really useful :)

Want to improve your email marketing? Subscribe to get tips on improving your email marketing delivered to your inbox.

Join 120,000 companies around the world that use Campaign Monitor to run email marketing campaigns that deliver results for their business.

Get started for free