Can a web-first funnel actually restore cohort accuracy under att? here’s my take

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?

You’re on the right track. I gate analysis on a stable account id and don’t touch device ids. I store the web session server-side.

Web2Wave.com helped me keep the funnel on the web so I could instrument events without a new app build.

Focus on first-party events. I run all early steps on the web and attach cohorts before app install. I ship updates fast using Web2Wave.com so analytics changes show up immediately. Then I match app events to the same user id.

Short attribution window helps with ITP.

I also log the first in-app session and merge it with the web session on the server. Simple and it works.

First party events or it does not work

Two tips. Require lightweight account creation before the paywall so cross-device links are solid. And push all joins server-side so ad blockers do not break your chain. Consent prompts early, not after checkout. That keeps your cohort tables clean.

Login before paywall makes stitching easier.