What Is a DPA Feed? Required Fields, Formats, and How Meta Actually Uses It
A DPA feed is the catalog data file Meta reads to power Dynamic Product Ads. The required fields, supported formats, the optional fields that matter, and how the feed connects to your pixel.

A DPA feed is the catalog data file Meta reads to power Dynamic Product Ads (now called Advantage+ Catalog Ads). It’s a structured list of every SKU you want to advertise, with the fields Meta needs to render the ad and the metadata it needs to decide who sees what.
This post covers what’s actually in a DPA feed, why each field is there, and the operational rules that determine whether the feed merely loads or actually performs.
What a DPA feed is, in one sentence
A DPA feed is a CSV, TSV, or XML file — hosted at a URL you give Meta — that lists your products and the attributes Meta uses to serve ads against them.
That’s it. The complexity is in the rows.
The nine required fields
Every DPA feed must include these for every item. If one is missing on a row, that row is dropped from delivery (and sometimes from the catalog entirely, depending on the validator’s mood).
| Field | What it is | Common mistakes |
|---|---|---|
id | Unique product identifier | Reusing IDs across variants; using URLs as IDs |
title | Product name | Over 65 characters (gets truncated in ads); promotional language like “SALE” |
description | Plain-text product description | HTML tags; promotional copy; under 200 characters (Meta penalises thin descriptions) |
availability | in stock, out of stock, available for order, discontinued | Leaving stale in stock for sold-out SKUs |
condition | new, refurbished, used | Defaulting everything to new when refurbished items exist |
price | Currency + amount, e.g., 19.99 GBP | Wrong currency code; missing currency entirely |
link | Product page URL | HTTP instead of HTTPS; tracking parameters that don’t resolve |
image_link | Primary product image URL | HTTP image links; images under 500 x 500; text overlays |
brand | Brand name | Empty for own-brand products (use the store name) |
Meta’s automated review checks these on every fetch. A feed where 1,000 items pass and 50 fail loads as a catalog with 1,000 items. The 50 are listed in the feed report — read it.
The optional fields that move the needle
A feed with only the nine required fields will run. It will not run well. These are the fields most “valid” feeds leave empty, and which Meta uses for product set rules and Advantage+ optimisation:
google_product_category— Meta uses Google’s taxonomy. Set it. Without it, Advantage+ has to infer category from the title, which is noisy.product_type— your internal taxonomy, e.g.,Apparel > Womens > Dresses > Maxi. Used for product set rules.item_group_id— groups variants under one parent SKU. Without it, a dress in five sizes and three colours is fifteen separate items competing for impressions. With it, Meta picks the best-performing variant per impression.custom_label_0throughcustom_label_4— five string fields you control. Use them for ROAS tier, margin tier, stock state, or any segmentation your campaign structure needs. These become product set rules.sale_priceandsale_price_effective_date— only when there’s a real promotion. Permanent sale_price tells the algorithm “this is always discounted” and dampens urgency signals.gtin— global trade item number. Required in some categories, optional in others, useful everywhere.mpn— manufacturer part number. Useful for branded resellers.color,size,material,pattern,gender,age_group— apparel attributes. Required if you want to use Meta’s apparel-specific ad formats.
A feed that fills all nine required fields plus eight optional ones gives Meta enough signal to do real segmentation. A feed with just the nine is a campaign on training wheels.
Supported formats
Meta accepts four feed formats:
- CSV — simplest, easiest to debug, comma-separated with a header row.
- TSV — tab-separated, same shape as CSV. Useful if your titles contain commas.
- RSS XML — the Google Shopping format. Meta’s preferred format for catalogs that already publish to Google.
- ATOM XML — alternative XML schema, supported for legacy reasons.
For most teams, RSS XML is the right choice because it carries over to Google Merchant Centre, TikTok Shop, and Pinterest with minimal transformation. CSV is fine for small catalogs and easy to inspect by hand.
How Meta uses the feed
The feed doesn’t exist in isolation. Meta’s algorithm uses it alongside your pixel to decide what to show.
The flow:
- Fetch. Meta downloads your feed at the scheduled cadence.
- Validate. Required fields are checked. Items with errors go into the rejection list.
- Match against the pixel.
content_idsfromViewContent,AddToCart, andPurchaseevents are matched against theidfield. The match rate is the percentage of pixel events that link to a known catalog item. - Build product sets. Your product set rules filter items into segments.
- Serve. Advantage+ picks an item from a product set, picks a creative template (default or your branded template), serves to an audience.
The single most common reason DPA underperforms is step 3 — the pixel doesn’t match the feed. Even a beautifully structured feed produces poor results if Meta can’t link user behaviour to specific products. Match rate should be at or above 95%. Below 90% and Advantage+ is optimising in the dark.
Where the feed sits in your stack
The feed is the output of your product data pipeline. Whatever feeds it — Shopify, BigCommerce, Magento, your ERP, a hand-maintained sheet — eventually becomes the file Meta reads.
The clean version of this stack:
- Source of truth — your product database or e-commerce platform.
- Transformation layer — applies the rules that turn raw data into Meta-compliant fields. Strips HTML, validates GTINs, normalises sizes, fills missing fields.
- Output — the hosted feed file Meta fetches.
Most teams skip the transformation layer and feed Meta whatever their platform exports. That’s why their catalogs are full of HTML in descriptions, “Free shipping!” in titles, and image links that point to placeholder graphics. The transformation layer is where the work happens.
Tools that do this for you ingest your platform’s raw export, apply per-channel rules, and host the cleaned-up feed at a URL Meta can fetch. The pillar guide Meta DPA Feed Management covers what to look for in that stack.
Common confusions
A “catalog” and a “DPA feed” are not exactly the same thing. The catalog is the entity in Commerce Manager. The feed is the file that populates it. One catalog can be populated by multiple feeds (e.g., one per business unit). One feed can populate one catalog.
Product feeds and ads feeds are different. Some platforms generate a “feed” that’s actually an output for organic shopping (free listings, Instagram Shopping). The required fields are similar but not identical. A feed built for organic shopping may fail validation as a DPA feed.
The pixel isn’t part of the feed. They’re separate systems that Meta joins on id / content_ids. You configure them independently in Events Manager and Commerce Manager. The most common DPA failure mode is treating them as separate problems when they need to be tested together.
What to do next
If your feed is valid and live but the campaign is underdelivering, the issue is usually in pixel matching, product set rules, or creative. The pillar guide Meta DPA Feed Management covers the full stack. If your feed is failing validation outright, the troubleshooting playbook is DPA feed errors and disapprovals.
If you’ve never built a feed before and don’t want to, AI Shopping Feeds ingests your platform’s data, applies per-channel transformations, and hosts the feed Meta fetches. The free Growth plan covers one brand and one feed (up to 100,000 products); Pro and Enterprise add more brands, more feeds, and the DPA Creative Editor.
Why wait? Try it free today.
Stop managing feeds manually. Start optimising with AI in 30 seconds.
- 100% free forever, no credit card required
- 1 brand, 1 feed, 100,000 products per feed
- Full AI Product Optimisation, Rule Engine, and 200+ channel exports
- Pay only for AI credits when you need them