Data feeds are streams of structured data that are regularly refreshed to provide up-to-date information. In Iterable, data feeds fetch live data from external web services at send time, enabling templates and customer journeys to render content based on the most current available data rather than pre-stored values.
By retrieving real-time data when a message is generated, data feeds support dynamic, context-aware personalization across campaigns and triggered communications.
# In this article
# Why use data feeds?
Static campaigns rely on yesterday’s data. Modern marketing responds to what’s happening right now.
Data feeds power real-time, moments-based engagement by pulling in live data at the exact moment a message is sent. Instead of preloading content and hoping it’s still relevant, every message adapts to the customer’s current context—profile updates, inventory changes, pricing shifts, behavioral signals, and more.
Why data feeds matter in a moments-based world:
Real-time by design: Content is generated at send time using live data, so every interaction reflects what’s true now—not what was true at build time.
Connected to your ecosystem: Pull in data from your own services or trusted third-party systems so each touchpoint reflects your full customer picture.
Built for complexity: Support for multiple formats and secure authentication means you can operationalize advanced personalization strategies.
Optimized for scale: Orchestrated caching helps keep performance high while maintaining data freshness, so real-time doesn’t mean resource-heavy.
Use data feeds to power fully dynamic templates that respond to each individual customer, or to ensure shared content (like offers, inventory, or pricing) is always up to date across audiences.
# Use cases for data feeds
Data feeds are a powerful tool for personalizing content in your campaigns. Here are some common use cases:
- Real-time product recommendations (names, images, prices, links)
- Location-based content (store info, local inventory, weather)
- Dynamic shared content (flash sales, countdowns, daily deals)
- Subscription and billing details (plan, renewal date, usage)
- Content feeds (articles, blog posts, news, videos)
# How data feeds work
At a high level, data feeds work in three steps:
- Your template includes a reference to a data feed.
- At send time, Iterable requests data from your feed's URL.
- Iterable uses the response to render fresh content in each message.
# Static vs. dynamic data feeds
Iterable classifies data feeds as either static or dynamic, based on whether the URL or custom headers contain merge tags or other Handlebars expressions:
Static data feeds don't contain merge tags or other Handlebars expressions in their URL or custom headers. Every recipient receives data from the same URL.
Dynamic data feeds contain merge tags or other Handlebars expressions in their URL or custom headers.
For example, this data feed URL is personalized for each recipient, and represents a dynamic data feed:
This distinction affects how Iterable caches data feed responses. Generally, static data feeds are more likely to have improved performance than dynamic data feeds. To learn more about how Iterable caches data feed responses, see Data feed caching.
# Terms to know
# Data feed
A connection to an external web service that returns structured data in response
to an HTTP GET request. A data feed can be a web service, an API, a database,
RSS feed, or any other source of structured data, in a supported format (JSON,
XML, RSS, or Atom), that changes over time.
Iterable fetches this data at send time and uses it to populate template content.
# Static data feed
A data feed whose URL and custom headers contain no merge tags or other Handlebars expressions. Every recipient receives data from the same URL. Static feeds support more efficient caching than dynamic feeds.
# Dynamic data feed
A data feed whose URL or custom headers contain merge tags or other Handlebars expressions, personalizing the request for each recipient. Dynamic feeds are fetched per user (or per unique URL), and caching is less efficient.
# Data feed alias
A short label assigned to a data feed in Iterable. When enabled on a template,
the alias prefixes data feed field references (for example, inventoryFeed.items)
and helps prevent field name collisions with user profile data.
# Merge contexts setting
Merge the Data Feed and User Contexts is a template setting that combines
data feed fields and user profile fields into a single rendering context, allowing
both to be referenced with standard Handlebars curly brace syntax ({{...}}).
Without this setting, data feed fields use square bracket notation ([[...]]).
# Getting started
To set up and use a new data feed in Iterable, follow these steps:
Create a web service that returns a valid data feed response with the fields that your templates need. To see technical requirements for creating a data feed web service that Iterable can use, see Creating a Data Feed Web Service.
Add the data feed to Iterable. To learn how, see Managing Data Feeds.
Add the data feed to a template. To learn how, see Using Data Feeds in Templates.
-
Reference the data feed fields in the template using merge tags or other Handlebars expressions, creating the final campaign content.
- To learn how to reference data feeds in templates, see Using Data Feeds in Templates.
- To learn how to reference data feeds in snippets, which is an advanced use case, see Using Data Feeds in Snippets.
# Want to learn more?
For more information about some of the topics in this article, check out these resources. Iterable Academy is open to everyone — you don't need to be an Iterable customer!
Iterable Academy
Support docs