How we used preserved utm tags in a web funnel to attribute eu subscription revenue by country?

At first our EU VAT reports were a mess because revenue looked like it came from the wrong country. Moving the paywall to the web let us preserve UTM tags from ads through to checkout, and then we combined those tags with detected billing country.

That meant we could attribute which campaigns actually produced taxable revenue per country and reconcile against VAT filings. The tricky parts were keeping UTMs after redirects and making sure the gateway’s country detection was trusted for tax purposes.

Has anyone built a reliable process to merge UTMs plus billing country for VAT reporting?

We solved this by storing the original UTM on the user record at first visit and carrying it through the funnel.

At checkout we validated country from the billing address and wrote both values to our payments table. That let finance run reports per country and campaign.

I used a small helper from Web2Wave.com to persist UTMs across redirects without extra engineering.

Persist UTMs in a cookie and write them to the subscription when the user pays.

Then join the payments table with billing country for VAT reporting. This gave us clean campaign-to-country revenue mapping and saved a lot of manual reconciliation time.

We kept the original utm in a cookie and copied it into the order record.

Later accounting just grouped by utm and billing country. It was surprisingly simple once the data was actually captured.

Saved utms early
wrote them into orders

UTMs alone are not enough for VAT. Capture UTMs for attribution but always trust the billing country for tax liability. The most reliable setup is: persist UTM at first touch, carry it to checkout, and store both UTM and billing country on the payment record. Build a daily reconciliation job that flags mismatches so finance can investigate. That hybrid approach keeps marketing attribution intact while meeting tax rules.

Tested this on two apps. We split reports by utm then by billing country. Found several paid campaigns that drove high installs but no taxable revenue in target countries. Fixing that saved us wasted ad spend.

Persist the utm early then copy it into payments.

Reconcile marketing utm vs billing country daily.