The Feedance AI features is rolling out.
Check it out!

What is Criteo?

Criteo is a commerce media and advertising platform built around Dynamic Retargeting: it shows shoppers ads for the exact products they viewed or added to cart, assembled in real time from a merchant's product data. Instead of static creatives, Criteo generates each ad on the fly by combining a visitor's browsing behavior with the matching product entry in your feed -- price, image, title, availability -- so the ad a shopper sees always reflects what is actually in your catalog. Criteo calls this catalog of products the Product Catalog, and the source files that feed it are the Product Feed.

Because every ad Criteo serves is generated from your feed at the moment of the impression, the feed is not a one-time upload -- it is the live inventory source that determines which products can be advertised, at what price, and to whom.

Why connect your product feed to Criteo?

Criteo's Dynamic Ads only work if the platform has an accurate, current picture of your catalog. Connecting your feed matters because it directly controls what shoppers are shown:

  1. Ads are rebuilt from live feed data, so price changes, sold-out items, and new arrivals are reflected automatically instead of showing stale offers.
  2. Criteo's availability, price, and sale_price fields let the platform avoid retargeting people with products that are out of stock or no longer discounted.
  3. Fields like item_group_id let Criteo understand that a red size-M shirt and a blue size-L shirt are variants of the same product, which keeps dynamic ad units from showing near-duplicate items instead of a useful range.
  4. Catalog Health and Feed Compliance reporting inside Criteo's Product Catalog Overview surface which products are actually eligible to serve, so feed quality has a direct, visible line to how much of your catalog can be advertised at all.

How Criteo's OneTag and your feed work together

Criteo's retargeting depends on two pieces working in sync: the Product Feed (what can be advertised) and the Criteo OneTag (who sees it and why). OneTag is a lightweight, asynchronous JavaScript tag installed across a site's product, listing, cart, and confirmation pages. It fires events -- page views, cart adds, purchases -- tagged with product identifiers, and Criteo matches those identifiers against the id field in your feed.

This is why product IDs have to be stable and consistent between your website and your feed: if OneTag reports an interaction with a product ID that does not exist in the current feed, or that ID has changed since the last import, Criteo cannot resolve which product to retarget the shopper with, and that impression opportunity is lost. Criteo's Quick Start guide frames this as a strict sequence: import the product catalog first, verify OneTag is firing correctly second, then add conversion events before building the first ad set -- because a campaign built on top of a broken feed-to-tag match will not have accurate inventory to serve.

What feed format does Criteo require?

Criteo accepts product data in three file formats and several delivery methods, so most merchants can reuse an existing Google Shopping or Meta-style feed without reformatting it:

  1. CSV or TSV -- a delimited file with a header row; headers must be lowercase and use underscores instead of spaces.
  2. XML -- a valid document declared with <?xml version="1.0" encoding="UTF-8"?>, with each product as its own node.
  3. JSON -- an array of product objects (for example a top-level list where each entry carries id, title, price, and availability).

Feeds can be delivered by connecting an ecommerce platform (such as Shopify, Magento, or PrestaShop) directly, by hosting the file at a URL Criteo polls, by uploading to Criteo's own SFTP server, by exposing your own SFTP server, or via an HTTP(S) GET endpoint. Files can be compressed as .zip or .gz, and Criteo recommends appending a datestamp (for example _yyyyMMdd) to filenames so successive uploads don't overwrite each other before processing. Criteo also sets a soft cap of roughly 10GB per feed file.

Which product attributes does Criteo require?

The table below reflects Criteo's own Product Feed Parameters documentation. mpn and gtin are conditionally required (at least one of the two must be present), and item_group_id, while not strictly mandatory, is treated as functionally required for any product with size/color variants.

FieldRequiredFormatExampleNotes
idYesString, up to 50 characters25c48Unique per product variant; must stay stable between feed updates and OneTag events, or retargeting attribution breaks.
titleYesString, up to 500 charactersWorking Boots - Size 7.5Must start with a letter or number; shown directly on dynamic ad creatives.
descriptionYesString, up to 5000 charactersWaterproof leather boots with reinforced soleHTML tags must be stripped out before submission.
linkYesURL, up to 2000 charactershttps://www.example.com/ProductAMust include http:// or https:// and be URL-encoded; the Criteo OneTag must be present on this domain.
image_linkYesURL, up to 2000 charactershttps://www.example.com/image.pngRecommended minimum 800x800px, under 16MB, served as PNG, JPEG, or GIF.
priceYesNumber, up to 14 characters19.99Period as decimal separator, no thousands separator or currency symbol in the value itself.
availabilityYesString, up to 25 charactersin stockMust be one of: in stock, out of stock, preorder.
brandYesString, up to 70 charactersAdidasShould be consistent across the catalog; a blank value can cause Criteo to fall back to including the SKU instead.
mpn / gtinConditionalString, 70 / 50 charactersT49025028767898 / 00012345678905At least one of the two is required if the other is absent.
product_typeYesString, up to 10240 charactersComputing > Keyboards > MiceUp to 10 category levels, separated by >.
item_group_idRecommended (functionally required for variants)String, up to 50 charactersSHIRT-001Groups color/size variants of the same product; without it Criteo can treat each variant as a separate item and duplicate ad placements.
google_product_categoryRecommendedString, up to 750 characters166 or Apparel & Accessories > ShoesUses Google's product taxonomy; catalogs that never populate this field commonly see products rejected at import.

