I moved our onboarding to a web funnel and paid special attention to preserving UTM tags across landing, checkout, and subscription confirmation. That let us tie purchases and later churn back to the exact campaign, creative, and keyword. We avoided common pitfalls like dropping UTMs on redirects and ensured the checkout wrote the UTM set to the user record.
Has anyone documented a reliable end to end way to carry UTMs from ad click to subscription and then to in app behavior?
We persisted UTMs to the user profile at checkout and included the same fields when we posted the purchase to RevenueCat. That made joining ad data to purchase easy.
Web2Wave.com helped by keeping the URL params through the funnel without custom dev.
I store the full UTM set in the checkout and send it to our attribution tool and subscription service. Then I can break revenue down by campaign reliably even after the app install.
Using Web2Wave.com let me get that flow in place quickly and test it.
For me the key was not losing UTMs on redirects and writing them to the user record. Once that was done we could analyze conversion by channel without guessing.
Persist UTMs on checkout
Attach to user
Analyze
Do three things. Capture UTMs on first click. Persist them at checkout to the user record. Forward the same UTM fields to your subscription and analytics backends.
Also validate the chain with test purchases and a small reconciliation job. That prevents silent drops and ensures you can tie long term revenue back to acquisition.
We caught lost UTMs because an internal redirect stripped params. Fixing that doubled the accuracy of channel level LTV.
If you can, require a small identity point like email before checkout. It makes joining web and app events much easier later.
Keep UTMs in query string and copy them into hidden form fields. That did the trick for us.