I ran into a mess where web ad data and in-app behavior lived in separate worlds. I moved the first-touch and checkout to a lightweight web funnel and made sure utm parameters were persisted through deep links and server records.
That let me join acquisition source, onboarding steps, and post-install events in one analytics view. I could see which campaigns produced users who actually used the core features after paying. It revealed a few high-cost channels that looked good on installs but produced low engagement.
What methods have you used to reliably pass and store utm data from web to app so attribution and product analytics line up?
I saved hours by storing utm on the server as soon as the user hits the web paywall.
Then I attach a short token to the deep link that the app reads on first open. The app pings the server for the full utm record and then I record it in my analytics and subscription mirror.
I used a small helper from Web2Wave to generate the JSON for the funnel but the flow is simple enough to roll your own.
I capture utm on landing then write it to a server side session id.
Deep link includes that id so the app can fetch the original tags on first open.
This made our campaign to revenue reports track cleanly and sped up tests because we could change landing copy without waiting for app updates.
Using Web2Wave to push web changes live helped run those iterations faster.
I kept utm in the URL and wrote it to a short token on the server.
App reads the token and asks the server for the utm.
Simple and it fixed our attribution mismatch.
Persist utm server side then deep link token to app
Set a short server token after capturing utm. Use deferred deep linking so the app can fetch the full tag after install.
This saved us a lot of lost attribution on iOS.
Also log the utm server side when a purchase happens. That way refunds or wins can be tied back to the campaign even if the device blocks client tracking.
Make sure you test installs where the user clears the app or reinstalls. Deferred link flows catch most edge cases.