Measure ad effectiveness with privacy-preserving attribution using AdAttributionKit. Use when registering ad impressions, handling attribution postbacks, updating conversion values, implementing re-engagement attribution, configuring publisher or advertiser apps, or replacing SKAdNetwork with AdAttributionKit for ad measurement.
Detected risks:
AdAttributionKit is Apple's privacy-preserving ad attribution framework for iOS 17.4+ and Swift 6.3, and this reference guides its implementation across the three roles in the attribution flow: the ad network that signs impressions and receives postbacks, the publisher app that displays ads, and the advertised app being promoted. It positions AdAttributionKit as both a replacement for and an interoperability partner with SKAdNetwork, supporting the App Store and alternative marketplaces. Coverage begins with the privacy model: crowd anonymity tiers (Tier 0 through Tier 3) that limit postback granularity, time-delayed postbacks sent 24-48 or 24-144 hours after a conversion window closes, hierarchical 2-4 digit source identifiers, and the absence of user-level identifiers. Publisher setup shows how to list ad network IDs in Info.plist (lowercase, with .skadnetwork IDs accepted) and overlay a UIEventAttributionView on tappable custom-rendered ads. Advertiser setup covers the AttributionCopyEndpoint and re-engagement opt-in keys, the derived well-known report endpoint, and calling Postback.updateConversionValue on first launch to open the conversion window. Impression handling walks through creating an AppImpression from a signed JWS, checking isSupported, recording view-through impressions with handleView or beginView/endView, and click-through impressions via handleTap (within 15 minutes), including StoreKit-rendered ad overlays. Postback material details the three conversion windows and their delays, plus the interoperability rule that AdAttributionKit and SKAdNetwork impressions are evaluated together with only one winner per conversion, click-through beating view-through and recency breaking ties. Sections on conversion values, re-engagement attribution, common mistakes, and a review checklist round it out. Useful when registering impressions, wiring postbacks, updating conversion values, or migrating an existing SKAdNetwork integration to privacy-safe measurement.
It targets iOS 17.4+ and Swift 6.3, and works with both the App Store and alternative marketplaces.
Through crowd anonymity tiers that limit data granularity, time-delayed postbacks, hierarchical 2-4 digit source identifiers, and postbacks that carry aggregate values with no user or device IDs.
The system evaluates them together and only one impression wins per conversion; click-through beats view-through, and recency breaks ties among click-through impressions before falling back to the most recent view-through.
Add an AttributionCopyEndpoint under the AdAttributionKit Info.plist dictionary with a valid HTTPS domain, and call Postback.updateConversionValue on first launch to open the conversion window.
Call handleTap() within 15 minutes of creating the AppImpression; otherwise request a fresh impression. A UIEventAttributionView must overlay the ad for the tap to succeed.
Quick Setup:
.claude/skills/Repository
dpearson2699/swift-ios-skills