تحلیل داده
AppsFlyer
Mobile measurement platform that attributes app installs and in-app events to the ad campaigns that caused them.
نتیجه ارزیابی
شما قطعاً میتوانید یک رهگیری کلیک بسازید: کلیکها را ثبت کنید، دیپلینک بسازید، پینگهای نصب را از SDK خودتان بگیرید و در SQLite به هم متصل کنید. اما چیزی که نمیتوانید بسازید دلیل وجودی AppsFlyer است: متا، گوگل، تیکتاک و اپل دادههای خام انتساب را به سرورهای شخصی نمیدهند. این شبکههای خود-ارجاعدهنده فقط به شرکای رسمی سنجش گزارش میدهند، و گزارشهای بازگشتی SKAdNetwork/AdAttributionKit اساساً تجمیعی و دارای آستانه حریم خصوصی هستند. تشخیص تقلب در نصب را هم که یک مسئله مبتنی بر داده میان میلیاردها دستگاه است اضافه کنید تا مشخص شود که فاصله با تلاش برنامهنویسی پر نمیشود. نسخه دمدستی مناسب، یک ردیاب دستاول برای کانالهایی است که خودتان کنترل میکنید: لینکهای مستقیم، ایمیلها، کدهای اینفلوئنسرها و ورود ارگانیک از وب به اپ.
- زمان تقریبی ساخت
- چند روز
- هزینه تقریبی اجرا
- نامشخص
- اشتراک محصول اصلی
- رایگان در ماه
چه چیزی را از دست میدهی؟
- دادههای شبکههای خود-ارجاعدهنده (SAN) از Meta، Google، TikTok و Apple Search Ads که فقط به شرکای تاییدشده داده میشود
- مدیریت، رمزگشایی و مدلسازی ارزش تبدیل در گزارشهای بازگشتی SKAdNetwork و AdAttributionKit
- تشخیص تقلب در کلیک و نصب که مستلزم دادههای بین دستگاهی هزاران تبلیغدهنده دیگر است
- ارسال خودکار گزارشها (Postbacks) و همگامسازی مخاطبان با هزاران پلتفرم تبلیغاتی دیگر
- یک SDK بهروزشده و مداوم که با هر انتشار نسخه جدید سیستمعامل، تغییرات ATT و بهروزرسانیهای حریم خصوصی دوام میآورد
- تطبیق قطعی هویت کاربر در میان چند دستگاه و چند پلتفرم
پرامپت شروع
برای شروع ساخت، مستقیم کپیاش کن.
Build a self-hosted first-party mobile attribution tracker. TypeScript, Fastify, SQLite via better-sqlite3, Vite plus React for the dashboard, Docker Compose for deployment. No accounts, no cloud services, no telemetry. What it does: 1. Link service: POST /api/links creates a tracked link with campaign, source, medium, and an optional destination path in my app. Each link gets a short id served at GET /l/:id. 2. On click, /l/:id records a click row: timestamp, short id, user agent, platform guess from UA, referrer, IP truncated to /24 for IPv4 and /48 for IPv6, and a random click token set as a cookie. Then 302 to a universal link if the platform is iOS or Android, otherwise to a configured web fallback. 3. Serve /.well-known/apple-app-site-association and /.well-known/assetlinks.json from files in ./public so real deep links work. 4. Ingest endpoint: POST /api/events accepts { deviceId, eventName, clickToken?, platform, appVersion, ts, value? } authenticated by a shared secret in APP_INGEST_KEY. Store raw events untouched in an events table. 5. Attribution job: for each first_open event, attribute deterministically if clickToken matches a click. Otherwise do a probabilistic match against clicks in the last 24 hours on the same truncated IP and platform, and mark it as probabilistic with a confidence field. Never overwrite a deterministic match. Store results in an attributions table so the logic can be re-run idempotently. 6. Dashboard at /: table of campaigns with clicks, installs, deterministic versus probabilistic split, and any named post-install events. Date range picker. CSV export. 7. CLI script: npm run import-spend that loads a CSV of campaign,date,spend so the dashboard can show cost per install for channels I bought myself. Explicitly out of scope, and say so in the README: SKAdNetwork and AdAttributionKit postbacks, any integration with Meta, Google, TikTok or Apple Search Ads, fraud detection, audience syncing, and a native SDK. The client side is a documented HTTP contract only. Secrets in .env: APP_INGEST_KEY, PUBLIC_BASE_URL, WEB_FALLBACK_URL. Include a seed script with fake clicks and installs, and vitest tests covering deterministic match, probabilistic match, and the no-double-attribution rule.
برای ساختش کمک میخوای؟
به درد یکی دیگه هم میخوره؟
