Bu yazının konusu tek bir cümlede özetlenebilir: uygulamanızda satın alma oluyor, Google Ads bunu görmüyor.
Tablo genelde şöyle. Play Console veya App Store Connect'te gelir var, muhasebe kaydında karşılığı var, kullanıcılar gerçekten ödeme yapıyor. Google Ads hesabına bakıyorsunuz: kampanya harcıyor, yükleme sayısı artıyor, dönüşüm sütununda sıfır. Ya da daha sinsi hali: sıfır değil ama mağazadaki rakamın üçte biri.
İkisi de aynı yerden geliyor. Satın alma ile Google Ads arasında dört adımlık bir zincir var ve her adımın kendi tuzağı.
Zincir
Uygulamada satın alma
→ Firebase SDK purchase olayını kaydeder
→ Olay Analytics'te önemli etkinlik olarak işaretlenir
→ Firebase projesi Google Ads ile bağlanır
→ Ads'te dönüşüm eylemi yapılandırılır
Dördü de gerekli. Üçünü yapıp dördüncüyü atlarsanız dönüşüm görünmez ve hangi adımın eksik olduğunu anlamak günler alır, çünkü hiçbir yerde hata mesajı çıkmaz.
Adım 1: Olayı doğru göndermek
Satın alma purchase olayıyla gönderilir. Bu Google'ın önerilen olay
adıdır, uydurmayın: kendi adınızı yazarsanız Ads tarafında eşleşme hiç
kurulmaz.
Olayın taşıması gereken üç şey var:
- valuesatın almanın tutarı, sayı olarak
- currencyISO 4217 kodu: TRY, USD, EUR
- items[]ürün kırılımı: item_id, price, quantity
value sayı olmalı, metin değil. En sık görülen hata bu. Olay gider,
Analytics'te görünür, ama gelir toplamı sıfır kalır çünkü değer metin
olarak geldiği için toplanamaz.
currency olmadan value işe yaramaz. Para birimi belirtilmemiş bir
tutarın Ads tarafında karşılığı yoktur. Tek para birimiyle çalışsanız
bile alanı gönderin.
Birden fazla para birimiyle satış yapıyorsanız hepsinin aynı kodla gönderildiğinden emin olun. Google'ın kendi uyarısı net: dönüşüm değerlerini karşılaştırırken olayların aynı para birimi tipi ve kodla gönderilmesi gerekir. Karışık gönderim, tutmayan bir gelir toplamı üretir ve sebebini aylar sonra ararsınız.
Ürün kırılımı gönderiyorsanız item_id değeri Merchant Center
feed'inizdeki item_id ile aynı olmalı. Aynı değilse ürün seviyesinde
raporlama ve feed'e bağlı kampanya tipleri eşleşmez.
Adım 2: Olayı önemli etkinlik olarak işaretlemek
Bu adım en çok atlanan yer ve atlandığında hiçbir şey çalışmaz.
Bir olayın Analytics'e akıyor olması, onun Google Ads'e dönüşüm olarak gidebileceği anlamına gelmiyor. Google'ın ifadesi doğrudan: hedef olay dönüşüm olarak işaretlenmemişse Google Ads onu içe aktaramaz.
İşaretleme yeri: Analytics → Yönetici → Etkinlikler, listede
purchase satırını bulup önemli etkinlik anahtarını açmak. Olay listede
görünmüyorsa henüz hiç gönderilmemiş demektir, önce Adım 1'e dönün.
Adım 3: Hesapları bağlamak
Firebase projesi ile Google Ads hesabı bağlanır. Bağlantı kurulduktan sonra hangi olayların dönüşüm eylemi olacağını listeden seçersiniz.
Bu adımda uygulamaya yeni kod yazılmaz. Google'ın ifadesi net: dönüşüm takibi Firebase için zaten kurulmuş olan kodu kullanır. Ajansınız bu aşamada sizden yeni bir sürüm istiyorsa nedenini sorun.
Yönetici hesabı üzerinden dönüşüm ölçüyorsanız veya birden fazla alt hesabın erişmesi gerekiyorsa bağlantıyı yönetici hesabına kurun, tek bir alt hesaba değil.
Adım 4: Dönüşüm eylemini yapılandırmak
İçe aktarılan olay Ads'te bir dönüşüm eylemi oluşturur ve varsayılan ayarları her zaman doğru değildir. Üç şeyi kontrol edin.
Birincil mi ikincil mi. Satın alma birincil olmalı ve Satın alma
hedefine sayılmalı. İkincil bırakılan dönüşüm raporda görünür ama teklif
stratejisini beslemez, yani algoritma ona göre optimize etmez.
Sayma ayarı. Her tıklama için her mi bir mi sayılacak. Google'ın
kuralı basit: satışta her, lead toplamada bir. Uygulama içi satın
almada her doğru olan, çünkü aynı kullanıcı birden fazla satın alma
yapabilir ve hepsi gelirdir.
Değer. Dönüşüm eylemi olayın gönderdiği value alanını kullanmalı,
sabit bir değer değil. Sabit değer verilirse 20 liralık satışla 2000
liralık satış aynı ağırlıkta sayılır ve teklif algoritması yanlış öğrenir.
Android ve iOS aynı şey değil
Buraya kadar anlatılan iki platformda da geçerli. Ama ölçümün güvenilirliği aynı değil ve bunu bilmeden kurulan beklenti hayal kırıklığıyla bitiyor.
- Play Faturalandırma satın almayı bilir
- Firebase olayı gönderir
- Ads dönüşümü eşler
- ATT izni sorulur
- İzin yoksa kullanıcı bazlı eşleme yok
- SKAdNetwork devreye girer
- yol açık
- yol kapalı
Android tarafında kod yazmadan gelen bir seçenek var. Google Play Faturalandırma kullanan uygulamalarda, reklamı tıklayan kullanıcının uygulama içi satın alması otomatik izlenebiliyor. Ön kayıtlar da aynı şekilde. Firebase kurulumu olmayan bir Android uygulamasında en hızlı başlangıç bu.
iOS tarafında durum farklı. iOS 14 sonrası gizlilik önlemleri dönüşüm takibini etkiliyor. Google Analytics for Firebase SDK'sı SKAdNetwork ile otomatik entegre oluyor, yani ölçüm tamamen kaybolmuyor, ama kullanıcı bazlı olmaktan çıkıp toplu ve gecikmeli hale geliyor.
Bu konunun kendisi ayrı bir yazıyı hak ediyor; burada bilmeniz gereken tek şey iOS rakamının Android rakamıyla aynı kesinlikte olmayacağı.
Rakamlar neden tutmayacak
Kurulum doğru yapıldıktan sonra bile Google Ads'teki satın alma sayısı mağazadaki satın alma sayısına eşit olmaz. Bu bir hata değil ve düzeltilmesi gereken bir şey değil. Sebeplerini bilmek, boşuna hata aramaktan kurtarır.
- Organik satışlarreklamdan gelmeyen satın almalar Ads'e girmez
- Dönüşüm penceresipencere dışında kalan satış sayılmaz
- Modellenen dönüşümiOS tarafında tahmin, birebir sayım değil
- İadelermağaza düşer, Ads otomatik düşmez
Organik satışlar. Mağazada gördüğünüz gelirin bir kısmı reklamdan gelmiyor. Ads yalnızca kendi tıklamasına atfedebildiğini sayar. Bu ikisi tanım gereği farklı sayılardır.
Dönüşüm penceresi. Reklamı tıklayan kullanıcı hemen satın almayabilir. Ads'in atıf penceresi dışında kalan satış o kampanyaya yazılmaz. Video reklamlarda örneğin tıklama sonrası kurulum 30 gün içinde sayılıyor, etkileşimli görüntüleme sonrası ise 2 gün.
Modellenen dönüşümler. Özellikle iOS'ta, izin vermeyen kullanıcıların davranışı tek tek ölçülmez, modellenir. Rapordaki rakamın bir kısmı gerçek sayım değil istatistiksel tahmindir.
İadeler. Mağaza iade edilen satışı gelirden düşer. Ads tarafında bu otomatik gerçekleşmez.
Google'ın kendi tavsiyesi de bu yönde: karşılaştırma yaparken dönüşüm değerlerini değil dönüşüm sayılarını karşılaştırın. Değer karşılaştırması para birimi ve iade farklarından dolayı daha kolay yanıltır.
Doğru soru "rakamlar neden eşit değil" değil, "aradaki fark makul mü ve zaman içinde sabit mi". Fark her ay benzer oranda kalıyorsa kurulum sağlamdır. Fark aniden büyüdüyse bir şey kırılmıştır.
Doğrulama
- Nerede
- Firebase konsolunda DebugView. Cihazda hata ayıklama modunu açın ve gerçek bir satın alma akışını tamamlayın.
- Doğru cevap
- Olay purchase adıyla görünüyor, yanında value ve currency parametreleri dolu.
- Yanlışsa
- value görünmüyorsa kodda gönderilmiyor. Metin olarak görünüyorsa tip yanlış, sayı olmalı.
- Nerede
- Analytics'te Yönetici, sonra Etkinlikler listesi.
- Doğru cevap
- purchase satırındaki önemli etkinlik anahtarı açık.
- Yanlışsa
- Kapalıysa Google Ads bu olayı içe aktaramaz. Zincirin en sessiz kopma noktası burasıdır.
- Nerede
- Google Ads'te Hedefler, sonra dönüşüm eylemleri listesi.
- Doğru cevap
- Satın alma eylemi Birincil ve Satın alma hedefine sayılıyor.
- Yanlışsa
- İkincil bırakılmışsa raporda görünür ama teklif stratejisini beslemez.
- Nerede
- Dönüşüm eylemleri listesinde dönüşüm değeri sütunu, son 30 gün.
- Doğru cevap
- Değer sıfırdan büyük ve mağaza cirosuyla aynı büyüklük mertebesinde.
- Yanlışsa
- Sayı var ama değer sıfırsa value alanı gitmiyor demektir. Adım 1'e dönün.
Firebase ile GA4 arasındaki iş bölümü, verinin nerede durduğu ve hangi ayarın hangi raporu etkilediği ayrı bir yazıda: Firebase Analytics mi GA4 mü.
ATT, SKAdNetwork pencereleri ve Meta'nın sekiz olay sınırı ayrı bir yazıda: iOS'ta ölçümün gerçek durumu.
Sonuç
Uygulama içi satın almanın Google Ads'e ulaşması dört adımlı bir zincir ve her adım sessizce kopabiliyor. Hiçbirinde hata mesajı çıkmıyor, yalnız rapor boş kalıyor.
En sık kopma noktası ikinci adım: olay Analytics'e akıyor, herkes kurulumun bittiğini sanıyor, ama olay önemli etkinlik olarak işaretlenmediği için Ads onu hiç görmüyor.
Kurulum bittikten sonra da Ads rakamı mağaza rakamına eşit olmayacak. Beklenecek şey eşitlik değil, farkın makul ve istikrarlı olması.
Olayın nasıl gönderildiği ve Firebase'in şema kuralları ayrı bir konu: onu mobil uygulamada dataLayer karşılığı yazısında yazdık. GTM'in bu zincirin neresinde durduğu ise GTM ile iOS ve Android'de olay takibi rehberinde.
Sık sorulan sorular
Android tarafında evet. Google Play Faturalandırma kullanan uygulamalarda satın almalar kod yazmadan otomatik izlenebiliyor. iOS tarafında ve ürün kırılımı gereken her durumda Firebase gerekiyor.
En olası sebep olayın önemli etkinlik olarak işaretlenmemiş olması. Google'ın kuralı net: işaretlenmemiş olay Ads'e içe aktarılamaz. İkinci ihtimal hesapların bağlı olmaması.
value alanı gitmiyor ya da metin olarak gidiyor demektir. Firebase DebugView'da olaya bakın: value sayı tipinde olmalı ve yanında currency bulunmalı.
Dört sebep var: organik satışlar Ads'e girmez, dönüşüm penceresi dışında kalan satışlar sayılmaz, iOS tarafında bir kısım dönüşüm modellenir, iadeler Ads'ten otomatik düşmez. Fark beklenen bir şeydir, önemli olan farkın istikrarlı olması.
Satın almada her. Aynı kullanıcı birden fazla satın alma yapabilir ve hepsi gelirdir. Bir seçeneği lead toplama için doğrudur.