Skip to main content
This guide introduces the Page Intelligence endpoint, its request and response objects, and the expected integration behavior for retailers using holistic optimization across organic and sponsored products.

Business Context

Page Intelligence helps retailers optimize search and category pages holistically by evaluating organic and sponsored products together instead of managing them through separate decisioning flows. It uses the same Sponsored Products campaigns and reporting, while adding a unified scoring and policy layer so retailers can control how sponsored SKUs appear across placements without compromising relevance or shopper experience.
Page Intelligence does not replace Sponsored Products.It uses the same Sponsored Products campaigns and reporting, but offers an additional way to orchestrate where and how sponsored SKUs appear across placements on your page.You can enable it on selected search and category pages while keeping your existing Sponsored Products integration elsewhere.

Endpoint Behavior

Page Intelligence helps retailers maximize page-level value by balancing organic and sponsored products across placements using a unified scoring and policy layer. The endpoint lets you:
  • Send page context and organic candidates for placements that require holistic optimization.
  • Receive multiple optimized placements, each with its own ranked list of products.
  • Implement both product-level and placement-level beacons for measurement and model training.
The updated contract is designed to support multiple placements and align more closely with existing delivery behavior across placement types.

Prerequisites

  • The retailer is already integrated with Criteo Retail Media Delivery.
  • Page Intelligence configuration and policy settings are set up with your Criteo team.
  • You can send a stable retailerVisitorId and relevant page context.

Recommendations

  • Do not re-rank the products returned in each placement.
  • Implement both product-level and placement-level beacons from the response.
  • Include organicSkus for requests that use holistic optimization.

Endpoint Overview

Request Body

Top-level request object

OptimizeAdContext

The pageAdContext object uses a flat, composable structure. Each property can be included or omitted depending on the content and context needed for each ad request.
  • Required for requests that use holistic optimization.

OrganicSku

RequestFilter

In and NotIn support multiple values. The other operators support a single value.

OperatorEnum

Sample Request

Response Body

The response supports multiple placements in a single response. Each placement has its own format, products, and placement-level beacons. The response uses a resource-style envelope with data.type and data.attributes.

Response overview

The data object includes a type field set to "OptimizeData" and an attributes object containing the actual response payload.

OptimizeData

OptimizePlacement

OptimizeProduct

Placement-level beacons

StructuredBeacon

The placement onLoadBeacon returned from the /optimize endpoint is always a StructuredBeacon object — not a plain URL string. This format supports large payloads (up to 100 organic SKUs) by splitting the beacon into a base URL and a set of key-value parameters sent as the POST body.

Product-level beacons

Sample Response

Integration Notes

  • Include the relevant page context and organicSkus in pageAdContext for page intelligence optimization scenarios.
  • Render each placement exactly as returned.
  • Implement all beacons returned in the response. For placement onLoadBeacon, fire the beacon using navigator.sendBeacon(url, data) where url is StructuredBeacon.url and data is the payload serialized as application/x-www-form-urlencoded. If navigator.sendBeacon is not available, use a POST request with the same form-encoded body.
  • If using BeaconSDK, set data-criteo-placement-onloadbeacon to the url value and add one data-criteo-placement-onloadbeacon-payload-[key] attribute per entry in the payload object on the placement element. BeaconSDK handles the navigator.sendBeacon(url, data) call automatically.

Response Codes