> ## Documentation Index
> Fetch the complete documentation index at: https://developers.criteo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sponsored Products

> Here is a breakdown of the requirements for your sponsored product placement to pass both technical and design QA:

# Beaconing

<table>
  <thead>
    <tr>
      <th>
        <p>
          Level
        </p>
      </th>

      <th>
        <p>
          Title
        </p>
      </th>

      <th>
        <p>
          Response field
        </p>
      </th>

      <th>
        <p>
          Explanation
        </p>
      </th>

      <th>
        <p>
          Mandatory
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Placement
        </p>
      </td>

      <td>
        <p>
          Impression
        </p>
      </td>

      <td>
        <p>
          <code>
            onLoadBeacon
          </code>
        </p>
      </td>

      <td>
        <p>
          URL to be called when the whole placement is loaded onto the page. For sponsored products, the placement is considered "loaded" when at least one product is rendered.
        </p>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Placement
        </p>
      </td>

      <td>
        <p>
          View
        </p>
      </td>

      <td>
        <p>
          <code>
            onViewBeacon
          </code>
        </p>
      </td>

      <td>
        <p>
          URL to be called when at least 50% of the first product is in the user's viewport for at least 1 uninterrupted second.
        </p>

        <p>
          This beacon should only be fired once.
        </p>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Product
        </p>
      </td>

      <td>
        <p>
          Impression
        </p>
      </td>

      <td>
        <p>
          <code>
            onLoadBeacon
          </code>
        </p>
      </td>

      <td>
        <p>
          URL to be called when the individual product tile is loaded onto the page. If leveraging

          <a href="/retailer-integration/docs/legacy-universal-beacons">
            universal beacons
          </a>

          , this field will be blank.
        </p>

        <p>
          This beacon should only be fired once.
        </p>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Product
        </p>
      </td>

      <td>
        <p>
          View
        </p>
      </td>

      <td>
        <p>
          <code>
            onViewBeacon
          </code>
        </p>
      </td>

      <td>
        <p>
          URL to be called when the individual product tile is viewed according to IAB's viewable ad impression measurement guidelines. At least 50% of the placement must be in the user's viewport for at least 1 uninterrupted second.
        </p>

        <p>
          This beacon should only be fired once per product.
        </p>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Product
        </p>
      </td>

      <td>
        <p>
          Click
        </p>
      </td>

      <td>
        <p>
          <code>
            productPage
          </code>
        </p>

        <p>
          and/or
        </p>

        <p>
          <code>
            onClickBeacon
          </code>
        </p>
      </td>

      <td>
        <p>
          <b>
            productPage
          </b>
        </p>

        <p>
          This element is a URL that will send an

          <code>
            OnClickBeacon
          </code>

          beacon to Criteo and then redirect the shopper to the item's PDP link (pulled from the product feed).
        </p>

        <p>
          It is possible to use this as the

          <code>
            href
          </code>

          value for the sponsored product as a way to track clicks instead of calling the

          <code>
            OnClickBeacon
          </code>

          URL.
        </p>

        <p>
          <b>
            onClickBeacon
          </b>
        </p>

        <p>
          URL to be called when the individual product tile is clicked. This refers to *any*
        </p>

        <p>
          click interaction with the product tile outside of adding to cart or adding to wishlist (see next two rows).
        </p>

        <p>
          This beacon should fire on all the range of clicks; left click, middle click, right click to open in a new tab and keyboard shortcuts that simulate a click.
        </p>

        <p>
          <b>
            Both
          </b>
        </p>

        <p>
          This label refers to cases where both

          <code>
            OnClick
          </code>

          and

          <code>
            ProductPage
          </code>

          beacons are triggered.
        </p>

        <ul>
          <li>
            Important\_: These beacons are treated as separate events and are not deduplicated against each other.
          </li>
        </ul>

        <p>
          Deduplication is performed only when multiple beacons of the same type are received. Criteo will handle this deduplication internally for billing purposes.
        </p>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Product
        </p>
      </td>

      <td>
        <p>
          Add-to-cart
        </p>
      </td>

      <td>
        <p>
          <code>
            onBasketChangeBeacon
          </code>
        </p>
      </td>

      <td>
        <p>
          URL to be called when a product is added to or removed from the basket/cart. You can add the quantity of products as a query string parameter. If no

          <code>
            quantity
          </code>

          parameter is provided, it defaults to

          <code>
            1
          </code>

          .
        </p>

        <p>
          This beacon should be fired on *every* add-to-cart click event. Criteo will deduplicate clicks for billing purposes internally.
        </p>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Product
        </p>
      </td>

      <td>
        <p>
          Add-to-wishlist
        </p>
      </td>

      <td>
        <p>
          <code>
            onWishlistBeacon
          </code>
        </p>
      </td>

      <td>
        <p>
          URL to be called when the product is added to the wishlist/favorites.
        </p>

        <p>
          This beacon should be fired on *every* add-to-wishlist click event. Criteo will deduplicate clicks for billing purposes internally.
        </p>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>
  </tbody>
