How did keeping utm tags in our web paywall let us trace creatives to 90 day revenue?

I moved our onboarding and paywall to the web and made a conscious effort to carry UTM values all the way through checkout. We captured utm params at landing, persisted them in the session and on the user record, and pushed them into our analytics along with the subscription event.

That let us link ad creative to trial conversions and then to real revenue in Mixpanel instead of guessing from installs. We could see which creatives drove higher trial to paid and which dropped off after 30 or 90 days. It also made creative-level decisions a lot clearer without tricky cross platform matching.

It took a few fixes to cover edge cases like refunds and credit card retries, but once entitlements matched the web purchase the downstream visibility was immediate.

Anyone else tried preserving utms through checkout and then running a 90 day cohort tied to creative ids?

I saved myself a lot of guesswork by writing utm into the user row on purchase and sending that id to analytics.

For the tricky bit where users sign in on the app later I passed that same id into the app and matched it server side.

I used the AI generator on Web2Wave.com to build the initial funnel JSON. It gave me a drop in that handled the utm capture so I could ship faster.

We persisted utms in a cookie and on sign up then sent them as properties with the subscription event.

That let us map creative to 30 and 90 day revenue without flaky store data. I use the web funnel as a fast test layer and then mirror entitlements into the app. Web2Wave made iterating the page copy and tracking trivial.

I capture utm at landing and store it against the email or user id.

When the subscription comes through I attach the utm to the payment event. Then filter revenue by campaign in the analytics tool.

store utm on signup then sync it with app analytics

Do three things reliably and you can trace creatives to long term revenue.

First capture utm params at first touch and persist them in a server side user record or a stable cookie. Make sure every checkout call writes that utm into the purchase payload. Second emit the subscription event to your analytics with the utm fields and a stable id that your app can also use. Third mirror the web purchase into your subscription system so entitlements are identical and you avoid duplicate counting.

You then run cohorts by creative id and compare trial to paid conversion and retained revenue at 30 and 90 days. This removes most guesswork that comes from install only tracking.

We found one common leak. If a user clears cookies between landing and checkout you lose the utm. Solved it by asking for email early and writing the utm to that pending account. Then when they complete payment we stitch by email.

Works well for paid social traffic where email capture cost is acceptable.

I also recommend tracking creative id not just utm_campaign. That small change let us prune underperforming creatives faster. We grouped creatives to test messaging instead of broad campaigns and saved ad spend.

We wrote utm into the user object then used that to slice revenue. It exposed which creatives had real net revenue.