Bu not, ölçümleme kümesinde yalnızca MMP ve GA4 rapor farkının sahibidir; GA4 kurulum rehberi, event checklist aracı ve genel ölçümleme mimarisi ayrı sayfalardır. Eğer AppsFlyer veya Adjust’tan haftalık kurulum raporu çekip GA4 ile karşılaştırdıysanız, sonucu zaten biliyorsunuzdur: rakamlar hiçbir zaman tutmuyor. MMP’nizin 4.200 kurulum atfettiği bir kampanya GA4’te 2.900 first_open etkinliği olarak görünebilir. Tersi de olabilir. Bu farkların neden var olduğunu anlamak, ekibinizin gerçekten güvenebileceği bir raporlama çerçevesi oluşturmanın ilk adımıdır.
MMP ve GA4 attribüsyon modelleri neden farklı?
AppsFlyer, Adjust ve Branch gibi MMP’ler genellikle son tıklama bazlı, deterministik bir modelle çalışır. Kurulumdan önceki son tıklamaya kredi atar ve cihaz düzeyindeki reklam etkileşimlerini kullanırlar. GA4 ise 2023 sonundan itibaren varsayılan olarak veriye dayalı attribüsyon modeli kullanır ve dönüşüm yollarına göre fraksiyonel kredi dağıtır. İki farklı felsefe, iki farklı rakam.
Aşağıdaki tablo iki sistemin yapısal farklarını yan yana koyuyor.
| Konu | MMP (AppsFlyer/Adjust) | GA4 |
|---|---|---|
| Atıf modeli | Last-touch deterministik + fingerprint fallback | Data-driven (ML, 2023+) |
| Veri kaynağı | Cihaz-level reklam etkileşimi (SDK) | SDK + web pageview + first_open |
| Kredi dağılımı | Son tıklamaya %100 | Touchpoint'lere fraksiyonel (path-based) |
| iOS sonrası ATT | SKAdNetwork postback'leri ile çalışır | SKAN consume etmez, kendi SDK olayları |
| Birincil kullanım | Medya satın alma kararı | On-site ve in-app davranış |
MMP ve GA4 lookback pencereleri nasıl hizalanır?
Çoğu MMP varsayılan olarak 7 gün tıklama ve 24 saat görüntüleme lookback penceresi kullanır. GA4 ise 30 gün varsayılan etkileşim lookback’i kullanır. Bu, tıklamadan sekiz gün sonra gerçekleşen bir kurulumun MMP’nizde “organik” olacağı, ancak ara bir web sitesi ziyareti varsa GA4’te hala ücretli kampanyaya atfedilebileceği anlamına gelir. Lookback pencerelerini hizalamak yapabileceğiniz en ucuz düzeltmelerden biridir, ancak çoğu ekip bunu asla yapmaz.
Pratik hizalama için hangi pencerede ne kullanılır:
| Sistem | Tıklama (click-through) | Görüntüleme (view-through) | Engagement |
|---|---|---|---|
| AppsFlyer (varsayılan) | 7 gün | 24 saat | - |
| Adjust (varsayılan) | 7 gün | 1 saat | - |
| Meta Ads (kanal-bazlı) | 1-7 gün (negotiable) | 1 gün | - |
| GA4 (default) | 30 gün | - | 30 gün |
SKAdNetwork ve iOS gizlilik katmanı
ATT sonrası, iOS dönüşümlerinin önemli bir bölümü SKAdNetwork postback’leri üzerinden gelir; bunlar gecikmeli, toplu ve cihaz düzeyinde tanımlayıcılardan arındırılmıştır. MMP’ler bu postback’leri alıp kampanyalara eşlemeye çalışır, ancak veri doğası gereği kayıplıdır. GA4 SKAN postback’lerini doğrudan tüketmez; kendi SDK etkinliklerine dayanır. Sonuç, iOS’ta hiçbir dashboard yapılandırmasının tamamen kapatamayacağı yapısal bir boşluktır.
Uzlaştırma katmanı oluşturmak
Bunu iyi yöneten ekipler, genellikle haftalık bir BigQuery işi veya Looker Studio sayfası olan hafif bir uzlaştırma katmanı oluşturur. Her iki kaynaktan ham verileri çeker, kampanya adlandırma kurallarını normalize eder ve tek bir birleşik görünüm üretir. Temel sütunlar mmp_installs, ga4_first_opens, delta_pct ve yüzde 20’nin üzerindeki herhangi bir sapma için bir bayrak’tır.
Uzlaştırma sorgusunun temel iskeleti aşağıda. AppsFlyer'in raw data export'unu BigQuery'e bağladıktan sonra GA4 export ile birleştirilir:
BigQuery · MMP vs GA4 reconciliationWITH mmp AS (
SELECT
DATE(install_time) AS date,
campaign_name,
COUNT(DISTINCT app_id || advertising_id) AS mmp_installs
FROM `project.appsflyer.installs`
WHERE DATE(install_time) BETWEEN @start_date AND @end_date
GROUP BY 1, 2
),
ga4 AS (
SELECT
event_date AS date,
traffic_source.name AS campaign_name,
COUNT(DISTINCT user_pseudo_id) AS ga4_first_opens
FROM `project.analytics_xxx.events_*`
WHERE event_name = 'first_open'
AND _TABLE_SUFFIX BETWEEN @start_date AND @end_date
GROUP BY 1, 2
)
SELECT
COALESCE(mmp.date, ga4.date) AS date,
COALESCE(mmp.campaign_name, ga4.campaign_name) AS campaign,
mmp_installs,
ga4_first_opens,
SAFE_DIVIDE(ga4_first_opens - mmp_installs, mmp_installs) AS delta_pct,
IF(ABS(SAFE_DIVIDE(ga4_first_opens - mmp_installs, mmp_installs)) > 0.20, 'INVESTIGATE', 'OK') AS flag
FROM mmp
FULL OUTER JOIN ga4 USING (date, campaign_name)
ORDER BY date DESC, ABS(delta_pct) DESC;
Bu sorguyu haftalık scheduled query olarak çalıştır, sonucu Looker Studio'ya bağla. flag = "INVESTIGATE" satırlar otomatik incelemeye düşer; %20'den daha büyük varyans her zaman bir attribution mismatch'ine işaret eder.
Kaynaklar / Sources
- Apple Developer: SKAdNetwork
- Apple Developer: App Tracking Transparency
- Google Analytics: attribution settings
- Adjust: attribution windows
MMP ve GA4 hakkında sıkça sorulanlar
AppsFlyer veya GA4 tek başına yeterli mi?
Mobile-first marka için MMP zorunlu (medya optimizasyonu için cihaz-level kredi gerek). Web-only marka için GA4 yeterli (atribüsyon ve davranış analizi için). Hybrid (web + app) marka için ikisi de gerek; MMP medya satın almayı, GA4 ürün davranışını ölçer. "Tek araç tüm cevapları verir" sözüne kanma; her aracın kör noktası var.
iOS ATT sonrası kayıp veriyi nasıl geri kazanırım?
Tam geri kazanım yok; yapısal kayıp. Üç telafi: (1) SKAdNetwork postback'lerini doğru consume et, MMP'in postback consolidation'ı kullan. (2) Server-side tracking (CAPI Meta'da, Enhanced Conversions Google'da) ekle; first-party data dropoff'u %15-25 azaltır. (3) Modeled conversions'ı ayrı raporla; "kanıtlı" değil "tahmini" olduğu için medya kararına %50 ağırlıkta katıl. ATT sonrası iOS verisinin %75'i tahmin; bunu kabullen.