pixellint

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

Hosts
d.us.criteo.com, d.eu.criteo.com
Paths
…/delivery/retailmedia…
Vendor docs
developers.criteo.com/retailer-integration/docs/api-parameters-1

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.missing
vendor.criteo-retail-media.param.criteo-partner-id.empty
vendor.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.missing
vendor.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.missing
vendor.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.missing
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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