> For the complete documentation index, see [llms.txt](https://docs.digitalturbine.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.digitalturbine.com/dt-ads-demand/dt-exchange-openrtb-2.5-specs/custom-product-pages.md).

# Custom Product Pages

DT Exchange supports Apple's [Custom Product Pages (CPP)](https://developer.apple.com/app-store/custom-product-pages/) in response to clicks initiated on StoreKit-based iOS components, including SKOverlay and StoreKit. Additionally, DTX allows demand-side platforms (DSPs) to attach a specific CPP Product Page ID to a bid response for use in click handling and redirection. For more information, see [Handling Custom Product Pages](/dt-ads-demand/click-options/handling-click-events-in-ios.md#handling-custom-product-pages).

{% hint style="info" %}
DT Exchange supports `CustomProduct` on iOS 15 or later.
{% endhint %}

### Supported Features

* DSPs use native iOS StoreKit-based components.
* App developers create distinct versions of their App Store product page, each with a unique design. These pages support individual performance measurement.
* DSPs can bid with a unique CPP value per impression to specify a particular product page ID.

### App Store Connect Requirements

To support CPP:

* DT supply must run on iOS 15 or later.
* The DT Exchange SDK version must be 8.2.3 or later.

### Object: BidRequest.imp.ext.skadn

When these conditions are met, a new field labeled `productpage` with a value of `1` (DT oRTB reference) is included under `BidRequest.imp.ext.skadn.r`.

| Attribute     | Always Passed | Description                                                                                                                                                           |
| ------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `productpage` | No            | This attribute flags supply supporting the Custom Product Page functionality; it passes with the value of `1` when eligible and will not be passed when not eligible. |

For more information, see [Object: BidRequest.imp.ext.skadn](https://docs.digitalturbine.com/dt-ads-demand/dt-exchange-openrtb-2.5-specs/pages/hE4MWglX3jpV4wxbN78i#object-bidrequest.imp.ext.skadn) in DT Exchange OpenRTB 2.5 Specs.

### Object: BidResponse.seatbid.bid.ext.skadn

DSPs can set the custom product page as part of the bid response using the `productpageid` field under `BidResponse.seatbid.bid.ext.skadn`, with the relevant product page ID.

| Attribute       | Required | Description                            |
| --------------- | -------- | -------------------------------------- |
| `productpageid` | No       | Product Page ID to direct to on click. |

For more information, see [Bid.ext.skadn (SKAdNetwork)](https://docs.digitalturbine.com/dt-ads-demand/dt-exchange-openrtb-2.5-specs/pages/hE4MWglX3jpV4wxbN78i#bid.ext.skadn-skadnetwork) in DT Exchange OpenRTB 2.5 Specs.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.digitalturbine.com/dt-ads-demand/dt-exchange-openrtb-2.5-specs/custom-product-pages.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
