We kept losing attribution when ad clicks deferred into the app. UTMs were stripped, signup was clunky, and half our subs showed up as “unassigned.”
We switched to a web-first path for deep-linked users: they land on mobile web, do onboarding there, and we preserve UTMs through to checkout. After purchase, we open the app with a signed link that includes a short-lived token. On first app open, we call our backend to attach the device to the web customer and hydrate entitlements via our subscription SDK. That killed a lot of the login friction.
What I measured to validate it actually worked:
- UTM continuity rate from click → web funnel → checkout → invoice
- Order-to-device match rate within 24 hours
- Attributed subscription share vs “organic/unknown” share
- Time from click to first session in app
- Delta between SKAN/MMP and our server events
Early results: attributed share moved from ~57% to ~86%, and the number of “can’t unlock” support tickets dropped. Edge cases are still annoying though: Safari ITP on longer journeys, users switching devices post-purchase, and the occasional private relay oddity.
Curious how others “prove” this end to end. Which metrics or logs made you confident UTMs survived all the way to invoices and app entitlements? Any gotchas I should add to the audit?