From 196fffcec89e4720eaff9684b89c68d55638ea33 Mon Sep 17 00:00:00 2001 From: Joseph Shi Date: Wed, 21 Jan 2026 15:24:21 +0800 Subject: [PATCH 1/6] add initial AdAttributionKit extension --- .../community_extensions/adattributionkit.md | 306 ++++++++++++++++++ 1 file changed, 306 insertions(+) create mode 100644 extensions/community_extensions/adattributionkit.md diff --git a/extensions/community_extensions/adattributionkit.md b/extensions/community_extensions/adattributionkit.md new file mode 100644 index 0000000..3ba06af --- /dev/null +++ b/extensions/community_extensions/adattributionkit.md @@ -0,0 +1,306 @@ +# Apple AdAttributionKit (AAK) + +**Status:** Draft (Community Extension Proposal) +**Related:** OpenRTB 2.x / 3.x Extensions Mechanism +**Version:** 0.1 (Draft) + +Sponsors: TBD + +Document verison support: [AdAttributionKit][1] versions 1.0. Support for newer versions will be brought up for consideration within the IAB TL Programmatic working group subcommittee. + +## 1. Overview + +This proposal defines a standardized way in OpenRTB to: + +1. Signal **publisher eligibility constraints** (which ad networks are allowed/installed for AAK attribution in the publisher app). +2. Allow bidders to return **AdAttributionKit attribution materials** (e.g., a signed impression payload) required for publisher-side registration. +3. Support both **install** and **reengagement** flows (where applicable), aligned with AdAttributionKit conversion types. + +> Note: Apple indicates AdAttributionKit supports **JWS formatted impressions and postbacks**. + +--- + +## 2. Use Cases + +### 2.1 App-install attribution via OpenRTB +A DSP bids with creatives that are eligible for AdAttributionKit attribution. The exchange/publisher app needs sufficient information to register the impression/click for attribution and later receive postbacks. + +### 2.2 Reengagement campaigns (retargeting) +AdAttributionKit supports a conversion type representing reengagement (“re-engagement”). +The bidder may need to indicate that the ad is eligible for reengagement measurement and provide the appropriate destination URL inputs. + +--- + +## 3. Extension Name and Placement + +### 3.1 Extension Key +`adattributionkit` (AdAttributionKit Network) + +### 3.2 Object Placement (OpenRTB 2.x) +- **BidRequest.Imp.ext.adattributionkit** — publisher signals eligibility / constraints and capabilities +- **BidResponse.SeatBid.Bid.ext.adattributionkit** — bidder returns AdAttributionKit materials + +--- + +## 4. Bid Request + +### Object: `BidRequest.imp.ext.adattributionkit` + +When traffic is eligible for AdAttributionKit, SSPs should include a new `adattributionkit` object under `BidRequest.imp.ext`. This object informs DSPs that they can respond with AAK data for attribution. + +The object is only present if both the SSP SDK version and the OS version (iOS 17.4+) support AdAttributionKit. + +| Attribute | Type | Description | +|-----------|------|-------------| +| version | string; required | Version of AdAttributionKit supported (e.g., "1.0"). Dependent on both the OS version and the SDK version. | +| sourceapp | string; required | The App Store ID of the publisher's app. | +| skadnetids | array of strings; required | A subset of `SKAdNetworkItem` entries in the publisher app's `Info.plist` that are relevant to the bid request. These are the AdNetwork IDs that the DSP can use for attribution. | +| ext | object; optional | Placeholder for exchange-specific extensions to OpenRTB. | +| ext.sko | integer; optional | Indicates whether SKOverlay is available. `1` = available, `0` = not available. | + +### Example Bid Request + +```json +{ + "imp": [ + { + "ext": { + "adattributionkit": { + "version": "1.0", + "sourceapp": "123123123", + "skadnetids": [ + "m8dbw4sv7c.skadnetwork", + "m2jqnlggk3.adattributionkit" + ], + "ext": { + "sko": 1 + } + } + } + } + ] +} +``` + +--- + +## 5. Bid Response + +### Object: `BidResponse.seatbid.bid.ext.adattributionkit` + +If the bid request indicated AAK support, DSPs can return AAK attribution data using a custom extension field under `BidResponse.seatbid.bid.ext.adattributionkit`. + +| Attribute | Type | Description | +|-----------|------|-------------| +| jwt | string; required | Signed compact JWS object to be used on device for AAK implementation. This contains the signed attribution data. | +| version | string; required | Version of AdAttributionKit (e.g., "1.0"). | +| itunesitem | string; required | The App Store ID of the advertised app. | +| cpp | string; optional | The Custom Product Page ID (PPID) for the advertised app. | +| reengagementurl | string; optional | The re-engagement URL for Custom Click attribution. Only supported on iOS 18+. | +| ext | object; optional | Placeholder for exchange-specific extensions to OpenRTB. | +| ext.skoverlay | object; optional | Object containing SKOverlay configuration parameters. | + +### Object: `ext.skoverlay` + +Configuration for SKOverlay presentation. + +| Attribute | Type | Description | +|-----------|------|-------------| +| show | integer | Whether to show the SKOverlay. `1` = show, `0` = do not show. | +| delay | integer | Delay in seconds before showing the overlay. | +| companion_delay | integer | Delay in seconds for companion overlay. | +| pos | integer | Position of the overlay. | +| autoclose | integer | Auto-close delay in seconds. | +| dismissible | integer | Whether the overlay is dismissible. `1` = dismissible, `0` = not dismissible. | +| click_on_view | integer | Whether clicks on the view trigger the overlay. `1` = enabled, `0` = disabled. | + +### Example Bid Response + +```json +{ + "seatbid": [ + { + "bid": [ + { + "ext": { + "adattributionkit": { + "jwt": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImZha2Uua2V5In0.eyJpbXByZXNzaW9uLXR5cGUiOiJhcHAtaW1wcmVzc2lvbiIsImFkLW5ldHdvcmstaWRlbnRpZmllciI6Im15ZHNwLmFkYXR0cmlidXRpb25raXQiLCJwdWJsaXNoZXItaXRlbS1pZGVudGlmaWVyIjowLCJzb3VyY2UtaWRlbnRpZmllciI6MTIzNCwidGltZXN0YW1wIjoxNzAwMDAwMDAwfQ.signature", + "version": "1.0", + "itunesitem": "12345678", + "cpp": "d7db643c-f84f-41d5-b2b3-fce30bf73640", + "reengagementurl": "https://app.com/re", + "ext": { + "skoverlay": { + "show": 1, + "delay": 5, + "companion_delay": 3, + "pos": 1, + "autoclose": 3, + "dismissible": 1, + "click_on_view": 0 + } + } + } + } + } + ] + } + ] +} +``` + +--- + +## 6. Loss Reason Code + +Bid responses that contain invalid or malformed AdAttributionKit extensions may be rejected. This rejection can be communicated in loss notifications (lurl) using [Loss Reason Code][2] `216`. + + + + + + + + + + +
ValueDefinition
216Creative Filtered - Invalid AdAttributionKit
+ +## 7. AdAttributionKit Support Flow + +1. SSP SDK retrieves the SKAdNetworkItems from the publisher app’s Info.plist +2. SDK makes ad request to ad server including SKAdNetworkItems +3. SSP determines from Info.plist which DSPs have AdAttributionKit capabilities. Bid request to eligible DSPs includes the imp.ext.adattributionkit object, defined above +4. DSP responds, including `BidResponse.seatbid.bid.ext.adattributionkit` if the campaign requires AdAttributionKit support +5. Ad response to SDK includes `adattributionkit` object +6. If the impression is shown and the user clicks, SSP does +- SDK creates AppImpression object with jwt ([doc][3]) +- SDK loads SKStoreProductViewController with the AppImpression object ([doc][4]) +- SDK uses the AppImpression object to SKOverlay.AppConfiguration ([doc][5]) +- SDK uses the AppImpression object to begin and end View-Though attribution (begin: [doc][6], end: [doc][7]) +- SDK uses the AppImpression object to call handleTap([reengagementURL:][8]) with reengagementurl for Custom Click attribution + + If valid, Apple will consider the app for install/Reengagement attribution + +7. Target app must register that user for AdAttributionKit attribution on app launch. +8. (Optional). Target app can choose to provide an additional 6 bits of conversion value information. +9. If AdAttributionKit determines that the DSP’s click led to the install, Apple will send a postback to the DSP’s registered endpoint with the ids of the source app, target app and campaign, and conversion value if provided by the target app. + +--- + +## 8. Device Extension + +### Bid request + +#### Object: `BidRequest.device.ext` + +If the IDFA is not available, DSPs require an alternative, limited-scope identifier in order to provide basic frequency capping functionality to advertisers. The [IDFV][10] is the same for apps from the same vendor but different across vendors. Please refer to Apple's Guidelines for further information about when it can be accessed and used. + +DSPs may also want to understand what is the status of a user on iOS 14+. The `atts` field will pass the AppTrackingTransparency Framework's [authorization status][11]. + + + + + + + + + + + + + + + + + + + + + + + + +
+ Attribute + + Description + + Type + + Example +
+ atts + + (iOS Only) An integer passed to represent the app's app tracking authorization status, where
+ 0 = not determined
+ 1 = restricted
+ 2 = denied
+ 3 = authorized +
+ integer + + "atts": 3 +
+ ifv + + IDFV of the device in that publisher. Listed as ifv to match ifa field format. + + string + + "ifv": "336F2BC0-245B-4242-8029-83762AB47B15" +
+ +#### Example + +``` +{ + "device": { + "ext": { + "atts": 2, + "ifv": "336F2BC0-245B-4242-8029-83762AB47B15" + } + } +} +``` + +### DNT, LMT and App Tracking Transparency Guidance + +(Pending iOS 14 Golden Master) For iOS 14 and above, the 'DNT' and 'LMT' parameters will be informed by the 'ATTS' status, where +* "DNT" or "LMT" = 1 when "ATTS" = 0, 1, 2 +* "LMT" or "DNT" = 0 when "ATTS" = 3 + +--- + +## 9. IABTL managed SKAdnetwork ID list + +Refer to [SKAdnetwork spec][9] + +--- + +## 10. SKAdNetwork ID Lists for App Developers + +Refer to [SKAdnetwork spec][12] + +--- + +## 11. Change Log + +| Version | Date | Description | +|---------|------|-------------| +| 1.0 | TBD | Initial release | + + +[1]: https://developer.apple.com/documentation/AdAttributionKit +[2]: https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/OpenRTB%20v3.0%20FINAL.md#list--loss-reason-codes- +[3]: https://developer.apple.com/documentation/adattributionkit/appimpression/ +[4]: https://developer.apple.com/documentation/storekit/skstoreproductviewcontroller/loadproduct%28parameters:impression:%29 +[5]: https://developer.apple.com/documentation/storekit/skoverlay/appconfiguration/appimpression +[6]: https://developer.apple.com/documentation/adattributionkit/appimpression/beginview%28%29 +[7]: https://developer.apple.com/documentation/adattributionkit/appimpression/endview%28%29 +[8]: https://developer.apple.com/documentation/adattributionkit/appimpression/handletap(reengagementurl:) +[9]: https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/skadnetwork.md#iabtl-managed-skadnetwork-id-list + +[10]: https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor +[11]: https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/authorizationstatus +[12]: https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/skadnetwork.md#skadnetwork-id-lists-for-app-developers \ No newline at end of file From ce9a64a0180123b09a3ebf6ac6ee2e3c5b18384c Mon Sep 17 00:00:00 2001 From: Joseph Shi Date: Wed, 21 Jan 2026 15:35:39 +0800 Subject: [PATCH 2/6] fix tpyp --- .../community_extensions/adattributionkit.md | 41 ++++--------------- 1 file changed, 7 insertions(+), 34 deletions(-) diff --git a/extensions/community_extensions/adattributionkit.md b/extensions/community_extensions/adattributionkit.md index 3ba06af..a0ed249 100644 --- a/extensions/community_extensions/adattributionkit.md +++ b/extensions/community_extensions/adattributionkit.md @@ -1,12 +1,12 @@ # Apple AdAttributionKit (AAK) **Status:** Draft (Community Extension Proposal) -**Related:** OpenRTB 2.x / 3.x Extensions Mechanism +**Related:** OpenRTB 2.x Extensions Mechanism **Version:** 0.1 (Draft) -Sponsors: TBD +Sponsors: Liftoff, Dataseat, TBD -Document verison support: [AdAttributionKit][1] versions 1.0. Support for newer versions will be brought up for consideration within the IAB TL Programmatic working group subcommittee. +Document version support: [AdAttributionKit][1] versions 1.0. Support for newer versions will be brought up for consideration within the IAB TL Programmatic working group subcommittee. ## 1. Overview @@ -44,7 +44,7 @@ The bidder may need to indicate that the ad is eligible for reengagement measure ## 4. Bid Request -### Object: `BidRequest.imp.ext.adattributionkit` +### Object: `BidRequest.imp[].ext.adattributionkit` When traffic is eligible for AdAttributionKit, SSPs should include a new `adattributionkit` object under `BidRequest.imp.ext`. This object informs DSPs that they can respond with AAK data for attribution. @@ -86,9 +86,9 @@ The object is only present if both the SSP SDK version and the OS version (iOS 1 ## 5. Bid Response -### Object: `BidResponse.seatbid.bid.ext.adattributionkit` +### Object: `BidResponse.seatbid[].bid[].ext.adattributionkit` -If the bid request indicated AAK support, DSPs can return AAK attribution data using a custom extension field under `BidResponse.seatbid.bid.ext.adattributionkit`. +If the bid request indicated AAK support, DSPs can return AAK attribution data using a custom extension field under `BidResponse.seatbid[].bid[].ext.adattributionkit`. | Attribute | Type | Description | |-----------|------|-------------| @@ -97,22 +97,6 @@ If the bid request indicated AAK support, DSPs can return AAK attribution data u | itunesitem | string; required | The App Store ID of the advertised app. | | cpp | string; optional | The Custom Product Page ID (PPID) for the advertised app. | | reengagementurl | string; optional | The re-engagement URL for Custom Click attribution. Only supported on iOS 18+. | -| ext | object; optional | Placeholder for exchange-specific extensions to OpenRTB. | -| ext.skoverlay | object; optional | Object containing SKOverlay configuration parameters. | - -### Object: `ext.skoverlay` - -Configuration for SKOverlay presentation. - -| Attribute | Type | Description | -|-----------|------|-------------| -| show | integer | Whether to show the SKOverlay. `1` = show, `0` = do not show. | -| delay | integer | Delay in seconds before showing the overlay. | -| companion_delay | integer | Delay in seconds for companion overlay. | -| pos | integer | Position of the overlay. | -| autoclose | integer | Auto-close delay in seconds. | -| dismissible | integer | Whether the overlay is dismissible. `1` = dismissible, `0` = not dismissible. | -| click_on_view | integer | Whether clicks on the view trigger the overlay. `1` = enabled, `0` = disabled. | ### Example Bid Response @@ -128,18 +112,7 @@ Configuration for SKOverlay presentation. "version": "1.0", "itunesitem": "12345678", "cpp": "d7db643c-f84f-41d5-b2b3-fce30bf73640", - "reengagementurl": "https://app.com/re", - "ext": { - "skoverlay": { - "show": 1, - "delay": 5, - "companion_delay": 3, - "pos": 1, - "autoclose": 3, - "dismissible": 1, - "click_on_view": 0 - } - } + "reengagementurl": "https://app.com/re" } } } From 6f0c79dd07c4d479fb010b1a6a3b316425c15b90 Mon Sep 17 00:00:00 2001 From: Joseph Shi Date: Wed, 21 Jan 2026 15:40:53 +0800 Subject: [PATCH 3/6] remove duplicated sections --- .../community_extensions/adattributionkit.md | 98 +------------------ 1 file changed, 1 insertion(+), 97 deletions(-) diff --git a/extensions/community_extensions/adattributionkit.md b/extensions/community_extensions/adattributionkit.md index a0ed249..47bb47a 100644 --- a/extensions/community_extensions/adattributionkit.md +++ b/extensions/community_extensions/adattributionkit.md @@ -161,103 +161,7 @@ Bid responses that contain invalid or malformed AdAttributionKit extensions may --- -## 8. Device Extension - -### Bid request - -#### Object: `BidRequest.device.ext` - -If the IDFA is not available, DSPs require an alternative, limited-scope identifier in order to provide basic frequency capping functionality to advertisers. The [IDFV][10] is the same for apps from the same vendor but different across vendors. Please refer to Apple's Guidelines for further information about when it can be accessed and used. - -DSPs may also want to understand what is the status of a user on iOS 14+. The `atts` field will pass the AppTrackingTransparency Framework's [authorization status][11]. - - - - - - - - - - - - - - - - - - - - - - - - -
- Attribute - - Description - - Type - - Example -
- atts - - (iOS Only) An integer passed to represent the app's app tracking authorization status, where
- 0 = not determined
- 1 = restricted
- 2 = denied
- 3 = authorized -
- integer - - "atts": 3 -
- ifv - - IDFV of the device in that publisher. Listed as ifv to match ifa field format. - - string - - "ifv": "336F2BC0-245B-4242-8029-83762AB47B15" -
- -#### Example - -``` -{ - "device": { - "ext": { - "atts": 2, - "ifv": "336F2BC0-245B-4242-8029-83762AB47B15" - } - } -} -``` - -### DNT, LMT and App Tracking Transparency Guidance - -(Pending iOS 14 Golden Master) For iOS 14 and above, the 'DNT' and 'LMT' parameters will be informed by the 'ATTS' status, where -* "DNT" or "LMT" = 1 when "ATTS" = 0, 1, 2 -* "LMT" or "DNT" = 0 when "ATTS" = 3 - ---- - -## 9. IABTL managed SKAdnetwork ID list - -Refer to [SKAdnetwork spec][9] - ---- - -## 10. SKAdNetwork ID Lists for App Developers - -Refer to [SKAdnetwork spec][12] - ---- - -## 11. Change Log +## 8. Change Log | Version | Date | Description | |---------|------|-------------| From 598afe9392428c1c0c484a4b075f37e475ac6a49 Mon Sep 17 00:00:00 2001 From: Joseph Shi Date: Wed, 21 Jan 2026 15:57:44 +0800 Subject: [PATCH 4/6] address comments --- .../community_extensions/adattributionkit.md | 61 +++++++++++-------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/extensions/community_extensions/adattributionkit.md b/extensions/community_extensions/adattributionkit.md index 47bb47a..5842c58 100644 --- a/extensions/community_extensions/adattributionkit.md +++ b/extensions/community_extensions/adattributionkit.md @@ -1,8 +1,8 @@ # Apple AdAttributionKit (AAK) -**Status:** Draft (Community Extension Proposal) -**Related:** OpenRTB 2.x Extensions Mechanism -**Version:** 0.1 (Draft) +**Status:** Draft (Community Extension Proposal) +**Related:** OpenRTB 2.x Extensions Mechanism +**Version:** 0.1 Sponsors: Liftoff, Dataseat, TBD @@ -10,11 +10,13 @@ Document version support: [AdAttributionKit][1] versions 1.0. Support for newer ## 1. Overview +AdAttributionKit (AAK) is Apple's privacy-preserving attribution framework introduced in iOS 17.4+ as the successor to SKAdNetwork. Like SKAdNetwork, it uses ad network identifiers (`.skadnetwork` suffix) to establish trust between publishers and advertisers while providing cryptographically signed attribution data. + This proposal defines a standardized way in OpenRTB to: 1. Signal **publisher eligibility constraints** (which ad networks are allowed/installed for AAK attribution in the publisher app). 2. Allow bidders to return **AdAttributionKit attribution materials** (e.g., a signed impression payload) required for publisher-side registration. -3. Support both **install** and **reengagement** flows (where applicable), aligned with AdAttributionKit conversion types. +3. Support both **install** and **reengagement** flows (where applicable), aligned with AdAttributionKit conversion types. > Note: Apple indicates AdAttributionKit supports **JWS formatted impressions and postbacks**. @@ -53,8 +55,8 @@ The object is only present if both the SSP SDK version and the OS version (iOS 1 | Attribute | Type | Description | |-----------|------|-------------| | version | string; required | Version of AdAttributionKit supported (e.g., "1.0"). Dependent on both the OS version and the SDK version. | -| sourceapp | string; required | The App Store ID of the publisher's app. | -| skadnetids | array of strings; required | A subset of `SKAdNetworkItem` entries in the publisher app's `Info.plist` that are relevant to the bid request. These are the AdNetwork IDs that the DSP can use for attribution. | +| sourceapp | string; required | The iTunes item identifier (numeric App Store ID) of the publisher's app (e.g., "123456789"). | +| skadnetids | array of strings; required | A subset of ad network identifiers from the publisher app's `Info.plist` `SKAdNetworkItems` array. AdAttributionKit reuses the same ad network IDs as SKAdNetwork (with `.skadnetwork` suffix). These identifiers indicate which ad networks the DSP can use for attribution. | | ext | object; optional | Placeholder for exchange-specific extensions to OpenRTB. | | ext.sko | integer; optional | Indicates whether SKOverlay is available. `1` = available, `0` = not available. | @@ -139,25 +141,35 @@ Bid responses that contain invalid or malformed AdAttributionKit extensions may -## 7. AdAttributionKit Support Flow +## 7. AdAttributionKit Support Flow -1. SSP SDK retrieves the SKAdNetworkItems from the publisher app’s Info.plist -2. SDK makes ad request to ad server including SKAdNetworkItems -3. SSP determines from Info.plist which DSPs have AdAttributionKit capabilities. Bid request to eligible DSPs includes the imp.ext.adattributionkit object, defined above +### 7.1 Bid Request Flow +1. SSP SDK retrieves the `SKAdNetworkItems` from the publisher app's `Info.plist` +2. SDK makes ad request to ad server including the ad network identifiers +3. SSP determines from `Info.plist` which DSPs have AdAttributionKit capabilities. Bid request to eligible DSPs includes the `imp.ext.adattributionkit` object, defined above 4. DSP responds, including `BidResponse.seatbid.bid.ext.adattributionkit` if the campaign requires AdAttributionKit support 5. Ad response to SDK includes `adattributionkit` object -6. If the impression is shown and the user clicks, SSP does -- SDK creates AppImpression object with jwt ([doc][3]) -- SDK loads SKStoreProductViewController with the AppImpression object ([doc][4]) -- SDK uses the AppImpression object to SKOverlay.AppConfiguration ([doc][5]) -- SDK uses the AppImpression object to begin and end View-Though attribution (begin: [doc][6], end: [doc][7]) -- SDK uses the AppImpression object to call handleTap([reengagementURL:][8]) with reengagementurl for Custom Click attribution - If valid, Apple will consider the app for install/Reengagement attribution +### 7.2 Attribution Registration (Publisher SDK) +When the impression is shown, the SDK creates an `AppImpression` object using the JWT from the bid response ([Refer to Apple AdAttributionKit AppImpression][3]) and registers it using one of the following methods: + +**Click Attribution:** +- Load `SKStoreProductViewController` with the `AppImpression` object ([Refer to Apple SKStoreProductViewController][4]) +- Configure `SKOverlay.AppConfiguration` with the `AppImpression` object ([Refer to Apple SKOverlay.AppConfiguration][5]) +- Call `handleTap(reengagementURL:)` with the `reengagementurl` for Custom Click attribution (iOS 18+) ([Refer to Apple AppImpression][8]) + +**View-Through Attribution:** +- Call `beginView()` when the impression becomes visible ([Refer to Apple AppImpression][6]) +- Call `endView()` when the impression is no longer visible ([Refer to Apple AppImpression][7]) -7. Target app must register that user for AdAttributionKit attribution on app launch. -8. (Optional). Target app can choose to provide an additional 6 bits of conversion value information. -9. If AdAttributionKit determines that the DSP’s click led to the install, Apple will send a postback to the DSP’s registered endpoint with the ids of the source app, target app and campaign, and conversion value if provided by the target app. +If valid, Apple will consider the app for install or reengagement attribution based on the impression data. + +### 7.3 Conversion Registration (Advertiser App) +1. Target app must register the user for AdAttributionKit attribution on app launch +2. (Optional) Target app can provide an additional 6 bits of conversion value information + +### 7.4 Postback +If AdAttributionKit determines that the attributed impression/click led to the install or reengagement, Apple will send a postback to the DSP's registered endpoint with the IDs of the source app, target app, campaign, and conversion value (if provided by the target app). --- @@ -165,7 +177,7 @@ Bid responses that contain invalid or malformed AdAttributionKit extensions may | Version | Date | Description | |---------|------|-------------| -| 1.0 | TBD | Initial release | +| 0.1 | 2025-01 | Initial draft for community review | [1]: https://developer.apple.com/documentation/AdAttributionKit @@ -175,9 +187,4 @@ Bid responses that contain invalid or malformed AdAttributionKit extensions may [5]: https://developer.apple.com/documentation/storekit/skoverlay/appconfiguration/appimpression [6]: https://developer.apple.com/documentation/adattributionkit/appimpression/beginview%28%29 [7]: https://developer.apple.com/documentation/adattributionkit/appimpression/endview%28%29 -[8]: https://developer.apple.com/documentation/adattributionkit/appimpression/handletap(reengagementurl:) -[9]: https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/skadnetwork.md#iabtl-managed-skadnetwork-id-list - -[10]: https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor -[11]: https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/authorizationstatus -[12]: https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/skadnetwork.md#skadnetwork-id-lists-for-app-developers \ No newline at end of file +[8]: https://developer.apple.com/documentation/adattributionkit/appimpression/handletap(reengagementurl:) \ No newline at end of file From 36be7f0e1face7bcb789e1c4360b98a6f0c0153e Mon Sep 17 00:00:00 2001 From: Joseph Shi Date: Mon, 2 Feb 2026 17:36:22 +0800 Subject: [PATCH 5/6] specify AAK support suffix --- extensions/community_extensions/adattributionkit.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/community_extensions/adattributionkit.md b/extensions/community_extensions/adattributionkit.md index 5842c58..ddb7633 100644 --- a/extensions/community_extensions/adattributionkit.md +++ b/extensions/community_extensions/adattributionkit.md @@ -10,7 +10,7 @@ Document version support: [AdAttributionKit][1] versions 1.0. Support for newer ## 1. Overview -AdAttributionKit (AAK) is Apple's privacy-preserving attribution framework introduced in iOS 17.4+ as the successor to SKAdNetwork. Like SKAdNetwork, it uses ad network identifiers (`.skadnetwork` suffix) to establish trust between publishers and advertisers while providing cryptographically signed attribution data. +AdAttributionKit (AAK) is Apple's privacy-preserving attribution framework introduced in iOS 17.4+ as the successor to SKAdNetwork. Like SKAdNetwork, it uses ad network identifiers (`.adattributionkit` and `.skadnetwork` suffix) to establish trust between publishers and advertisers while providing cryptographically signed attribution data. This proposal defines a standardized way in OpenRTB to: @@ -56,7 +56,7 @@ The object is only present if both the SSP SDK version and the OS version (iOS 1 |-----------|------|-------------| | version | string; required | Version of AdAttributionKit supported (e.g., "1.0"). Dependent on both the OS version and the SDK version. | | sourceapp | string; required | The iTunes item identifier (numeric App Store ID) of the publisher's app (e.g., "123456789"). | -| skadnetids | array of strings; required | A subset of ad network identifiers from the publisher app's `Info.plist` `SKAdNetworkItems` array. AdAttributionKit reuses the same ad network IDs as SKAdNetwork (with `.skadnetwork` suffix). These identifiers indicate which ad networks the DSP can use for attribution. | +| skadnetids | array of strings; required | A subset of ad network identifiers from the publisher app's `Info.plist` `SKAdNetworkItems` array. AdAttributionKit reuses the same ad network IDs as SKAdNetwork (with `.adattributionkit` and `.skadnetwork` suffix). These identifiers indicate which ad networks the DSP can use for attribution. | | ext | object; optional | Placeholder for exchange-specific extensions to OpenRTB. | | ext.sko | integer; optional | Indicates whether SKOverlay is available. `1` = available, `0` = not available. | @@ -144,7 +144,7 @@ Bid responses that contain invalid or malformed AdAttributionKit extensions may ## 7. AdAttributionKit Support Flow ### 7.1 Bid Request Flow -1. SSP SDK retrieves the `SKAdNetworkItems` from the publisher app's `Info.plist` +1. SSP SDK retrieves the `SKAdNetworkItems` from the publisher app's `Info.plist`, which contains both `.adattributionkit` and `.skadnetwork` suffix 2. SDK makes ad request to ad server including the ad network identifiers 3. SSP determines from `Info.plist` which DSPs have AdAttributionKit capabilities. Bid request to eligible DSPs includes the `imp.ext.adattributionkit` object, defined above 4. DSP responds, including `BidResponse.seatbid.bid.ext.adattributionkit` if the campaign requires AdAttributionKit support @@ -177,7 +177,7 @@ If AdAttributionKit determines that the attributed impression/click led to the i | Version | Date | Description | |---------|------|-------------| -| 0.1 | 2025-01 | Initial draft for community review | +| 0.1 | 2026-01 | Initial draft for community review | [1]: https://developer.apple.com/documentation/AdAttributionKit From 96782ea62bc012c475f5e105c9e2c4b4867a8f8a Mon Sep 17 00:00:00 2001 From: Joseph Shi Date: Wed, 4 Mar 2026 11:03:06 +0800 Subject: [PATCH 6/6] update README.md --- extensions/community_extensions/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/extensions/community_extensions/README.md b/extensions/community_extensions/README.md index faed402..ee745ce 100644 --- a/extensions/community_extensions/README.md +++ b/extensions/community_extensions/README.md @@ -57,4 +57,12 @@ See [extended-content-ids.md](extended-content-ids.md) for deatils. #### Notes -See [seat-non-bid.md](seat-non-bid.md) for deatils. \ No newline at end of file +See [seat-non-bid.md](seat-non-bid.md) for deatils. + +### Apple Ad Attribution Kit (AAK) Support + +#### Issue: [#43](https://github.com/InteractiveAdvertisingBureau/openrtb/issues/209) + +#### Notes + +See [adattributionkit.md](adattributionkit.md) for deatils. \ No newline at end of file