Overview of Criteo Product Feeds
Criteo is a performance marketing platform that uses product feeds to power dynamic retargeting campaigns, product recommendations, and sponsored product listings. Merchants submit structured product data to Criteo, which then displays personalised product ads to users across the web based on their browsing behaviour and purchase history.
Unlike general marketplaces, Criteo focuses on driving conversions through targeted advertising. Your feed quality directly affects campaign performance, ad approval rates, and the accuracy of product matching when Criteo shows ads to potential customers. A well-maintained feed ensures your products appear in the right context, with correct pricing and availability, leading to higher click-through rates and lower cost-per-acquisition.
Core Feed Fields and Requirements
Essential Identification Fields
These fields form the foundation of every product record and determine whether Criteo can uniquely identify and track your items.
id is a unique identifier for each product variant. This must be stable across all feed submissions, as Criteo uses it to match product data updates and track performance. If you change an id, Criteo treats it as a new product. Use SKUs or internal product codes that remain constant even if prices or availability change.
title should be descriptive, concise, and include the key product attributes that users search for. Criteo uses the title for keyword matching when users browse. Avoid excessive capitalisation, special characters, or redundant information. Keep titles under 150 characters for optimal display in ads. Example: 'Blue Cotton T-Shirt Size M' is better than 'BLUE COTTON T SHIRT SIZE M - BEST QUALITY EVER'.
brand is the manufacturer or product line name. This field helps Criteo segment campaigns by brand and allows filters in your account dashboard. Provide the official brand name as it appears on packaging or the retailer's website.
link must be a direct, working URL to the product's page on your website. Criteo uses this to create clickable ads that send users to the correct product. The URL must be publicly accessible, load within 3 seconds, and remain stable. If your website requires session cookies or has region-blocking, Criteo may fail to crawl the page, affecting ad quality approval.
image_link should point to a high-quality product image that clearly shows the item. Criteo uses this image in ads, so quality matters for click-through rates. The image must be at least 100 x 100 pixels (ideally 300 x 300 or larger), be a standard format (JPEG, PNG, GIF, WebP), and load within 3 seconds. Avoid watermarks, text overlays, or lifestyle photography that obscures the product. If the image is broken or missing, Criteo may reject the product or use a placeholder, reducing ad performance.
additional_image_link allows you to provide multiple product images separated by commas. Criteo may use these in carousel ads or product detail views. Include images showing different angles, colours, or use cases. Each URL must meet the same technical requirements as image_link.
Product Classification
These fields help Criteo categorise your products and match them to user intent and advertiser policies.
google_product_category is a numerical category code from Google's taxonomy. Criteo uses this to ensure products are shown in contextually appropriate campaigns and to apply category-specific policies (for example, ads for alcohol or pharmaceuticals have stricter rules). You must use valid category IDs from the official Google taxonomy. Invalid or missing categories can result in product disapprovals or reduced visibility. Examples: 212 (Apparel & Accessories), 1165 (Home & Garden > Furniture), 5 (Electronics & Computers).
product_type is your own internal category hierarchy, separate from google_product_category. Use this to reflect your website's navigation structure. Example: 'Clothing > Tops > T-Shirts'. This helps Criteo understand your product range and can improve targeting within your account.
condition indicates whether the product is new, refurbished, or used. Criteo uses this to filter campaigns by condition and to comply with advertiser policies that may restrict used goods. Valid values are 'new', 'refurbished', or 'used'. If omitted, Criteo assumes 'new'. Incorrect condition values can trigger policy violations, especially for high-value or sensitive categories.
Pricing and Availability
These fields determine whether your products are eligible for ads and how Criteo calculates ROI.
price is the current selling price in the currency of your feed. Format as a decimal number with the currency code (for example, 'GBP 19.99' or '19.99'). Criteo uses this price to calculate advertiser ROI and to display pricing in ads. If price is missing or invalid, Criteo cannot approve the product. Ensure prices match your website in real time; stale prices harm user trust and increase return rates.
sale_price is a temporary promotional price, lower than price. Include this only when actively running a promotion. Format as a decimal with currency code, matching the price format. Criteo displays sale_price in ads when present, which can improve click-through rates.
sale_price_effective_date specifies the start and end dates for a sale price in ISO 8601 format (YYYY-MM-DDTHH:MM:SS/YYYY-MM-DDTHH:MM:SS). Example: '2024-12-01T00:00:00/2024-12-31T23:59:59'. If you omit this field, Criteo assumes the sale price is permanent. Always include this field when providing sale_price to prevent confusion and policy violations.
availability indicates stock status: 'in stock', 'out of stock', 'preorder', or 'backorder'. Criteo uses this to suppress ads for unavailable items, reducing wasted ad spend and user frustration. If availability is 'out of stock' but the product remains in your feed, Criteo will not show ads for it. Update availability daily or in real time to reflect current stock levels.
availability_date specifies when a preorder or backorder item will be in stock, in ISO 8601 format (YYYY-MM-DD). Use this only when availability is 'preorder' or 'backorder'. Example: '2024-12-15'. This date helps users understand when they can expect delivery.
expiration_date is the date after which the product should no longer appear in ads, in ISO 8601 format (YYYY-MM-DD). Use this for seasonal items, limited editions, or products you plan to discontinue. Criteo will automatically suppress ads after this date without requiring a manual feed update.
Product Identification and Tracking
gtin is the Global Trade Item Number (barcode), typically a 12 or 13 digit code. Criteo uses this to match your products with third-party data sources, verify authenticity, and prevent counterfeit or grey-market listings. If you sell branded products, providing gtin is strongly recommended. Incorrect or missing gtins can result in product disapprovals, especially in regulated categories like beauty or electronics.
mpn is the Manufacturer Part Number, a code assigned by the product's manufacturer. Use this when gtin is unavailable or when you need to distinguish between variants. Criteo uses mpn as a fallback identifier for product matching. For example, a shirt might have gtin '5901234123457' and mpn 'SHIRT-BLUE-M'.
item_group_id groups product variants (different sizes, colours, or materials) under a single logical product. All variants of the same item should share the same item_group_id. Criteo uses this to consolidate variant-level performance data and to show users a single product card with variant selectors in ads. Example: all sizes and colours of a specific shirt model would have the same item_group_id.
Product Attributes
These optional fields provide detailed product characteristics that improve targeting, filtering, and user experience in ads.
description is a longer text summary of the product, up to 5000 characters. Include key features, materials, dimensions, and use cases. Criteo may use this text for keyword matching and to generate product descriptions in ads. Write for clarity, not for search engine optimisation.
colour is the product's colour or colour(s). Use standard colour names (for example, 'blue', 'red', 'multi-colour'). If a product comes in multiple colours, list them separated by a forward slash (for example, 'blue/red'). This field is particularly important for apparel and home goods, where colour is a primary search criterion.
size is the product's size in the relevant unit (for example, 'M', 'Large', '10', '42 cm'). Use the format that matches your website's product pages. If a product is available in multiple sizes, provide only the size for this specific variant; if you're submitting a single feed entry for all sizes, list them separated by a forward slash.
size_type clarifies the size system used (for example, 'regular', 'petite', 'plus', 'big & tall'). This is especially relevant for apparel.
size_system specifies the sizing standard (for example, 'US', 'EU', 'UK', 'International'). This helps users understand how to interpret the size field.
material describes the product's primary material (for example, 'cotton', 'leather', 'polyester'). For multi-material products, list the main materials separated by a forward slash.
pattern is the product's pattern or design (for example, 'striped', 'floral', 'solid'). This is useful for apparel and home furnishings.
gender indicates the target gender (for example, 'male', 'female', 'unisex'). Use this for apparel and other gender-specific products.
age_group specifies the intended age group (for example, 'newborn', 'infant', 'toddler', 'kids', 'adult'). This is important for children's products and toys.
mobile_link is an optional mobile-specific URL that overrides link on mobile devices. Use this if your mobile website has a different URL structure or if you want to direct mobile users to a mobile-optimised page. If omitted, Criteo uses the link field for all devices.
Cost and Pricing Metrics
cost_of_goods_sold is your cost to acquire or produce the product, used for ROI calculations. Provide this as a decimal number with currency code (for example, 'GBP 5.00'). Criteo uses this to calculate profit and return on advertising spend at the product level. Accurate cost data helps you understand which products are most profitable to advertise.
unit_pricing_measure is the quantity or measurement for bulk-priced items (for example, '500 ml', '1 kg', '12 pack'). Use this when the product is sold by volume, weight, or count.
unit_pricing_base_measure is the standard unit for comparison pricing (for example, '100 ml', '1 kg', '1 item'). Together with unit_pricing_measure, this allows users to compare price-per-unit across products. For example, a 500 ml bottle with unit_pricing_measure '500 ml' and unit_pricing_base_measure '100 ml' helps users see the price per 100 ml.
Feed Format and Submission
Criteo accepts product feeds in CSV, XML, or TSV format. Your feed should be submitted via SFTP, HTTP POST, or Criteo's web interface. The platform supports both full feeds (all products) and incremental feeds (only changed products).
Full feeds should be submitted at least weekly, ideally daily. Incremental feeds can be submitted more frequently (hourly or in real time) to keep pricing and availability current. Criteo processes feeds asynchronously; expect a 1 to 24 hour delay before feed updates appear in your account.
Ensure your feed file is UTF-8 encoded and properly escaped. CSV feeds should quote fields that contain commas or line breaks. XML feeds must be well-formed and valid. Test your feed format before submitting to production; Criteo will reject malformed feeds with an error message in your account dashboard.
Field Mapping Best Practices
Completeness and Accuracy
Provide all required fields (id, title, link, image_link, availability, price, google_product_category) for every product. Missing required fields result in product disapprovals and wasted ad spend.
Validate data before submission. Check that all URLs are reachable, prices match your website, and availability reflects current stock. Use automated validation tools or scripts to catch common errors like malformed URLs, invalid currency codes, or out-of-range numbers.
Update your feed regularly. Stale data (prices that are weeks old, availability that is incorrect) damages campaign performance and user trust. Implement a daily or real-time feed update process to keep Criteo in sync with your inventory system.
Optimising for Performance
Include optional attribute fields (colour, size, material, gender, age_group) when relevant. These fields improve ad targeting and allow users to filter products by attributes they care about, increasing relevance and click-through rates.
Provide high-quality images. Test image_link URLs to ensure they load quickly and display correctly. Use product photos that show the item clearly, from a consistent angle, with good lighting. Avoid lifestyle photography or heavy text overlays that obscure the product.
Use descriptive titles and descriptions. Include key product attributes (brand, type, size, colour) in the title so Criteo can match user searches accurately. Write descriptions for humans, not search engines; focus on features and benefits that help users decide whether to click.
Maintain consistent naming conventions. Use the same brand names, colour names, and size formats across all products. Inconsistency confuses Criteo's matching algorithms and makes filtering harder for users.
Handling Complex Product Structures
For products with variants (different sizes or colours), decide whether to submit each variant as a separate product (separate id) or as a single product with multiple values in attribute fields.
Submitting each variant separately allows Criteo to track performance by variant and show users ads for the exact size or colour they viewed. Use item_group_id to group variants together. This approach requires more feed entries but provides better data.
Submitting a single entry with multiple attribute values (for example, size 'S/M/L/XL') is simpler but prevents variant-level tracking. Criteo treats this as a single product and cannot tell which size the user clicked on.
For most retailers, submitting variants separately is recommended. This allows better campaign optimisation and user experience.
Validation and Troubleshooting
Criteo provides a feed validation report in your account dashboard. Check this regularly for warnings and errors.
Common issues include:
- Missing required fields: Add all required fields to every product.
- Invalid URLs: Ensure all link and image_link URLs are publicly accessible and return HTTP 200.
- Incorrect currency format: Use the correct currency code and decimal format for your region.
- Invalid category codes: Verify google_product_category codes against Google's official taxonomy.
- Disapproved products: Review the disapproval reason in your account. Common causes are policy violations (counterfeit, restricted categories), missing images, or broken links. Fix the underlying issue and resubmit the product.
If you encounter persistent issues, contact Criteo support with your feed file and account details. Provide specific examples of products that are failing validation.
Summary
Criteo product feeds are the foundation of your advertising performance on the platform. A well-structured feed with complete, accurate data ensures your products are approved quickly, displayed to the right users, and tracked accurately for ROI measurement.
Focus on providing all required fields correctly, keeping data current, and including optional attributes that improve targeting. Test your feed before submission, validate data regularly, and monitor Criteo's feedback for disapprovals or warnings.
By following these guidelines, you will maximise product visibility, reduce disapprovals, and improve campaign performance across Criteo's advertising network.