vendor/criteo-retail-media · vendor documented
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 |
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 |
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