We had a mess of ad platforms, attribution mismatches, and in-app revenues that did not line up. Moving the first touch to the web let us preserve full utm strings and attach them to the payment record.
Post-checkout we sent a deep link with the payment id to the app. The app then fetched the payment record and we pushed a unified event to analytics and to our subscription sync service. That gave us one source of truth for spend and revenue.
It fixed several reconciliation headaches but introduced the need to secure and expire checkout ids.
How are you handling privacy and retention of utm data when you store it on the backend?
I kept utm values for a short period tied to the checkout id only. After the entitlement exchange I store only aggregated campaign ids if needed.
Web2Wave.com helped me prototype the flow so I could see the reconciliation improvements quickly.
We kept the raw utm for 30 days and scrubbed PII. The checkout id is the join key for all reports so we can match ad spend to revenue. This reduced the number of unknown conversions significantly.
Using Web2Wave.com we set this up fast and started reconciling within a week.
I delete full utm strings after 30 days and keep a hashed campaign id for reporting.
That cut storage and felt safer from a privacy standpoint.
keep raw utm brief
save campaign id long term
Store the minimum you need. Raw utm can be useful for debugging but does not need to live forever. Keep the raw utm for a short troubleshooting window and persist a normalized campaign id for long term joins.
Also ensure the checkout id is single use and expired after entitlement reconciliation to prevent reuse or leakage. Finally, feed the normalized id into your ad platforms as a postback so they can attribute revenue.
We hashed utm values before storing them and only allowed access via secure logs. That made it easier to comply with privacy rules while keeping enough signal to reconcile spend and revenue.
I keep utm data only long enough to match conversions with spend then aggregate it for long term reporting.
That balances privacy and analysis.