The Criteo product feed: what Criteo needs, why its price column runs the other way, and the tag it cannot work without

Someone looks at an armchair on your site and leaves. An hour later the chair follows them onto a news site, in a banner Criteo built. The banner is made from your product feed. The price in it, the photo, whether the chair appears at all: all of it comes from the catalog you send.
Here is what that catalog needs, the one column everyone maps backwards, and the two things that decide whether the feed does anything at all.
Nothing runs until OneTag is on your store
Criteo retargets people who browsed your products. It can only do that if it saw them browse. OneTag is the small script on your product, cart and order pages that reports what people looked at, added and bought. Without it, Criteo says it cannot deliver personalised ads, cannot optimise bidding and cannot report accurately. A perfect catalog with no tag runs no ads.
The IDs OneTag reports must be the same IDs your feed sends. Criteo scores the overlap as a match rate. It asks you to keep it above 80 percent and says that below 60 percent campaign performance suffers. A mismatch does not stop the campaign. It makes it quietly worse. Use the same product ID in both places, and never change an ID once a product is live.
The fields Criteo reads
Criteo publishes its own column names: id, title, description, link, image_link, price, retailprice, availability, gtin, mpn, item_group_id, brand, google_product_category and product_type. It also accepts name, producturl and bigimage for the title, link and image, so a feed written for an older spec still parses.
- The ID is strict. Up to 50 characters, plain ASCII, no quotation marks. A quote mark inside an ID breaks Criteo’s parser. One ID per variant, different from the
item_group_id, and stable for life. - A barcode or a part number. Criteo wants
gtinormpnon every product. One of the two is enough. - Variants share an
item_group_id. Without it Criteo treats every size and colour as a separate product. A catalog of standalone products does not need it. - Images at least 800 by 800 pixels, under 16 MB, as PNG, GIF or JPEG.
- Three availability values.
in stock,out of stockandpreorder. There is no backorder. Criteo leaves out-of-stock products out of its banners entirely. - Any of four formats. XML, CSV, TSV or JSON. Criteo names the Google XML feed format specifically, so an existing Google or Meta feed file is accepted as it is.
The price pair runs the other way
This is the mistake that puts every sale item in your banners at full price. In a Google feed, price is the regular price and sale_price is the discount. In a Criteo feed, price is what the shopper pays today, after any discount, and retailprice is the regular price before it.
Copy a Google mapping name for name and the chair that is 199 this week goes out as 249, with no saving to show. Every product gets a retailprice. When nothing is discounted it simply equals the price.
Getting the feed into Criteo
- Get an account. Criteo GO, the self-serve signup, is available in the United States and the United Kingdom as of mid-2026. Everywhere else, including the Nordics and the rest of Europe, Criteo’s own team sets the account up after a contract. A published feed URL is the useful half you bring to that conversation.
- Add the feed. In Criteo’s Management Center, open the product catalog’s Feeds page, add a feed, choose a product feed URL and paste yours. Criteo shows a preview of how it read the file before you save, and has a mapping screen if your column names differ.
- Schedule the imports. Criteo reads the file up to four times a day, at times you set in UTC. A change you publish reaches Criteo at the next scheduled read. Leave at least one import scheduled, or the feed cannot be reactivated.
- Mind the two switches. Compressing the feed changes its address, and Criteo needs its own compressed-feed setting on to match. Criteo can also block an import when too many products would become non-displayable at once. That is a safety net, worth knowing before a big clear-out.
Your ad templates will not show in Criteo banners
Criteo composites its own banner from the catalog, in its own layouts. A finished ad in the image column would be a banner inside a banner. Send the product photo, or the cutout with the background removed, and let Criteo lay it out. There is no video field in Criteo’s catalog, and no layout that shows a second image of the same product. One clean photo per product is what works.
Send Criteo a catalog it can build from
Renable imports the feed your store already exports and publishes a Criteo feed next to your Google, Meta and TikTok feeds, from one catalog. The Criteo channel starts with Criteo’s columns and the price pair bound the way Criteo reads it, so nobody has to remember which way round it goes.
- Stock that is current. A starter rule sets availability to out of stock when a product sells out or its content is incomplete, so Criteo holds it back instead of showing it badly. The feed is re-read from your store every hour.
- IDs that parse. Renable checks the length and characters of every ID and calls out the ones Criteo would choke on.
- Gaps you can see. The channel’s Fields tab shows the fill rate for each field from the last run. Watch
gtinandmpnas a pair. - Photos Criteo can build with. Process your images and the channel can send the cutout instead of the raw pack shot, with the original as the fallback.
On Shopify, Criteo’s own app connects the feed and installs OneTag for you. What a Renable channel adds is the catalog itself: cleaner titles, barcode coverage, processed images and the right price pair, managed in the same place as every other channel.
Or say it to Aimée, the AI agent inside Renable.
Aimée
Set up a Criteo feed for Pinecraft. Store: pinecrafthome.com
Drafted: Criteo feed
1,208 products, CSV, hosted feed URL
price ← selling price, retailprice ← regular price
Availability rule: out of stock at zero
Two things before you hand this to Criteo. 14 products have neither a gtin nor an mpn, so I set brand and mpn from the supplier SKU on those. And OneTag has to be on your store. I can’t install it or see whether it is there.
The setup details are in the help center: The Criteo feed. See how Renable works with Criteo
Are your Criteo banners showing the right price?
Connect your feed and Aimée drafts the Criteo channel with the price pair the right way round. Every account starts with a 30-day free trial.