ATT wrecked my install-to-subscription picture, so I rebuilt the early journey on the web and stitched later app events to a stable id:
- First touch on the web captures utms, landing referrer, device type, and a click_id. I store it server-side and set a short cookie.
- Every meaningful step is an event with timestamps: quiz completed, plan viewed, paywall viewed, checkout started, payment succeeded.
- The app adopts the same user_id on first login. It fetches the stitched context from the server, so post-install events (activation, day 1 retention, day 7 usage) join back to the original cohort.
- No device ids needed. It’s all first-party data and consented.
- What came back: cleaner cohort curves by channel, dwell-time patterns before purchase, and which onboarding steps tie to higher renewal odds.
- Tradeoffs: cross-device stitching still has gaps without login, and Safari ITP forces me to keep the attribution window short.
It’s not perfect, but cohort accuracy is good enough again to pick winners. What would you do differently to harden this under ATT and Privacy Sandbox changes?