What is Criteo and Why Product Feeds Matter
Criteo is a performance marketing platform that uses product data feeds to power retargeting campaigns, dynamic product ads, and audience building across the web. Unlike general marketplaces, Criteo relies entirely on the accuracy and completeness of your product feed to match inventory with user behaviour, display relevant ads, and track conversions.
Merchants use Criteo feeds to reach users who have visited their site or engaged with their products. The platform then displays personalised ads featuring those exact products across thousands of publisher websites. Feed quality directly affects ad approval rates, campaign performance, and your ability to reach high-intent audiences. A poorly structured feed results in rejected products, missing attributes, and significantly lower campaign reach.
Criteo accepts product feeds in TSV, XML, and CSV formats, typically updated daily or weekly depending on inventory volatility. The platform validates feeds against strict requirements before activation, so understanding field specifications and common validation errors is essential for smooth onboarding.
Core Product Identification Fields
These fields establish the unique identity of each product and must be present and valid in every feed submission.
id is your internal product identifier. This must be unique within your feed and remain consistent across all updates. Criteo uses this field to match products in your feed to user behaviour on your website. If you change product IDs between submissions, Criteo treats them as new products, losing all historical performance data and audience associations. Use alphanumeric values up to 50 characters. Do not use special characters or spaces.
title is the product name displayed in ads. Criteo requires titles between 1 and 150 characters. Titles should be descriptive enough for users to recognise the product but concise enough to fit ad creatives. Avoid keyword stuffing, promotional language, or special characters. A title like 'Blue Cotton T-Shirt Size M' works better than 'AMAZING BLUE SHIRT - BEST PRICE ONLINE NOW'. Vague titles like 'Product' or 'Item' cause ads to be rejected or underperform because users cannot identify what they are viewing.
description provides detailed product information. Criteo allows up to 5000 characters. Include key attributes, materials, dimensions, and use cases. Descriptions should be factual and match your website content. Avoid duplicate content from the title field. Criteo uses descriptions to improve ad relevance and to populate expanded text in certain ad formats. Missing or generic descriptions reduce click-through rates because users lack sufficient information to make purchase decisions.
link is the direct URL to the product page on your website. This must be a valid, working URL that leads directly to the product, not a category page or homepage. Criteo uses this URL to send users who click ads directly to the product. Broken or incorrect links cause high bounce rates and ad disapprovals. Test every link before submission. Use absolute URLs (starting with http:// or https://) and ensure URLs do not exceed 2000 characters.
gtin is the Global Trade Item Number (barcode). This field accepts EAN, UPC, ISBN, or JAN codes depending on your region. Criteo uses GTIN to match products across different data sources and to prevent duplicate listings. If you supply a GTIN, it must be accurate and match the physical product. Incorrect GTINs cause products to be flagged as duplicates or mismatched during validation. For products without a standard barcode (custom items, digital goods), you may omit this field, but providing it improves data quality and matching accuracy.
mpn is the manufacturer part number. This is the SKU or model number assigned by the product manufacturer. Unlike GTIN, which is universal, MPN is manufacturer-specific. Criteo uses MPN to identify variants and to cross-reference products. For branded products, always supply the official MPN if available. For private label or unbranded items, this field is optional.
Pricing and Availability Fields
These fields control how products appear in ads and whether they are eligible for campaigns.
price is the current selling price in your store's currency. Criteo requires this field for every product. Format prices as a decimal number with up to two decimal places (for example, 19.99). Include the currency code as a separate field if your feed format supports it (for example, GBP). The price field must always reflect the actual price a user would pay at checkout. If you omit price or supply an incorrect value, Criteo rejects the product. If your price is significantly lower than market rates, Criteo may flag the product as suspicious during validation.
sale_price is a temporary reduced price. Use this field only when the product is actively discounted. The sale_price must be lower than the price field. Criteo displays sale_price prominently in ads to highlight discounts and improve click-through rates. Do not populate sale_price unless the discount is genuine and time-limited. Consistently showing sale prices that match regular prices trains users to ignore discount signals and reduces campaign performance.
sale_price_effective_date specifies when the sale_price is valid. Format this as start_date/end_date (for example, 2024-01-15/2024-01-31). Criteo uses this date range to display sale prices only during the promotion period. If you omit this field when supplying sale_price, Criteo assumes the discount is permanent, which may confuse users or cause validation errors. Always pair sale_price with a valid effective date range.
availability indicates whether the product is in stock. Accepted values are 'in stock', 'out of stock', and 'preorder'. Criteo only displays ads for products marked 'in stock' unless you are running a preorder campaign. If you mark products as 'out of stock' but they remain in your feed, Criteo suppresses ads for those products. Updating availability daily is critical for retailers with fluctuating inventory. If a user clicks an ad and discovers the product is out of stock, they leave without converting, wasting ad spend and damaging campaign metrics.
availability_date specifies when an out-of-stock or preorder product becomes available. Use the format YYYY-MM-DD (for example, 2024-02-28). Criteo uses this date to reactivate ads automatically when stock is expected. For preorder products, supply both availability set to 'preorder' and availability_date set to the expected ship date. This field is optional for in-stock products.
Product Categorisation and Attributes
These fields help Criteo understand your product and improve ad targeting and relevance.
google_product_category is the standardised product category from Google's taxonomy. Criteo requires this field and accepts only valid Google category IDs or full category paths. Examples include 'Apparel & Accessories > Clothing > Shirts & Tops' or the numeric ID '185'. Using incorrect or mismatched categories causes products to be rejected or placed in irrelevant ad groups. Spend time mapping your internal categories to Google's taxonomy. Use Google's category reference tool to find the correct path for each product. Overly broad categories (like 'Apparel & Accessories') are accepted but reduce targeting precision.
product_type is your internal product category. Unlike google_product_category, this field accepts any text value and reflects your own category structure. Criteo uses product_type for organisational purposes and to help you segment campaign performance. Examples include 'Men's Casual Shirts', 'Winter Coats', or 'Running Shoes'. This field is optional but recommended for merchants with large catalogues.
brand is the manufacturer or brand name. Criteo requires this field for most products. If the product is unbranded or private label, supply your store name or a generic value like 'Unbranded'. Brand is used for ad targeting, audience segmentation, and to prevent trademark violations. Incorrect or missing brand information can cause ads to be rejected if they compete with official brand campaigns.
condition specifies whether the product is new, refurbished, or used. Accepted values are 'new', 'refurbished', and 'used'. Criteo uses condition to set user expectations and to comply with advertising policies. Selling used items as new violates advertising standards and causes ads to be disapproved. If you sell refurbished goods, always mark condition as 'refurbished' and disclose this in your product description.
Product Variants and Attributes
These fields describe product variations and physical characteristics.
item_group_id groups related product variants under a single parent ID. If you sell a shirt in multiple colours and sizes, assign the same item_group_id to each variant but unique id values to each SKU. Criteo uses item_group_id to display variant options in ads and to consolidate performance data. Omitting item_group_id when you have variants causes each SKU to be treated as a separate product, fragmenting your audience and complicating campaign management.
color is the product colour. Supply the primary colour or, for multi-colour products, the dominant colour. Criteo uses colour for filtering and for matching user preferences. Colour is optional but improves ad relevance, especially for fashion and home goods.
size is the product size. Use standard sizing conventions for your category (for example, 'S', 'M', 'L' for clothing or '10cm x 15cm' for physical dimensions). Criteo displays size information in ads and uses it to match user preferences. If your product has multiple sizes, create separate feed entries for each size with unique id values and the same item_group_id.
size_type clarifies the sizing standard. Accepted values include 'regular', 'petite', 'plus', 'big and tall', and 'maternity' for clothing. This field helps Criteo match products to users searching for specific fit types. For non-clothing products, this field is optional.
size_system specifies the sizing convention (for example, 'US', 'EU', 'UK', 'International'). This is critical for international merchants or products sold across regions. A size 'M' means different things in US versus European sizing. Supplying size_system prevents user confusion and reduces return rates.
material describes what the product is made from. Examples include 'cotton', 'polyester', 'leather', or 'stainless steel'. Material is optional but valuable for products where material affects purchase decisions (clothing, furniture, kitchenware).
pattern describes the visual pattern (for example, 'striped', 'floral', 'solid', 'checkered'). This field is optional and most relevant for apparel and home goods.
gender specifies the intended wearer or user (for example, 'male', 'female', 'unisex'). Criteo uses gender to refine audience targeting. Do not use this field for products that are not gender-specific (most home goods, electronics, books).
age_group specifies the intended age range. Accepted values are 'newborn', 'infant', 'toddler', 'kids', 'adult'. Use this field for products marketed to specific age groups. For general products, omit this field.
Image and Media Fields
Product images are critical for ad performance and approval.
image_link is the URL of the primary product image. Criteo requires at least one image for every product. Images must be at least 100 x 100 pixels, though 500 x 500 pixels or larger is recommended for quality. Supported formats are JPEG, PNG, GIF, and WebP. Images must be accessible via public URL and not require authentication. Use a direct link to the image file, not a page containing the image. Poor quality, blurry, or misleading images cause ads to be rejected or underperform. Test every image link before submission to ensure it loads correctly and displays the product clearly.
additional_image_link supplies up to 10 additional product images. Separate multiple URLs with commas. Criteo uses additional images in carousel ads and to provide users with multiple product views. Including 3-5 additional images significantly improves click-through rates and conversion rates. Ensure all additional images are high quality and show the product from different angles or in use.
Advanced Fields for Specific Use Cases
mobile_link is an alternative URL optimised for mobile devices. If your mobile site uses a different URL structure than your desktop site, supply the mobile URL here. Criteo uses this URL when displaying ads to mobile users. If you omit mobile_link, Criteo uses the link field for all devices. For retailers with separate mobile domains, supplying mobile_link is essential to avoid redirect chains and slow page loads.
cost_of_goods_sold is your internal cost to acquire or produce the product. This field is optional and not visible to users. Criteo uses COGS data to help you optimise bidding and to calculate profit margins. Supplying COGS allows Criteo to recommend bid adjustments that maximise profitability rather than just revenue.
expiration_date specifies when the product should be removed from your feed (for example, limited-edition items, seasonal goods, or discontinued products). Format this as YYYY-MM-DD. Criteo automatically suppresses ads for products past their expiration_date. This prevents ads from running after a promotion ends or after inventory is depleted.
unit_pricing_measure and unit_pricing_base_measure are used for products sold by unit (for example, food, cleaning supplies). unit_pricing_measure is the price per unit (for example, '2.5 kg'), and unit_pricing_base_measure is the base unit for comparison (for example, '1 kg'). These fields help users compare prices across different package sizes. Include these fields only if your product is priced per unit and the unit varies.
Practical Feed Submission and Validation
Before submitting your feed to Criteo, validate it against these requirements.
Use a feed validation tool to check for structural errors, missing required fields, and invalid values. Most merchants use their platform's built-in validator or a third-party tool like Google Merchant Centre to test feeds before Criteo submission. Common validation errors include missing required fields (id, title, link, image_link, price, availability, google_product_category, brand), malformed URLs, invalid currency formats, and character encoding issues.
Ensure your feed updates are regular and timely. For retailers with frequent inventory changes, daily updates are essential. For static catalogues, weekly updates are acceptable. Stale feed data causes ads to display out-of-stock products or incorrect prices, wasting ad spend and damaging user trust.
Test product links before submission. Randomly sample 20-30 product links from your feed and verify they load correctly and display the correct product. Broken links cause high bounce rates and ad disapprovals.
Use consistent formatting across all fields. Do not mix currencies, use standardised date formats (YYYY-MM-DD), and follow Criteo's character limits. Inconsistent formatting causes validation errors and requires resubmission.
Monitor feed rejection rates and error logs. Criteo provides detailed reports on why products were rejected. Common reasons include missing images, incorrect prices, invalid categories, and trademark violations. Address these issues in your next feed submission to improve approval rates.
For merchants using feed management platforms (like Akeneo, Salsify, or Shopify), configure mappings between your product database and Criteo's feed fields. Most platforms offer pre-built Criteo connectors that automate field mapping and feed generation, reducing manual errors and submission time.
Summary
Criteo product feeds are the foundation of your performance marketing campaigns on the platform. Every field serves a specific purpose: core identification fields (id, title, link) ensure products are correctly matched and routed; pricing and availability fields (price, sale_price, availability) control ad eligibility and user expectations; categorisation fields (google_product_category, brand) improve targeting and compliance; and attribute fields (colour, size, material) enhance relevance and click-through rates.
Successful Criteo campaigns depend on accurate, complete, and regularly updated feeds. Invest time in mapping your product data correctly, validating feeds before submission, and monitoring rejection reports. Small improvements in feed quality compound into better ad approval rates, higher click-through rates, and improved campaign profitability. Use the field specifications and practical guidance in this article to optimise your Criteo feed and maximise campaign performance.