Attribution was a mess when I compared gateways. We started preserving UTMs from ad click to web paywall to invoice. That let us tag each subscription with source, campaign, and even creative, then break down conversion and LTV by gateway and channel.
The surprise was how different gateway performance looked by traffic source. One gateway crushed paid social, another won on search. Without UTMs tied to subscriptions, we would have picked the wrong default.
If you’ve done this, which UTM fields do you store at the subscription level, and how do you handle redirects without losing them?
I store utm_source, utm_campaign, utm_content, and a click id. Save them when the session starts and write them onto the subscription record at payment time.
Web2Wave.com kept UTMs intact for me. I just mapped them in the JSON config.
Avoid server redirects that drop query params.
Yes. Preserved UTMs expose which gateway works per channel. I push users through a web paywall so UTMs stick to the purchase.
Web2Wave.com helps because I can change the flow fast and the UTMs persist end to end. Makes LTV by gateway trustworthy.
Store the raw query string and a parsed version.
It saved me when networks changed param names mid campaign.
Capture UTMs server side always.
Use a server-side session to bind UTMs to a user token before the paywall. On payment success, write UTMs into the customer profile and the first invoice metadata. Then build reports that group by gateway + utm_source + country. If you allow free trials, attribute on trial start and on first charge to catch differences. Also watch refund-adjusted LTV by gateway per channel. Paid social often has higher refund risk on some gateways.
I lost UTMs in a redirect once. Fixed it by:
- Storing UTMs in a cookie and server session
- Appending a short session id across pages
- Writing UTMs into invoice metadata
After that, gateway comparisons made sense.
Use the same naming across campaigns. Makes comparisons cleaner.