Working with external dynamic content


External dynamic content is different to dynamic content. If you wish to tailor content based on contact data, dynamic content is generally easier to use. You can find out more at our Using dynamic content in campaigns article.


Adding an external dynamic content block to your campaign
Setting up your external dynamic content block
Sending your campaign
How external dynamic content URLs which don't return data are handled
Link tracking


External dynamic content enables you to provide campaign content through a URL endpoint. You can pass data to your URL by attaching contact data fields to the query string.

This article assumes you have your URL endpoint set up and ready to go.

Adding an external dynamic content block to your campaign 

Edit a campaign, and ensure the Build tab in the side panel is selected. Under the Building blocks section, there is a block called External dynamic content under 'Tools'. This can be dragged and dropped into your campaign.

Setting up your external dynamic content block

When an external building block is dragged onto a campaign, it will show Set up external dynamic content link. Click this to supply a name for the block, and also your URL endpoint.

The name is for your reference only, but we'll show it in the block's heading.

The address is the URL of your endpoint. The format of this URL matters; it must start with either 'http' or 'https', and the location of contact data fields (if used) is also important.

Examples of valid URL endpoints

Where @EMAIL@ contains something like ''.

Where @DATAFIELD@ contains something like 'filename.php'.

Where @DATAFIELD@ contains something like 'filename'.

Where @DATAFIELD@ is a folder name, for example.

Where no contact data fields are used.

Examples of invalid URL endpoints

Where @URISCHEME@ contains 'http://' or 'https://'.


Where @DATAFIELD@ contains a domain, for example.

Sending your campaign

A campaign containing external dynamic content may take longer to send than a regular send, as each individual send may require us to pull content from your webserver.

You should also note that whilst a triggered campaign is being sent using external dynamic content, it will not be editable until the send is complete.

How external dynamic content URLs which don't return data are handled

If a request for external dynamic content for a contact returns no content (an HTTP 204 status code), the contact is skipped but sending to the rest of the contacts continues. This is recorded and your report overview for the campaign will contain an 'Email skipped' section.

If your endpoint returns anything other than content or a 204 code, the send will be aborted.

The maximum wait time for an answer to a request is five seconds.

Link tracking

Clicks on links in external dynamic content blocks are tracked differently to links elsewhere in your campaigns. For link tracking to work, you need to ensure that:

  1. Either your account has Google Analytics configured, in which case any external links found in your external dynamic content blocks will be rewritten to have Google Analytics tracking information appended to them.
  2. Or your external dynamic content block is assigned to a link group. This way, any clicks on any links in the block will be tracked against the link group (please note though that clicks on individual links within the block will not be tracked).

Note: If you're not configured with Google Analytics and you don’t use link grouping, there will be no tracking on external dynamic content links.


You can have a maximum of 20 external dynamic content blocks in any one campaign. However, as each block will make an HTTP request, and as HTTP requests are generally slow to make, high numbers of external dynamic content blocks may significantly reduce the send speed of your campaign.


Keep in mind that external dynamic content only works with live sends and not test sends.
Have more questions? Submit a request


  • Avatar

    Hi Mike,

    No, I'm afraid. The only way to include an image is by having the image on the URL.

  • Avatar

    Is it possible to add CSS in the source of the email and override the the CSS that comes in with the EDC content?





  • Avatar

    We're struggling to use images with EDC as the image always appears full size in the placeholder, regardless of the size in the template.

    Has anyone got any experience out there of getting this to work?

    Our endpoint url simply has:

    img src="http://www.ourdomain/image.JPG" class="ee_editable"/

    We've also tried.

    img src="http://www.ourdomain/image.JPG" class="ee_editable" width="100%" / 

    NB < brackets removed or they wont show up on this forum.



    Edited by Mike Bishop
  • Avatar

    Solved this...

    The short version is that setting the in the endpoint fixes it for the desktop view but is ignored for mobile view.

    This means an image set to 200 width will still display at eg 320 on a phone.

    The quality degrading issue (if display larger on mobile) can be overcome by ensuring that images are displayed at 200 but resized (possibly on the fly) to eg 320.

    Hope that makes sense!

  • Avatar


    is it possible to use liquid script in external dynamic content url's I can get the logic to work within http://url/@DATA_FIELDS@ but can't get to work with http://url/{{contact.insight.example.url}}. This seems like a large limitation in that we will have to extrapolate the insight data back in to the customers own data field?

  • Avatar

    Hi Jonathan. Thanks for your question. Yes, it is possible to use advanced personalisation (Liquid script) in external dynamic content URLs. However, if the endpoint takes too long to respond, this may be why it isn't working.

    However, I see this was also answered in a support ticket that you currently have open, in which you have further questions that are being addressed.

  • Avatar

    Hi Jonathan. I'm sorry but the above wasn't correct. Our developers have confirmed that it isn't, in fact, possible to use advanced personalisation in external dynamic content URLs. You will, as you found, need to use contact data fields instead for this to work.

    I believe your support ticket has been updated too, which mentions that you could raise this as a feature request here -​. The more votes and support it receives, the more likely it is to be considered when it comes to our future development plans.

  • Avatar

    Is external content cached at all? We would be looking to pull external content that would be one of about 15 options (based on recipient groups). If this was sent to 100,000 contacts, would this make 100,000 calls, or just 15?

    This is assuming the calls just used a group ID, so there were lots of identical calls to the same external URL.

  • Avatar

    Hi Jonathon,

    There is no caching; we can't do this as each request could potentially return different content. You may find my first response up above useful.

  • Avatar

    "Hi Luke - showing external dynamic content in the web version of a campaign is something we're looking to introduce in the future."

    Any news on this? Can we preview EDC with sample data even?

  • Avatar

    Hi - is it still the case that each email generates a request regardless of whether it contains personalised data?

    I'm looking for ways to automate pulling in styled newsfeeds, events feeds and recruitment feeds into a newsletter, and these will be exactly the same for each recipient.

    Unless there are better ways to accomplish this? I've looked into RSS, but from what I can tell it's not flexible enough (images, mainly). At present we've used a template created here, recreated it as a plugin on our website so that we can inject the dynamic content, output personalised HTML for that email which we then import back into a new campaign here. Now we're in the process of a redesign, and I'm sure there must be better ways. to streamline as much as possible.

    Thanks, Simon

  • Avatar

    @Simon Yes, that's still the case. RSS is indeed the obvious alternative for things like newsfeeds, but if you need more control over the design then you're back to external dynamic content. There's no reason why you can't return the same content for every contact of course, as you have been doing, as long as you're happy with the speed of the sends.

    There is one other way, which is to use account-wide Insight data ( Your website could push HTML content into a record, and you could include the latest record in the next campaign send.

    Whether this would be easier for you than external content I'm not sure, but it may be worth a look.