> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.pixalate.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pixalate.com/_mcp/server.

# CTV bundle IDs

> Bundle IDs vs. app store IDs on connected TV (CTV) platforms. Why one CTV app can have many bundle IDs, the problems this causes for targeting, attribution, reporting and IVT detection, and how Pixalate maps bundle IDs to apps in the MRT and the Enrichment API.

Buyers and sellers often identify connected TV (CTV) apps by **bundle ID**. On CTV platforms, nobody controls bundle IDs, so one app can be known by many of them. Pixalate maps the bundle IDs it sees to each app's **app store ID**, so you can identify the app reliably and legitimate traffic isn't wrongly flagged as spoofing.

## Bundle IDs and app store IDs

|                 | Bundle ID                                                                                                           | App store ID                                                |
| --------------- | ------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| What it is      | A string chosen by whoever uses it, usually (but not always) in reverse domain notation, such as `com.example.app`. | An identifier the platform's app store assigns to each app. |
| Who controls it | No one. App stores and other bodies don't mandate or regulate it.                                                   | The app store.                                              |
| Unique?         | No. Several bundle IDs can refer to the same app.                                                                   | Yes, per platform.                                          |
| Verifiable?     | No. There's no way to check a bundle ID against an app store.                                                       | Yes.                                                        |

For example, the Sling TV app on Roku has the app store ID `46041`, but it appears in the bidstream under many different bundle IDs.

### How CTV bundle IDs became unreliable

Bundle IDs started on iOS and Android, where app stores made them unique identifiers for apps. When the idea moved to CTV, each platform kept its own app store ID, and defining bundle IDs was left to whoever used them.

As a result, different companies use different bundle IDs for the same app. Because OpenRTB objects lacked fields for some information, the bundle ID field has also been used to carry other details, such as the operating system, the channel or network, or even the name of a show. For example, `com.sling.cnn.ctv.roku` tries to describe the CNN channel in the Sling TV app on Roku.

## Why it matters

Unless bundle IDs are mapped to the right app, inconsistent bundle IDs cause problems for buyers and sellers alike:

* **Targeting:** buyers struggle to identify the right app because of duplicate or misleading bundle IDs.
* **Attribution:** misidentified apps make campaign performance harder to track.
* **Reporting:** metrics may not line up because bundle ID data is inconsistent.
* **IVT detection:** fraud detection tools that can't tell a badly set-up bundle ID from a real spoofing attempt often misclassify legitimate impressions as spoofed. See [App spoofing](/mrt/app-spoofing).

## Industry direction

The industry is working on these problems:

* **IAB Tech Lab guidelines** recommend [using app store IDs](https://iabtechlab.com/wp-content/uploads/2020/08/IAB-Tech-Lab-OTT-store-assigned-App-Identification-Guidelines-2020.pdf) as the unique identifiers for CTV apps.
* **OpenRTB 2.6** adds Channel and Network objects, so this information no longer needs to be packed into bundle IDs.

Until these are widely adopted, bundle ID variations need to be mapped.

## How Pixalate maps bundle IDs

Pixalate uses machine learning to map the different bundle IDs that refer to the same app to that app's app store ID. This means:

* you can identify the app with confidence, whatever bundle ID was declared
* legitimate impressions with a non-standard bundle ID aren't wrongly flagged as app spoofing

Pixalate uses the same mapping in its Analytics and fraud detection products, so traffic isn't penalized for app spoofing because of a bundle ID variation.

### Where to see the mapping

* **Media Ratings Terminal (MRT):** a CTV app's Insight page lists the bundle IDs associated with the app and each bundle ID's **share of voice** (SOV), its share of the app's traffic. This section may not be turned on for every account; if you don't see it, ask your Pixalate account manager.
* **Enrichment API:** the `appDetails` widget for CTV apps returns `bundleIds`, with each `bundleId` and its `sovRatio`. See [`appDetails`](/apis/enrichment-api-ctv-fields#appdetails) in the CTV field reference.

To block traffic with malformed or unidentifiable CTV bundle IDs before the bid, see the [malformed CTV bundle ID feed](/data-feeds/malformed-ctv-bundle-ids).

## How widespread the problem is

Pixalate publishes research on CTV bundle IDs, including:

* [CTV Bundle ID Mapping report](https://www.pixalate.com/ctv-bundle-id-mapping-report-fire-tv)
* [Malformed and fraudulent CTV bundle IDs risk report](https://www.pixalate.com/connected-tv-ctv-malformed-and-fraudulent-bundle-ids-risk-report-for-amazon-fire-tv)

For the latest reports, see [pixalate.com/reports](https://www.pixalate.com/reports).

## Related

#### [App spoofing](/mrt/app-spoofing)

How Pixalate detects apps misrepresented as other apps.

#### [Enrichment API CTV fields](/apis/enrichment-api-ctv-fields)

Every field returned for CTV apps.

Questions? Email [support@pixalate.com](mailto:support@pixalate.com).