AdRoll is a retargeting and performance-marketing platform founded in San Francisco in 2006 (originally as Semantic Sugar, Inc.) and now operated as the flagship advertising brand of NextRoll, which the company rebranded to in 2019. Rather than being a marketplace or comparison site, AdRoll re-engages people who have already visited a brand's website by serving them personalized ads — and, for paid subscribers, personalized emails — built from that visitor's own browsing behavior.
At the center of this is AdRoll's Dynamic Ads product: instead of designing a static ad per product, advertisers connect a Product Feed once, and AdRoll's ad templates automatically pull in product images, titles, prices and landing-page URLs to assemble ads on the fly for each visitor.
Your product feed is what AdRoll calls "the crucial backbone" that powers Dynamic Ads — without it, AdRoll has no product data to personalize with, and campaigns fall back to generic static creative.
According to AdRoll's own Understanding Dynamic Ads documentation, Dynamic Ads can achieve a 34% lower cost-per-acquisition (CPA) on their own, and up to 61% lower CPA when combined with static ad campaigns, because the ads shown are relevant to what each visitor actually looked at. AdRoll also documents a 44% lift in ROAS and a 115% increase in click-through rate (CTR) from Dynamic Ads versus non-dynamic creative.
Once connected, a single feed can drive several ad surfaces from the same product data: Web Dynamic Ads (standard display sizes), Native Dynamic Ads, and — for legacy packages — Social Dynamic Ads on Facebook and Instagram. Each format pulls the same underlying fields (product name, image, destination URL, price) so you maintain one source of truth instead of building creative per channel by hand.
AdRoll's documentation describes one mechanic worth understanding before you connect a feed: the same Product Feed that powers your display and native Dynamic Ads can also power dynamic content blocks inside AdRoll's Abandoned Cart email templates, for accounts on a paid plan that includes email.
On the ad side, AdRoll's templates use macros — placeholder strings such as @title or @price — that get replaced with the actual product data from your feed at serve time. On the email side, AdRoll's Abandoned Cart templates offer configurable content blocks that read from the same connected feed:
{% for product in abandoned_cart.products limit:5 %}).Each block pulls Product Image, Product Title, Product Description, Product Price and the Cart URL directly from your feed data — so a feed built correctly for Dynamic Ads generally also satisfies AdRoll's cart-abandonment email requirements, with no separate feed needed.
AdRoll's Connect your Product Feed documentation lists three commonly accepted file formats:
Your entire product catalog for Dynamic Ads should generally live in a single feed file, structured one row (or node) per unique product — AdRoll calls this "product-level" data. Files should be encoded in UTF-8; AdRoll explicitly lists invalid encoding as a cause of feed parsing failures.
Feeds are provided as a link rather than a manual per-order upload: you typically share the URL of your hosted feed (TXT, CSV or XML) with AdRoll support (support@adroll.com) or your Account Manager to get it connected, or you connect an e-commerce platform integration (e.g. Shopify, GoDataFeed, Channel Advisor, Amazon, Bing Shopping, Google Merchant Center) that generates and syncs the feed automatically.
If you self-host the feed file rather than using a third-party integration, AdRoll needs access to fetch it. Its documented allowlisting requirements are:
54.69.18.100AdRoll Dynamic Creative Feed Parser bot (delight@adroll.com)AdRoll also asks that you notify support before making unauthorized structural changes to an already-connected feed — rearranging columns or changing the file type — since this can disrupt an already-integrated parser and cause ad performance issues.
AdRoll publishes a "Product Feed Specifications Summary" with 4 required fields and 6 recommended fields. AdRoll's documentation notes it does not publish character limits for these feed values — the field, action (required/recommended) and description below are quoted directly from AdRoll's own spec table.
| Campo | Obligatorio | Formato | Ejemplo | Notas |
|---|---|---|---|---|
product_id | Obligatorio | cadena | SKU12345 | Unique identifier for the product. Must exactly match the ID passed by the website pixel (case-sensitive) |
title | Obligatorio | envíenos mensaje de texto | Men's Classic Cotton T-Shirt | Nombre del producto |
link | Obligatorio | URL | https://www.example.com/products/mens-classic-cotton-tshirt | Direct URL to the product's landing page |
image_link | Obligatorio | URL | https://www.example.com/images/mens-tshirt-blue.jpg | URL of the main product image |
price | Obligatorio | número + moneda | 19.99 USD | Precio actual del producto |
description | Recomendado | envíenos mensaje de texto | Soft, breathable 100% cotton t-shirt. | Brief product summary |
sale_price | Recomendado | número + moneda | 14.99 USD | Discounted price, if applicable |
availability | Recomendado | enumerated string | in stock / out of stock | Estado actual del stock |
google_product_category | Recomendado | text (taxonomy) | Ropa y accesorios > Ropa > Camisas y tops | Google's standardized product category |
brand | Recomendado | envíenos mensaje de texto | EjemploMarca | Nombre de la marca |
The single most important integrity rule in AdRoll's own documentation is that product_id must exactly match — case-sensitive, with no extra spaces — the product ID that AdRoll's website pixel captures via adroll_custom_data. AdRoll calls this matching "crucial for linking user activity to your product data"; if the pixel-captured ID doesn't match an ID in the feed, personalization for that product fails outright.
product_id, title, link, image_link, price) plus the recommended fields (description, sale_price, availability, google_product_category, brand), in TXT (tab-delimited), CSV, or XML — one row per unique product.54.69.18.100 and the user agent AdRoll Dynamic Creative Feed Parser bot (delight@adroll.com).support@adroll.com) or your Account Manager, who connects it to your account — there is no fully self-serve "paste a URL" step in the base flow described in AdRoll's own guide.product_id values in your Feedance feed must exactly match (case-sensitive) the ID AdRoll's pixel captures via adroll_custom_data on your live product pages. Check this in your browser's developer console against the feed, then confirm feed health under Creative > Product Feeds > Overview, where AdRoll shows a status of Healthy, Needs Attention, or Broken after the first sync.In AdRoll's Product Feed Overview (currently in Beta), the "Sync schedule" field is described as "how frequently AdRoll checks for updates in your feed," and AdRoll states directly: "Currently the default schedule is daily and cannot be changed." The same page also shows a Last sync and Next sync timestamp for each connected feed; if a feed has problems, Next sync can display "Scheduling Disabled" instead of a time.
Separately, in the context of product exclusions, AdRoll's Connect your Product Feed documentation notes that "automatic feed setups are updated weekly and may reverse manual blacklisting if items are still marked as available in the source data" — a distinct note about ecommerce-integration-driven feeds rather than the general daily sync schedule shown in the Overview page.
Practically, this means you should keep your source catalog (via Feedance) accurate at all times rather than relying on manual re-triggers — AdRoll will pick up changes on its own daily cadence, and you cannot force a faster refresh from the merchant side.
| Error | Causa probable | Solución |
|---|---|---|
| Feed Parsing Failed (0 products imported, "Feed Failed" status, 0% product match rate) | The feed URL isn't live or publicly reachable; for self-hosted feeds, AdRoll's IP/User-Agent aren't allowlisted; or the file isn't in an accepted format/encoding | Confirm the feed URL is live and accessible; if self-hosted, allowlist IP 54.69.18.100 and User-Agent AdRoll Dynamic Creative Feed Parser bot (delight@adroll.com); confirm the file is TXT, CSV or XML and saved as UTF-8 |
| Troubled Products — incorrect ad info (price, image) or specific products missing from ads | Inaccurate or missing title, price, image URL, or landing page URL for those specific Product IDs in the source feed | Inspect the source feed row for the affected Product IDs; validate the image and landing page URLs are correct and accessible; confirm availability status; correct the feed and re-sync (or wait for the next sync) |
| Low Product ID Match Rate (below 40%) — underperforming or irrelevant dynamic ads | The Product ID captured by AdRoll's pixel (via adroll_custom_data) doesn't exactly match the product_id in the feed — case differences or extra spaces are common causes | Use the browser console to read the pixel-captured Product ID on your product pages and compare it exactly against the feed's product_id for the same product; confirm the pixel fires correctly; align the two if they diverge |
Straight from AdRoll's own best-practice guidance for product feeds and Dynamic Ads:
availability instead of blacklisting for temporary stock-outs. AdRoll recommends updating the availability attribute to "out of stock" for temporarily unavailable items rather than requesting a manual product blacklist, since automatic feed setups can reverse a manual blacklist on their weekly update if the item still shows as available in your source data.description, brand y google_product_category specifically as fields that improve visibility and ad relevance beyond the 5 required fields.title y description values are more likely to register with a fast-moving shopper.What file format should my AdRoll product feed be in?
TXT (tab- or pipe-delimited), CSV, or XML. AdRoll notes tab-delimited TXT is often preferred, and the file should be UTF-8 encoded.
Which fields does AdRoll actually require?product_id, title, link, image_link y price son requeridos. description, sale_price, availability, google_product_category y brand are recommended for richer ads but not strictly mandatory.
How often will AdRoll pick up changes to my feed?
The Product Feed Overview page states the default sync schedule is daily and cannot be changed by merchants. Some automated ecommerce-integration feed setups are separately documented as updating weekly.
Why are some of my products missing from my dynamic ads?
The most common cause is a Product ID mismatch between your feed and the ID AdRoll's pixel captures via adroll_custom_data on your site — check this first. Missing or invalid image and landing-page URLs for specific products are the next most common cause.
Do I upload my feed manually or does AdRoll fetch it automatically?
You provide AdRoll with a link to your hosted feed (TXT, CSV or XML) via support or your Account Manager, or connect through a supported ecommerce integration; AdRoll's parser then fetches from that URL on its sync schedule. Self-hosted feeds must allow AdRoll's IP (54.69.18.100) and User-Agent to reach the file.
Does my product feed also power AdRoll's abandoned-cart emails?
Yes — for accounts with AdRoll email enabled, the same connected Product Feed supplies the dynamic content blocks (Main Abandoned Cart Product, List of up to 3 Cart Products, or 2 Products Side by Side) used in Abandoned Cart email templates.
What happens if my feed fails to parse entirely?
You'll see a "Feed Parsing Failed" status with 0 products imported and a 0% product match rate. Check that the feed URL is live and publicly reachable, that any self-hosting allowlisting is correct, and that the file is a supported format saved as UTF-8.