</table>

# Ad design

<table>
  <thead>
    <tr>
      <th>
        <p>
          Check
        </p>
      </th>

      <th>
        <p>
          Explanation
        </p>
      </th>

      <th>
        <p>
          Mandatory
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Breakpoint adherence
        </p>
      </td>

      <td>
        <p>
          For each window size (breakpoint), ensure the sponsored products are positioned properly and that all "sponsored" badges are displayed correctly, as shown in the mock-ups provided by Criteo.
        </p>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Mock-up adherence
        </p>
      </td>

      <td>
        <p>
          The design of the mock-ups should be followed as specified:
        </p>

        <ul>
          <li>
            <b>
              Product information:
            </b>

            Layout, price, rating, text orientation, and text centering.
          </li>

          <li>
            <b>
              Navigation elements:
            </b>

            Include any arrows or scrolls that are part of the product.
          </li>

          <li>
            <b>
              Title:
            </b>

            Font style should match the mock-ups.
          </li>

          <li>
            <b>
              Text:
            </b>

            Placement, font family, font size, and colors should match the mock-ups.
          </li>

          <li>
            <b>
              Sponsored text:
            </b>

            Placement, font family, font size, and color should match the mock-ups.
          </li>

          <li>
            <b>
              Contour:
            </b>

            Ensure there is a contour around the solution, following the mock-up design.
          </li>
        </ul>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>
  </tbody>
</table>

# API features

<table>
  <thead>
    <tr>
      <th>
        <p>
          Check
        </p>
      </th>

      <th>
        <p>
          Explanation
        </p>
      </th>

      <th>
        <p>
          Mandatory
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Filters leveraged in ad calls
        </p>
      </td>

      <td>
        <ul>
          <li>
            <b>
              Format:
            </b>

            Ensure the filters in the ad call match the product feed.
          </li>

          <li>
            <b>
              Multiple values:
            </b>

            Ensure filters with multiple values are passed correctly using the 'in' operator.
          </li>

          <li>
            <b>
              Removal:
            </b>

            Ensure that when filters are removed, updated ad calls are made to Criteo reflecting on site.
          </li>
        </ul>
      </td>

      <td>
        <p>
          Yes, if filters have been implemented
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Leveraging regiondata
        </p>
      </td>

      <td>
        <ul>
          <li>
            <b>
              Format:
            </b>

            Ensure that the region IDs in the ad call match what is passed in the product feed
          </li>

          <li>
            <b>
              Adherence:
            </b>

            Ensure that Criteo is adhering properly to the region in our ad response
          </li>
        </ul>
      </td>

      <td>
        <p>
          Yes, if regiondata has been implemented
        </p>
      </td>
    </tr>
  </tbody>
</table>

# Attribution

<table>
  <thead>
    <tr>
      <th>
        <p>
          Check
        </p>
      </th>

      <th>
        <p>
          Explanation
        </p>
      </th>

      <th>
        <p>
          Mandatory
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Test purchase
        </p>
      </td>

      <td>
        <ul>
          <li>
            <b>
              Format:
            </b>

            Ensure that the

            <code>
              trackTransaction
            </code>

            page is passing all parameters properly, including unitary price for each item.
          </li>

          <li>
            <b>
              Returns:
            </b>

            If leveraging the return functionality, ensure that returned orders trigger a new API call with

            <code>
              quantity=0
            </code>

            for all returned items.
          </li>
        </ul>
      </td>

      <td>
        <p>
          Yes
        </p>
      </td>
    </tr>
  </tbody>
</table>
