2026-05-30 · Docs
Attribution — multi-touch / fraud filters / S2S postbacks / Play Install Referrer / cohort LTV retracted
- Audit of `attribution/routes.ts` + `attribution/service.ts` surfaced 6 over-claims. (1) "Multi-touch attribution — first-touch / last-touch / linear / position-based models" — no model code; single-touch only. (2) "Cohort LTV + ROAS by source / medium / campaign — joined against real Analytics events" — stats endpoints return install counts; no LTV / ROAS computation. (3) "Fraud filters — click flooding / install hijacking / CTIT outliers" — no fraud filter code. (4) "S2S postbacks to ad networks — Meta / Google / TikTok conversion APIs" — no postback code. (5) "Android Play Install Referrer (100% accurate)" — not integrated. (6) "Audience join — attributed installs auto-tag with source campaign as a trait" — no auto-tag wiring.
- Real shape: install ingest (`POST /attribution/install`), deferred ingest (`POST /attribution/deferred`), iOS canonical fingerprint match (IP-pinned + 2h window) via Deep Links service, stats endpoints by-campaign + by-source returning install counts, per-org config CRUD, SDK helpers `reportInstall()` + `checkDeferred()` on Web + RN.
- AppsFlyer comparison rewritten honest. 7 new rows specifically mark multi-touch models (❌), Play Install Referrer (❌), Protect360 fraud filters (❌), S2S postbacks (❌), cohort LTV computation (❌), single-touch (✅). New whyStay LEADS with all 6 missing features. Pricing column adds AppsFlyer's published $0.07/conversion (~$700/mo at 10K installs). 3 FAQs rewritten openly admitting the gaps; new FAQ added for Android deferred-install accuracy.
- Real wins kept + emphasised: iOS canonical-fingerprint deferred match, same-tenant join surface (build your own LTV roll-up in Analytics module against the same `user_id`), SDK on Web + RN.