How to connect Criteo with Feedance

  1. In Feedance, generate a Criteo-mapped feed export in CSV, XML, or JSON, making sure every required field from the table above -- especially id, item_group_id, and google_product_category -- is populated, since these three drive whether variants and categories are handled correctly on Criteo's side.
  2. Choose a delivery method that matches your Criteo setup: host the Feedance feed URL for Criteo to poll, or push it to Criteo's SFTP if your account manager has provisioned server credentials.
  3. In Criteo's Commerce Growth platform, go to Assets → Product Catalog, add your Feedance feed URL (or SFTP path), and run Test Setup so Criteo can sample the file and propose format, field mapping, and any rules.
  4. Review the suggested field mapping in the Feed Preview tab, confirm it lines up with your Feedance export columns, and click Import to Catalog to activate the connection and schedule recurring imports.
  5. Confirm the Criteo OneTag is live on your storefront -- Criteo's own onboarding sequence treats catalog import and OneTag verification as the two prerequisites that must both be working before a dynamic ad set is built.

How often should your Criteo feed update?

Criteo lets you schedule up to four imports per day (times set in UTC), and for supported flat-file connections it can process updates as frequently as hourly, though Criteo's own guidance is to schedule at least one import daily as a baseline. Once a schedule is set, catalog data refreshes automatically at those times without manual re-triggering. Criteo also distinguishes three import types worth matching to your update strategy: a Full Import (replaces the entire catalog, the default), an Incremental Feed (adds or updates specific products without a full replace), and a Deleted Feed (removes specified products). For a feed managed through Feedance, running at least one full daily sync -- more often if pricing or stock levels change intraday -- keeps availability and price fields aligned with what OneTag-triggered ads will actually show.

Common Criteo feed errors and how to fix them

Criteo's own Product Catalog Troubleshooting guide groups feed ingestion problems into four categories, plus two specific field-level issues that feed-management practitioners consistently flag as top causes of partial catalog rejection:

Error categoryTypical causeFix
CredentialsAuthentication or access-rights failure on the feed source (expired SFTP login, revoked API key, wrong permissions).Re-verify the credentials or connection details Criteo uses to reach your feed, and update them if the source has changed.
DownloadsCriteo could not retrieve the feed file at import time -- file missing, network interruption, pagination issue, or timeout.Confirm the feed is reachable and fully generated at the scheduled import time, and that large feeds aren't timing out mid-download.
FTP servicesConnection or file-transfer failures specific to FTP/SFTP delivery.Check host, port, and directory path settings, and confirm the file transfer completes before the scheduled import runs.
ParsingThe file downloads but Criteo cannot read or interpret it -- wrong format, malformed XML/CSV structure, or headers that don't match the expected schema.Validate the file matches the declared format (CSV, XML, or JSON) and that headers are lowercase with underscores, not spaces.
Missing item_group_idVariant products (different sizes or colors of the same item) are submitted without a shared group ID.Populate item_group_id with a value shared across all variants of the same base product.
Missing or blank google_product_categoryCatalogs built without a Google Merchant Center feed as a source often never populate this field, and affected products are rejected at import.Map each product to the closest Google product taxonomy category or ID before submitting the feed.

To see which specific errors are active on your account, Criteo's guide points to Assets → Product Catalog → Overview → Imports, where individual errors can be opened for detail.

Criteo feed optimization tips

  1. Keep id values permanently stable. Because OneTag events and feed rows are matched on this field, changing IDs between imports breaks the link between a shopper's browsing history and the product Criteo should retarget them with.
  2. Populate item_group_id for every variant product from day one rather than adding it later -- Criteo uses it to avoid serving near-duplicate items in the same dynamic ad unit.
  3. Map to google_product_category even if you already have a custom product_type taxonomy; Criteo's category logic is built around Google's taxonomy, and skipping this field is a common cause of otherwise-healthy products being rejected.
  4. Keep price and availability in the feed exactly in sync with the live landing page -- Criteo explicitly checks that submitted price matches what a shopper finds on the linked page.
  5. Use the Full / Incremental / Deleted import types deliberately: reserve Incremental Feeds for fast-moving price or stock changes, and use a Deleted Feed to promptly pull discontinued products rather than leaving them to fall out on the next full import.
  6. Review Criteo's Catalog Health and Feed Compliance panels after every schedule change -- they report which products are actually eligible to serve, which is the fastest way to catch a field-mapping regression before it affects live campaigns.

Frequently asked questions

Does Criteo support the same feed I already use for Google Shopping or Meta?
Often yes -- Criteo's own setup guidance notes that if you already have a Google or Facebook-formatted product feed, it can typically be reused without reformatting, since Criteo accepts Google Feed-style CSV and XML.

What feed formats does Criteo accept?
CSV/TSV, XML, and JSON, delivered via an ecommerce platform connection, a hosted feed URL, Criteo's own SFTP, your own SFTP, or an HTTP(S) GET endpoint.

How often does Criteo re-import my feed?
Up to four scheduled imports per day (set in UTC); some flat-file connections can be processed as often as hourly, but Criteo recommends at least one import daily as a minimum.

Why are some of my products missing from Criteo ads even though they're in the feed?
The most common causes are a missing or invalid google_product_category, a missing item_group_id on variant products, or a mismatch between the feed's price/availability and what OneTag detects on the live landing page.

Is the Criteo OneTag required, or is the feed enough on its own?
Both are required. The feed defines which products can be advertised; OneTag reports which shoppers interacted with which product IDs. Criteo's Quick Start guide treats importing the catalog and verifying OneTag as the two prerequisites before any ad set can be built.

What's the difference between a Full, Incremental, and Deleted import?
A Full Import replaces the entire catalog and is the default; an Incremental Feed adds or updates specific products without a full replace; a Deleted Feed removes specified products from the live catalog.

Is there a file size limit for Criteo feeds?
Criteo documents a soft cap of roughly 10GB per feed file, and supports .zip or .gz compression across all delivery methods.

Schedule your 15-minute demo now

Schedule my demo

We’ll tailor your demo to your immediate needs and answer all your questions. Get ready to see how it works!