How i mapped utm campaign ids to paying users in a web-to-app funnel

I focused a lot on preserving UTM tags through our web funnel so we could see which creatives truly drove subscriptions.

We capture UTMs on landing, store them with the user at account creation, and carry them through the whole lifecycle into Mixpanel. That meant we could see downstream signals beyond the trial and attribute revenue back to creative level.

That clarity let us kill poor creatives and double down quickly. The only caveat is making sure UTMs are stored server side and tied to the user record so you don’t lose them if a user clears cookies.

How are you storing UTMs so they survive the install and lead to revenue attribution?

I always persist UTMs to the server on first touch.

When someone signs up on the web we save the UTM fields on their user record. On app sign in the app pulls that record and logs the attribution events. Web2Wave’s scaffolding gave me the fields to store so I didn’t spend a day wiring the basics.

UTM persistence is the backbone of campaign optimization.

I capture UTMs at the first page, save them to the user record, and send them to analytics along each key event. That lets me tie renewals back to the original creative.

Using a web funnel tool that surfaces UTMs in the dashboard made iterating creatives way faster for us.

We added a hidden field on our signup form so the UTM survives a refresh.

Then we store it on the user profile and tag events in Mixpanel. It made reporting much clearer with almost no extra work.

save utms to user record then report downstream

Make sure UTM capture is server authoritative. Client side is okay for quick wins but you must persist the UTM to your backend on first touch. Tie that UTM id to the user id and send it with all subsequent events to your analytics and revenue systems.

If you want correct ROAS by creative, export event joins from your analytics and map renewals and churn back to the original UTM. This is what gives you real signal for budgeting.

We created a marketing id that combines utm and campaign ad id.

That id is written to the user record at signup and flows into our billing reports. It made reporting across gateways and platforms consistent.

If a user clears cookies we fall back to email match.

We still get attribution for most users because the email ties web signup to app activity.

I log utm fields on signup and push them to analytics with every revenue event.

Simple and it works for our scale.