Criteo Retail Media Delivery calls need partner ID, page-id, and event-type
Criteo documents the Delivery API as GET /delivery/retailmedia. criteo-partner-id is an integer. retailer-visitor-id, page-id, and event-type are required on every call.
addToCart needs page-uid, item, price, and quantity. trackTransaction needs item, price, quantity, and transaction-id. The OneTag loader on dynamic.criteo.com is vendor/criteo.
criteo-partner-id is required on every Delivery API request
Criteo documents criteo-partner-id as required. A call that only carries page-id and event-type is incomplete.
Rule: vendor.criteo-retail-media.param.criteo-partner-id.missing
What this pack matches
Rules
Codes are stable. A finding in CI, MCP, or the playground lands on the same id.
| Field | Required | What it checks | Rule ids | Source |
|---|---|---|---|---|
criteo-partner-id |
required | It is the Criteo partner ID. Criteo documents it as required on every Delivery API request. Fix: Set `criteo-partner-id` to the numeric partner ID from your Criteo technical account manager. | vendor.criteo-retail-media.param.criteo-partner-id.missingvendor.criteo-retail-media.param.criteo-partner-id.emptyvendor.criteo-retail-media.param.criteo-partner-id.invalid |
docs |
retailer-visitor-id |
required | It is a persistent unauthenticated user ID on the same device. Criteo documents it as required on every Delivery API request. Fix: Set `retailer-visitor-id` to a first-party ID that lasts at least 30 days. | vendor.criteo-retail-media.param.retailer-visitor-id.missingvendor.criteo-retail-media.param.retailer-visitor-id.empty |
docs |
page-id |
required | It is the page ID Criteo issued for the placement. Criteo documents it as required on every Delivery API request. Fix: Set `page-id` to the value from your Criteo team, such as `viewHome_API_desktop`. | vendor.criteo-retail-media.param.page-id.missingvendor.criteo-retail-media.param.page-id.empty |
docs |
event-type |
required | It is the page or organic event type. Criteo documents it as required on each page-type request, such as `viewHome`, `addToCart`, or `trackTransaction`. Fix: Set `event-type` to the documented value for the page, such as `viewHome`. | vendor.criteo-retail-media.param.event-type.missingvendor.criteo-retail-media.param.event-type.empty |
docs |
customer-id |
optional | It is the authenticated user ID. Criteo documents it as required when the user is logged in, and empty when they are not. Fix: Set `customer-id` to the logged-in CRM id, or leave it empty for a guest. | vendor.criteo-retail-media.param.customer-id.empty |
docs |
email |
optional | It is the user's email as a SHA-256 hex digest. Criteo documents trimming, cleaning, and lowercasing before hashing. Fix: Send a 64-character lowercase SHA-256 hex digest of the cleaned email. | vendor.criteo-retail-media.param.email.emptyvendor.criteo-retail-media.param.email.invalid |
docs |
page-uid |
optional | It links an organic add-to-cart to the page-load ad request. Criteo documents it as required on `addToCart`. Fix: Set `page-uid` to the value returned on the initial Delivery API call for that page. | vendor.criteo-retail-media.param.page-uid.empty |
docs |
item |
optional | It is the SKU, or a pipe-separated SKU list. Criteo documents it as required on `addToCart` and `trackTransaction`. Fix: Set `item` to the SKU, or to pipe-separated SKUs such as `123|456|789`. | vendor.criteo-retail-media.param.item.empty |
docs |
price |
optional | It is the unit price, or a pipe-separated list aligned with `item`. Criteo documents it as required on `addToCart` and `trackTransaction`. Fix: Send unit prices as numbers, pipe-separated when there is more than one SKU, such as `29.99|15.49`. | vendor.criteo-retail-media.param.price.emptyvendor.criteo-retail-media.param.price.invalid |
docs |
quantity |
optional | It is the quantity, or a pipe-separated list aligned with `item`. Criteo documents it as required on `addToCart` and `trackTransaction`. Cancellations use `0`. Fix: Send integer quantities, pipe-separated when there is more than one SKU. | vendor.criteo-retail-media.param.quantity.emptyvendor.criteo-retail-media.param.quantity.invalid |
docs |
transaction-id |
optional | It is the unique order ID. Criteo documents it as required on `trackTransaction`. Fix: Set `transaction-id` to the order ID, and reuse it for cancellations and modifications. | vendor.criteo-retail-media.param.transaction-id.empty |
docs |
currency |
optional | It is the ISO 4217 currency of the order. Criteo documents it as required only when the retailer sells in more than one currency. Fix: Send a three-letter code such as `USD` or `EUR`. | vendor.criteo-retail-media.param.currency.emptyvendor.criteo-retail-media.param.currency.invalid |
docs |
nocall |
optional | It filters sponsored products, commerce display, or both from the Delivery API response. Fix: Use `oa`, `pd`, or `both`. | vendor.criteo-retail-media.param.nocall.emptyvendor.criteo-retail-media.param.nocall.invalid |
docs |
verbosity |
optional | It is the product-object verbosity in the Delivery API response. Criteo documents `min` and `full`. Fix: Use `min` or `full`. | vendor.criteo-retail-media.param.verbosity.emptyvendor.criteo-retail-media.param.verbosity.invalid |
docs |
device-id |
optional | It is the GAID or IDFA for in-app traffic. Criteo documents it when Offsite is activated. Fix: Send the advertising ID for the device. | vendor.criteo-retail-media.param.device-id.empty |
docs |
device-id-type |
optional | It names the identifier in `device-id`. Criteo documents `gaid` or `idfa`. Fix: Set `device-id-type` to `gaid` or `idfa`. | vendor.criteo-retail-media.param.device-id-type.emptyvendor.criteo-retail-media.param.device-id-type.invalid |
docs |
placement-id |
optional | The vendor documents the JSON shape or value type of this field. | vendor.criteo-retail-media.param.placement-id.empty |
docs |
regionId |
optional | The vendor documents the JSON shape or value type of this field. | vendor.criteo-retail-media.param.regionId.empty |
docs |
implementation |
optional | The vendor documents the JSON shape or value type of this field. | vendor.criteo-retail-media.param.implementation.empty |
docs |
json |
optional | The vendor documents the JSON shape or value type of this field. | vendor.criteo-retail-media.param.json.empty |
docs |
item-whitelist |
optional | The vendor documents the JSON shape or value type of this field. | vendor.criteo-retail-media.param.item-whitelist.empty |
docs |
gdpr_consent |
optional | A populated gdpr_consent is a TCFv2 consent string. The complete local core and additional-segment structure is decoded. Account/GVL permissions need external state. | vendor.criteo-retail-media.param.gdpr_consent.emptyvendor.criteo-retail-media.param.gdpr_consent.invalid |
docs |
gdpr |
optional | The vendor documents the JSON shape or value type of this field. | vendor.criteo-retail-media.param.gdpr.emptyvendor.criteo-retail-media.param.gdpr.invalid |
docs |
block |
optional | The vendor documents the JSON shape or value type of this field. | vendor.criteo-retail-media.param.block.emptyvendor.criteo-retail-media.param.block.invalid |
docs |
keywords |
optional | The event reference documents this request field and its value format. | vendor.criteo-retail-media.param.keywords.empty |
docs |
category |
optional | The event reference documents this request field and its value format. | vendor.criteo-retail-media.param.category.empty |
docs |
parent-item |
optional | The event reference documents this request field and its value format. | vendor.criteo-retail-media.param.parent-item.empty |
docs |
list-size |
optional | The event reference documents this request field and its value format. | vendor.criteo-retail-media.param.list-size.emptyvendor.criteo-retail-media.param.list-size.invalid |
docs |
page-number |
optional | The event reference documents this request field and its value format. | vendor.criteo-retail-media.param.page-number.emptyvendor.criteo-retail-media.param.page-number.invalid |
docs |
availability |
optional | The event reference documents this request field and its value format. | vendor.criteo-retail-media.param.availability.emptyvendor.criteo-retail-media.param.availability.invalid |
docs |
filters |
optional | The event reference documents this request field and its value format. | vendor.criteo-retail-media.param.filters.emptyvendor.criteo-retail-media.param.filters.invalid |
docs |
add_to_cart_requires_item |
required | An `addToCart` event is missing `page-uid`, `item`, `price`, or `quantity`. Criteo documents all four on organic add-to-cart. Fix: Send `page-uid` from the page-load response plus `item`, unit `price`, and `quantity`. | vendor.criteo-retail-media.add_to_cart_requires_item |
docs |
transaction_requires_order |
required | A `trackTransaction` event is missing `item`, `price`, `quantity`, or `transaction-id`. Criteo documents all four on order confirmation. Fix: Send pipe-separated `item`, unit `price`, and `quantity` lists plus `transaction-id`. | vendor.criteo-retail-media.transaction_requires_order |
docs |
hashed_plaintext_field |
required | This field looks like a SHA-256 digest, but Criteo documents `retailer-visitor-id`, `customer-id`, and `device-id` as unhashed. Hash email instead. Fix: Send the raw visitor, customer, or device ID. Hash only `email`. | vendor.criteo-retail-media.hashed_plaintext_field |
docs |
device_id_requires_type |
required | The mobile device identifier must declare whether it is GAID or IDFA. | vendor.criteo-retail-media.device_id_requires_type |
docs |
device_type_requires_id |
required | A mobile identifier type needs its corresponding device identifier. | vendor.criteo-retail-media.device_type_requires_id |
docs |
search_requires_keywords |
required | The event reference requires keywords for this event type. | vendor.criteo-retail-media.search_requires_keywords |
docs |
searchbar_requires_page_uid |
required | The event reference requires page-uid for this event type. | vendor.criteo-retail-media.searchbar_requires_page_uid |
docs |
category_requires_taxonomy |
required | The event reference requires category for this event type. | vendor.criteo-retail-media.category_requires_taxonomy |
docs |
category_menu_requires_page_uid |
required | The event reference requires page-uid for this event type. | vendor.criteo-retail-media.category_menu_requires_page_uid |
docs |
product_requires_details |
required | The event reference requires item, price, availability for this event type. | vendor.criteo-retail-media.product_requires_details |
docs |
favorites_requires_item |
required | The event reference requires item for this event type. | vendor.criteo-retail-media.favorites_requires_item |
docs |
basket_requires_items |
required | The event reference requires item, quantity for this event type. | vendor.criteo-retail-media.basket_requires_items |
docs |
add_to_cart_single_item |
required | An addToCart request allows one item, not a pipe-separated product list. | vendor.criteo-retail-media.add_to_cart_single_item |
docs |
add_to_cart_single_parent |
required | An addToCart request allows one parent item. | vendor.criteo-retail-media.add_to_cart_single_parent |
docs |
pdp_lists_align |
required | Pipe-separated product lists must have corresponding values in the same order. | vendor.criteo-retail-media.pdp_lists_align |
docs |
basket_lists_align |
required | Pipe-separated product lists must have corresponding values in the same order. | vendor.criteo-retail-media.basket_lists_align |
docs |
transaction_lists_align |
required | Pipe-separated product lists must have corresponding values in the same order. | vendor.criteo-retail-media.transaction_lists_align |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/criteo-retail-media
Try this failing payload in the playground. Criteo Retail Media Delivery API missing partner ID.
https://d.us.criteo.com/delivery/retailmedia?retailer-visitor-id=a1b2c3d4e5&page-id=viewHome_API_desktop&event-type=viewHome
cargo install pixellint
·
npm install pixellint