
WWDC25 just supercharged AdAttributionKit — here’s what you need to know

Overlapping re-engagement conversion windows
What it means
Users often click on multiple ads before making a purchase. Until now, if a user tapped two different ads during their journey, only the most recent interaction would stay eligible for attribution – even if an earlier ad was the one that actually drove the decision to buy.
A real-world example
– Campaign A promotes noise-canceling headphones
– Campaign B promotes smart speakers
Emma clicks on Campaign A’s ad and explores the headphones. A couple of days later, she clicks on Campaign B’s ad for speakers. But after comparing both, she ends up buying the headphones.
Previously, the second ad would have overridden the first, giving Campaign B credit – even though Campaign A was the one that influenced the purchase. That leads to misleading performance data and missed optimization opportunities.
Now, with overlapping re-engagement windows, both ad interactions remain eligible. Because the purchase matches Campaign A’s product, the credit goes to the ad that actually mattered.

Why it matters
More accurate attribution, especially when users interact with multiple campaigns
Product-level clarity on which ad really drove the sale
Better data to optimize your retargeting and re-engagement efforts
How to enable it
Add the following key to your app’s Info.plist file:
EligibleForAdAttributionKitOverlappingConversions = YES
Once enabled, multiple re-engagement windows can run in parallel – ensuring each ad has a fair shot at attribution.
Why you should care:
You’ll no longer lose attribution visibility when a second re-engagement happens mid-journey. You get richer data and fewer collisions between ad touches. That’s a win for everyone running retargeting, seasonal promos, or overlapping campaigns.
Conversion tags: smart bookmarks for attribution
What’s new:
With overlapping windows comes the need to know which re-engagement led to what. Enter conversion tags – tiny, powerful labels that identify specific re-engagements.
How it works:
When a user clicks an ad and returns via a Universal Link, the URL includes a reengagementOpen param (aka the tag). You can use this to track that specific session and even update its conversion value:
updatePostback(with: PostbackUpdate(conversionTag: tag))
Why you should care:
Finally, Apple is bringing precision into re-engagement measurement. If a user clicks on a “20% off shoes” ad, visits but doesn’t buy, and then later purchases — you can now attribute that revenue to the correct ad. That’s the attribution granularity we’ve been waiting for.
Configurable attribution logic
Apple added a few nice flexibility points to AAK.
1. Custom attribution windows
What’s new:
You’re no longer stuck with Apple’s 30-day click / 1-day view windows. You can now set attribution windows by ad network and by interaction type — all in your Info.plist using a JSON-style config. You can also choose to ignore certain interaction types altogether – for example, ignore ad impressions if they’re not relevant to your attribution logic.
Why you should care:
Different ad networks drive installs in different ways – some generate quick conversions, while others result in delayed installs. By customizing the attribution window per ad network and interaction type, you can better reflect how users actually behave and ensure you’re crediting the right source. This flexibility helps improve measurement accuracy across your media mix.
Note: This setting applies only to install ads, not re-engagements. Re-engagements typically result in immediate conversions, so customizing the window isn’t necessary.


2. Attribution cooldowns
What’s new:
AAK now supports cooldown periods that delay other retargeting campaigns from claiming credit too soon after a conversion.
Use case:
A user installs your app from a paid ad and makes a purchase. Seconds later, they open a remarketing ad. Without a cooldown, that remarketing ad might steal credit. With cooldowns, you ensure the original ad gets the credit it deserves..Why you should care:
Cleaner attribution = smarter decision making = better ROI. Cooldowns give you the final say on which events matter most — and when.


Note: You can even define separate cooldown periods for install and re-engagement postbacks, giving you even more granular control over your attribution logic.
Country-level geo data in postbacks
This one is going to make advertisers extremely happy:
What’s new:
AAK postbacks now sometimes include country codes.
Where it comes from:
- App Store installs: based on the storefront in the user’s Apple Account.
- Alt-store installs: pulled from the signed installVerificationToken.
But heads-up:
This only kicks in for campaigns that reach Apple’s new “super high” crowd anonymity tier. So, if you’re running at scale — congrats, you might finally see country-level granularity in your SKAN-like data.
Testing just got a whole lot easier
What’s new:
Starting in iOS 18.4, devs can simulate development postbacks right from the iOS Settings app:
Settings → Developer → Ad Attribution Testing → Development Postbacks
What you can do:
- Manually trigger postbacks
- Simulate conversion value updates
- Test geo code inclusion
- Use a test-specific ad network ID (development.adattributionkit) for isolation
Why you should care:
You can now fully test your AAK logic before going live — no dummy campaigns, no risky prod deployments. Just clean, isolated QA.
The bottom line
With these iOS 18.4 updates, AdAttributionKit is growing up. Apple’s giving advertisers more data, and more room to tailor their measurement — while still playing within its strict privacy guidelines.
At AppsFlyer, we’ve always helped marketers stay ahead with accurate, privacy-first mobile attribution — built to adapt to any industry shifts, including Apple’s latest changes, so you can continue measuring, optimizing, and growing with confidence, no matter how the ecosystem evolves.
Any questions? Your CSM and product experts are just a ping away.