Overview
AdRoll is a retargeting and prospecting platform that uses product feed data to display personalised ads across the web. Your product feed supplies AdRoll with the inventory information needed to match user behaviour to relevant products, enabling dynamic creative optimisation and audience segmentation.
Merchants use AdRoll feeds to:
- Show visitors the exact products they viewed or added to cart.
- Segment audiences by product attributes (brand, category, price range).
- Optimise ad creative based on product performance metrics.
- Scale retargeting campaigns across display, social, and native channels.
Feed quality directly affects campaign relevance, click-through rates, and return on ad spend. Incomplete or inaccurate product data results in lower match rates, poor creative rendering, and wasted ad budget.
Core Feed Fields and Requirements
| Field | Required | Type | Notes |
|---|---|---|---|
| id | Yes | String (max 2000 chars) | Unique product identifier. Must match your internal product ID consistently. |
| title | Yes | String (max 150 chars) | Product name. Used in ad creative and search. Be descriptive and avoid keyword stuffing. |
| description | Yes | String (max 5000 chars) | Full product description. Include key features, materials, and use cases. |
| link | Yes | URL | Direct landing page URL for the product. Must be publicly accessible and return HTTP 200. |
| image_link | Yes | URL | Primary product image. Minimum 100x100 pixels recommended; 800x800 or larger for quality. Use HTTPS URLs. |
| price | Yes | Decimal (max 15 digits) | Current product price in your local currency. Format as number only (no currency symbol). |
| availability | Yes | Enum | One of: in stock, out of stock, preorder, or backorder. Controls ad eligibility and frequency. |
| brand | Conditional | String (max 250 chars) | Product brand or manufacturer. Required for most verticals; critical for brand-aware audiences. |
| condition | Conditional | Enum | One of: new, refurbished, or used. Required for non-apparel and non-consumable products. |
| gtin | Conditional | String (14 digits max) | Global Trade Item Number (UPC, EAN, ISBN). Improves matching and prevents duplicate product issues. |
| mpn | Conditional | String (max 70 chars) | Manufacturer Part Number. Use with gtin to uniquely identify products. |
| identifier_exists | Conditional | Boolean | Set to true if gtin or mpn is present; false if neither exists. Required if product lacks both identifiers. |
| google_product_category | Yes | Integer or String | Google product category ID or name. Controls vertical targeting and ad policy compliance. |
| product_type | Yes | String (max 750 chars) | Your internal product category hierarchy (e.g. Electronics > Laptops > Gaming). Use consistent delimiter. |
| color | Conditional | String (max 100 chars) | Product colour. Required for apparel and fashion; improves variant matching. |
| size | Conditional | String (max 100 chars) | Product size. Required for apparel, shoes, and furniture. Include size system (S/M/L or numeric). |
| age_group | Conditional | Enum | One of: newborn, infant, toddler, kids, adult. Required for children's products and apparel. |
| gender | Conditional | Enum | One of: male, female, unisex. Required for gender-specific apparel and accessories. |
| material | Conditional | String (max 100 chars) | Primary material (e.g. cotton, polyester, leather). Improves relevance for fashion and home goods. |
| sale_price | Optional | Decimal | Discounted price if product is on sale. Format as number only. |
| sale_price_effective_date | Optional | Date range | Start and end dates for sale price (format: YYYY-MM-DD/YYYY-MM-DD). |
| item_group_id | Optional | String (max 2000 chars) | Parent product ID for variants (e.g. shirt in multiple colours). Groups variants under one product. |
| additional_image_link | Optional | URL | Secondary product images (up to 10 recommended). Comma-separated URLs in single field. |
| custom_label_0 to custom_label_4 | Optional | String (max 100 chars each) | Custom attributes for audience segmentation and bidding rules (e.g. margin_tier, season, supplier). |
| shipping_weight | Optional | Decimal | Product weight (in pounds or kilograms). Used for shipping cost estimation in dynamic ads. |
| mobile_link | Optional | URL | Mobile-specific landing page. If omitted, link is used for all devices. |
| availability_date | Optional | Date | Date product becomes available (format: YYYY-MM-DD). Use for preorder products. |
| cost_of_goods_sold | Optional | Decimal | Internal product cost. Not visible to users; used for profitability analysis and bidding. |
| expiration_date | Optional | Date | Date product listing expires (format: YYYY-MM-DD). Use for seasonal or limited inventory. |
| unit_pricing_measure | Optional | Decimal | Quantity of unit_pricing_base_measure (e.g. 500 for 500ml bottle). |
| unit_pricing_base_measure | Optional | Decimal | Base unit for price comparison (e.g. 100ml). Enables per-unit price display. |
| multipack | Optional | Integer | Number of items in a multipack product. |
| is_bundle | Optional | Boolean | Set to true if product is a bundle of multiple items. |
| energy_efficiency_class | Optional | String | EU energy label rating (A to G). Required for certain appliances in EU regions. |
| size_type | Optional | Enum | One of: regular, petite, maternity, big-and-tall, oversize. Clarifies apparel sizing. |
| size_system | Optional | String | Sizing system used (e.g. US, EU, UK, international). |
| promotion_id | Optional | String (max 100 chars) | Internal promotion or campaign identifier for tracking ad performance by promotion. |
Feed Format and Delivery
AdRoll accepts product feeds in the following formats:
- CSV (comma-separated values).
- XML (structured markup).
- JSON (key-value pairs).
- API integration (real-time sync).
Feeds can be uploaded manually, scheduled for automatic refresh, or ingested via API. Recommended refresh frequency is daily or weekly to keep inventory and pricing current.
Feed File Best Practices
- Ensure the file encodes in UTF-8 to support special characters and international products.
- Validate the feed structure before upload using AdRoll's feed validator tool or a third-party feed validator.
- Include a header row (for CSV) or proper XML/JSON schema declaration.
- Compress large feeds (>100 MB) using gzip to reduce upload time and storage.
- Test a small subset of products before uploading the full feed.
Field Mapping and Data Quality
Identifier Fields (id, gtin, mpn, identifier_exists)
The id field is your primary key and must be unique and stable across feed updates. If a product's id changes, AdRoll treats it as a new product, breaking historical data and audience targeting.
gtin and mpn provide secondary identifiers that help AdRoll match products across different data sources and prevent duplicate listings. If your product lacks a gtin (common for private label or digital goods), set identifier_exists to false. Omitting this field when both gtin and mpn are absent may cause feed validation errors.
Title and Description
Title should be concise, descriptive, and keyword-rich without appearing spammy. Avoid all-caps text, excessive punctuation, or repeated keywords. Examples of strong titles:
- 'Men's Merino Wool Running Socks, Moisture-Wicking, Size 10-13'
- 'Stainless Steel 3-Piece Cookware Set with Glass Lids'
Description should expand on the title with material, dimensions, colour options, and benefits. Include details that help users decide whether the product matches their needs. Avoid duplicate title text in the description.
Image Links
image_link must point to a valid, publicly accessible image file. Common issues:
- Broken or expired URLs (validate URLs before upload).
- Images that are too small (<100x100 pixels) or very large (>10 MB), which slow ad rendering.
- Transparent or white-background images that may not display well in all ad formats.
- Watermarked or low-quality images that reduce ad appeal.
Use high-contrast product photography with a clean background. If you provide additional_image_link, ensure all images are consistent in style and quality.
Pricing and Availability
price must always reflect the current, publicly listed price. If price differs from your website, ads will be marked as misleading or disapproved. Update price daily or whenever you change it.
availability must be one of the four allowed values: in stock, out of stock, preorder, or backorder. Do not use custom values. AdRoll pauses ads for out-of-stock products to prevent wasted spend on clicks that cannot convert.
If you offer a sale_price, ensure sale_price_effective_date covers the actual promotion period. Ads will show the sale price only during this window. After the end date, AdRoll reverts to the regular price field.
Category Classification
google_product_category must be a valid Google product category ID (integer) or name string. This field controls which ad policies apply to your product and affects audience targeting options. Incorrect categorisation can result in ads being disapproved or shown to irrelevant audiences.
Common category IDs:
- 3034: Apparel & Accessories > Clothing > Shirts & Tops
- 1604: Electronics > Computers & Tablets > Laptops
- 2582: Home & Garden > Furniture > Bedroom Furniture
Refer to Google's product category taxonomy for the complete list. product_type is your internal hierarchy and can use any consistent delimiter (e.g. '>' or '|').
Variant and Bundle Products
For products available in multiple colours, sizes, or configurations, use item_group_id to group variants under a single parent product ID. Each variant still requires its own row with a unique id, but all share the same item_group_id.
Example: A shirt sold in red/small, red/large, blue/small, and blue/large would have four rows, each with a unique id, but all with the same item_group_id value.
For bundled products (e.g. a laptop bundle including mouse and case), set is_bundle to true. Ensure the bundle price reflects the total value of all items.
Custom Labels for Segmentation
custom_label_0 through custom_label_4 allow you to tag products with attributes that don't fit standard fields. Common uses:
- Margin tier: 'high_margin', 'low_margin', 'seasonal'.
- Supplier or warehouse: 'supplier_a', 'warehouse_west'.
- Promotion status: 'clearance', 'new_arrival', 'bestseller'.
- Audience segment: 'high_value', 'vip_only'.
Use consistent, lowercase values. These labels enable advanced audience segmentation and bidding rules in AdRoll's campaign settings.
Validation and Troubleshooting
Common Feed Errors
| Error | Cause | Resolution |
|---|---|---|
| Missing required field | id, title, description, link, image_link, price, availability, or google_product_category not provided | Add the missing field to every product row. |
| Invalid URL format | image_link or link uses http:// instead of https:// or contains spaces | Encode URLs properly and use HTTPS. |
| Price format error | price includes currency symbol, comma, or non-numeric characters | Use numeric format only (e.g. 19.99, not £19.99). |
| Availability value invalid | availability uses a custom value instead of in stock, out of stock, preorder, backorder | Replace with one of the four allowed values. |
| GTIN format incorrect | gtin is not 8, 12, 13, or 14 digits | Validate GTIN length and remove non-numeric characters. |
| Duplicate product IDs | Two or more products share the same id | Ensure every product has a unique id. |
| Broken image URLs | image_link returns HTTP 404 or 403 | Test all URLs before upload; use a link checker tool. |
| Character encoding issue | Feed contains special characters that don't display correctly | Save feed as UTF-8 and test a sample in AdRoll's preview tool. |
Feed Validation Steps
- Download your feed file and open it in a text editor to check for obvious syntax errors.
- Validate the file structure using AdRoll's built-in feed validator or a third-party tool.
- Check that all required fields are present in every product row.
- Sample 10-20 products and verify that data matches your live website.
- Test image URLs by opening them in a browser to confirm they load and display correctly.
- Verify that price values match your current website prices.
- Upload the feed to AdRoll in a test or staging environment before deploying to production.
Optimisation for Campaign Performance
Data Completeness
Products with complete data (all optional fields filled) receive higher quality scores and better ad placement. Prioritise adding:
- Additional images (additional_image_link) to improve creative quality.
- Colour and size for apparel and fashion products.
- Brand for luxury or recognised brands.
- Custom labels to enable advanced targeting and bidding strategies.
Inventory Synchronisation
Out-of-sync inventory is a major source of wasted ad spend. If a product is out of stock on your website but marked as in stock in AdRoll, users click the ad but cannot purchase. This increases cost per conversion and damages return on ad spend.
Implement a daily or real-time feed refresh to keep availability in sync with your inventory system. Use availability_date for preorder products to set a specific availability date rather than marking them as out of stock.
Dynamic Pricing Strategy
Use sale_price and sale_price_effective_date to highlight promotions without changing the base price field. This allows AdRoll to track both regular and promotional performance separately.
For time-limited offers (flash sales, seasonal promotions), set the sale_price_effective_date to match your promotion window. AdRoll will automatically revert to the regular price after the end date.
Audience Segmentation
Use custom_label_0 to custom_label_4 to create audience segments based on product attributes:
- Segment by margin to bid higher on high-margin products.
- Segment by category to run category-specific creative tests.
- Segment by price range to target users with different budgets.
- Segment by new vs. returning inventory to prioritise bestsellers.
These segments can then be targeted with different bid strategies, creative, and audience rules in AdRoll's campaign settings.
Product Condition and Refurbished Items
For refurbished or used products, always set condition to the appropriate value. Failure to disclose condition can result in ads being disapproved or account suspension. Refurbished and used products often require separate audience targeting and bid strategies.
International and Regional Considerations
For multi-region campaigns:
- Provide prices in the currency of the target region.
- Use size_system and size_type to clarify apparel sizing (e.g. EU vs. US).
- Include energy_efficiency_class for appliances sold in the EU.
- Translate title and description into the target language while keeping id, brand, and category consistent.
Feed Integration Workflows
Manual Upload
- Prepare your feed file in CSV, XML, or JSON format.
- Log into AdRoll and navigate to the Merchant Center or Feeds section.
- Select 'Upload Feed' and choose your file.
- AdRoll validates the feed and displays any errors or warnings.
- Review the validation report and correct any errors.
- Confirm the upload and monitor the ingestion process.
Scheduled Automatic Refresh
- Host your feed file on a publicly accessible URL (HTTPS).
- In AdRoll, select 'Schedule Feed' and provide the feed URL.
- Set the refresh frequency (daily, weekly, or custom schedule).
- AdRoll automatically downloads and ingests the feed on the schedule.
- Monitor feed status and error logs in the AdRoll dashboard.
API Integration
For real-time inventory synchronisation, use AdRoll's API to push product updates directly. This approach is ideal for high-velocity inventory (e.g. retail, travel, classifieds) where availability changes frequently.
API integration requires development resources but provides the most accurate and timely product data.
Monitoring and Maintenance
Key Metrics to Track
- Feed health score: Percentage of products with no errors or warnings.
- Product approval rate: Percentage of products approved vs. disapproved.
- Image quality score: Average quality rating of product images.
- Data completeness: Percentage of optional fields populated across all products.
- Inventory sync lag: Time between inventory change on your website and update in AdRoll.
Regular Maintenance Tasks
- Weekly: Review feed health score and address any new errors.
- Bi-weekly: Audit a sample of 20-30 products to verify data accuracy.
- Monthly: Analyse which products have the highest approval and performance rates; identify data gaps.
- Quarterly: Review category mapping and custom labels; update if business rules change.
Summary
The AdRoll product feed is the foundation of your retargeting and prospecting campaigns. Accurate, complete, and well-maintained product data directly impacts ad approval, relevance, and return on ad spend.
Prioritise the required fields (id, title, description, link, image_link, price, availability, google_product_category, product_type) and ensure they are accurate and up to date. Then progressively add optional fields (brand, colour, size, custom labels) to improve targeting precision and creative quality.
Implement a daily or real-time feed refresh process to keep inventory and pricing in sync with your website. Use AdRoll's feed validator and monitoring tools to catch and resolve errors early.
With a high-quality, well-maintained feed, you can build sophisticated audience segments, test creative variations, and optimise bids to maximise return on ad spend across all AdRoll channels.