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

# Storefront

> Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.

## Sponsored products

To support sponsored products in the storefront, the following is needed:

* Send impression events when sponsored products are viewed
* Make sponsored products visually distinct
* Ensure correct metadata is included in requests

## Impression tracking

Whenever sponsored resources become visible to storefront visitors, impression notifications must be triggered. This is done by firing an [impression notification](/elevate/docs/api/storefront/v3/notifications/ad-impression). Send an impression notification, using the product's `ticket`, for every `sponsored` product that is rendered in:

* Primary lists with sponsored products
* Search results with sponsored products
* Recommendation lists with sponsored products

Sponsored products have the field `sponsored` set to `true`.

<Warning>
  Previously, only one impression notification was required per primary list, triggered when the first sponsored product became visible. This has changed: an impression notification must now be sent for each individual sponsored product that is seen.
</Warning>

<Tip>
  The general guideline is to send a notification when 50% of the sponsored product has been on screen for at least a second, but this is not a strict rule.
</Tip>

Refreshing the page or filtering the product selection might cause sponsored segments to change. In this case, you may send a new impression notification, though this is not required.

## Distinguishing sponsored resources

Although Voyado does not require it, you may need to clearly label sponsored content to comply with local advertising or consumer protection regulations.

To support this, sponsored products have the field `sponsored` set to `true`, allowing you to make them visually distinct.

## Metadata

To identify non-human traffic, it is important to add valid request headers in the call to Elevate. The headers needed are:

* **User-Agent** — the user agent of the storefront visitor.
* **X-Forwarded-For** — the IP address of the storefront visitor.

Without valid values in the request headers, sponsored content will not be served.

## Response caching

<Warning>
  Do not cache responses from the Elevate Retail Media service. Always request a new response for every advertising placement.
</Warning>

Each response represents a real-time bid decision based on the current context and user activity. If responses are cached:

* Fill rate will decrease — cached responses may no longer be valid when reused, leading to missed opportunities.
* Revenue will be lost — reusing a previous bid response without new auction logic prevents fresh competition and accurate pricing.
* User experience may degrade — showing outdated ads can reduce relevance and engagement.
