2025 App Store, Distribution & MarketingApp Services
WWDC25 · 24 min · App Store, Distribution & Marketing / App Services
What’s new in AdAttributionKit
Learn about new features in AdAttributionKit, including how to measure overlapping reengagement conversions and customize ad attribution rules for your app. Gain insight on a new postback property you can use to measure the success of ad campaigns across countries and regions. We’ll also demonstrate new functionality and best practices for testing your AdAttributionKit implementation. To get the most out of this session, we recommend first watching “Meet AdAttributionKit.”
Watch at developer.apple.com ↗Chapters
Code shown on screen · 11 snippets
Function that retrieves a conversion tag from a URL
func retrieveConversionTag(fromURL url: URL) -> String? {
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else {
print("Could not get components for URL.")
return nil
}
guard let queryItems = components.queryItems else {
print("URL does not contain query items.")
return nil
}
for item in queryItems {
guard item.name == Postback.reengagementOpenURLParameter else {
continue
}
return item.value
}
return nil
} Function that updates conversion value using a conversion tag
func updateConversionValue(_ conversionValue: Int, conversionTag: String) async {
do {
let update = PostbackUpdate(fineConversionValue: conversionValue,
lockPostback: false,
conversionTag: conversionTag)
try await Postback.updateConversionValue(update)
}
catch {
print("An error occurred while updating the conversion value: \(error)")
}
} Example Info.plist for configuring attribution window
{
"AdAttributionKitConfigurations": {
"AttributionWindows": {
"com.example.adNetwork": {
"install": {
"click": 2,
"view": 1
}
}
}
} Example Info.plist for configuring attribution window
{
"AdAttributionKitConfigurations": {
"AttributionWindows": {
"com.example.adNetwork": {
"install": {
"click": 2,
"view": 1
}
}
}
} Example Info.plist for configuring attribution window
{
"AdAttributionKitConfigurations": {
"AttributionWindows": {
"com.example.adNetwork": {
"install": {
"click": 2,
"ignoreInteractionType": "view"
}
}
}
} Example Info.plist for configuring attribution window
{
"AdAttributionKitConfigurations": {
"AttributionWindows": {
"global": {
"install": {
"view": 3
}
}
"com.example.adNetwork": {
"install": {
"click": 5,
"ignoreInteractionType": "view"
}
}
}
} Example Info.plist for configuring attribution window
{
"AdAttributionKitConfigurations": {
"AttributionWindows": {
"global": {
"install": {
"view": 3
}
}
"com.example.adNetwork": {
"install": {
"click": 5,
"ignoreInteractionType": "view"
}
}
}
} Example Info.plist for configuring attribution cooldown
{
"AdAttributionKitConfigurations": {
"AttributionCooldown": {
"install-cooldown-hours": 6,
"reengagement-cooldown-hours": 1
{
}
} Example install verification token payload
{
"iss": 13421973,
"iat": 1745255692,
"iid": "34890933",
"vid": "46392455",
"aud": "AppleDownloadVerification-v1",
"bid": "com.example.marketplace",
"dtype": "download",
"nonce": "9BC2C5CC-A1F8-4F93-9D6A-4D524685B67E"
} Example install verification token payload
{
"iss": 13421973,
"iat": 1745255692,
"iid": "34890933",
"vid": "46392455",
"aud": "AppleDownloadVerification-v1",
"bid": "com.example.marketplace",
"dtype": "download",
"nonce": "9BC2C5CC-A1F8-4F93-9D6A-4D524685B67E",
"ccode": "MT"
} Example postback with country code
{
"ad-interaction-type": "click",
"jws-string": "eyJraWQiOiJhcHBsZS1jYXMtaWRlbnRpZmllci8wIiwiYWxnIjoiRVMyNTYifQ.eyJhZHZlcnRpc2VkLWl0ZW0taWRlbnRpZmllciI6Njg0OTM5LCJjb252ZXJzaW9uLXR5cGUiOiJyZS1lbmdhZ2VtZW50IiwibWFya2V0cGxhY2UtaWRlbnRpZmllciI6ImNvbS5hcHBsZS5BcHBTdG9yZSIsImFkLW5ldHdvcmstaWRlbnRpZmllciI6InRlc3QuYWRhdHRyaWJ1dGlvbmtpdCIsImltcHJlc3Npb24tdHlwZSI6ImFwcC1pbXByZXNzaW9uIiwicG9zdGJhY2stc2VxdWVuY2UtaW5kZXgiOjAsInNvdXJjZS1pZGVudGlmaWVyIjoiODM0NCIsImRpZC13aW4iOnRydWUsInBvc3RiYWNrLWlkZW50aWZpZXIiOiIzZjUwZmU1Ny0yOWFlLTQ4NjEtOGMwYi1hYzZhZGRkZmY3MmMiLCJwdWJsaXNoZXItaXRlbS1pZGVudGlmaWVyIjo1ODM4NDkyfQ.AemK1x2ahIPKOnFEEscG4wvipRtR1G6DzpNF4M4joPb8POIH4FJjm4VvcNgLXc9rWBrEDQPvDblduoc7MFcK5w",
"coarse-conversion-value": "medium",
"country-code": "MT"
} Resources
Related sessions
-
24 min -
26 min