Mobil app

GTM ile iOS ve Android'de olay takibi: sıfırdan kurulum

Mobil uygulamada olayı Firebase toplar, GTM yönetir. İkisinin iş bölümü, iOS ve Android kurulumu, olay şeması ve satın almanın Google Ads'e dönüşüm olarak gitmesi.

6 ağustos 2026 tarihinde güncellendi14 dk okuma

Mobil uygulaması olan şirketlerde tekrar eden bir sahne var.

Uygulama içindeki satın alma çalışıyor, mağaza raporunda gelir görünüyor, muhasebe kaydında karşılığı var. Google Ads hesabına bakıyorsunuz: kampanya harcıyor, yükleme sayısı artıyor, dönüşüm sütununda ya sıfır var ya da mağazadaki rakamın üçte biri.

Bu, reklam yönetiminin sorunu değil. Uygulamada olay ölçümünün web tarafından farklı çalışmasının sonucu. Web'de kırık bir kurulumu tarayıcının konsolunu açıp yarım saatte görürsünüz. Uygulamada aynı kırıklık bir sonraki sürüm çıkana kadar orada durur.

Bu rehber, uygulamada bir olayın nerede doğduğunu, hangi katmanda değiştirilebildiğini ve Google Ads'e dönüşüm olarak nasıl gittiğini adım adım anlatıyor. Her adımda hem ne yapılacağını hem de bunu nasıl doğrulayacağınızı yazdık.

Önce bir yanlış anlamayı düzeltelim

Türkçe kaynakların çoğunda "GTM ile uygulamada event takibi" ifadesi geçiyor ve bu, kurulumu ilk kez yapan ekibi yanlış yere götürüyor.

Google Tag Manager mobil uygulamada olay toplamaz. Google'ın kendi dokümanındaki ifade net: Tag Manager, Google Analytics for Firebase SDK'sının kaydettiği olayları, parametreleri ve kullanıcı özelliklerini girdi olarak kullanır.

Yani sıralama şöyle: olayı uygulamanın kodu üretir, Firebase SDK'sı kaydeder, GTM araya girip onu değiştirir veya engeller, sonra olay Analytics'e ve oradan Google Ads'e gider.

İşKim yaparDeğiştirmek için
Olayın tetiklenmesiUygulama koduYeni sürüm gerekir
Olayın kaydedilmesiFirebase SDKYeni sürüm gerekir
Olay adının değişmesiGTMContainer yayını yeter
Parametre değerinin değişmesiGTMContainer yayını yeter
Olayın engellenmesiGTMContainer yayını yeter
Otomatik olayların engellenmesiHiç kimseMümkün değil

Bu tablo rehberin geri kalanının özeti. GTM'i kurmanın tek somut karşılığı en sağdaki sütun: kodu tekrar derlemeden, mağaza incelemesini beklemeden olay adını ve parametreyi değiştirebilmek.

Firebase SDK kurulu değilse GTM'in okuyacağı hiçbir şey yoktur. Container uygulamaya eklenir, hata vermez, hiçbir şey de yapmaz. Sıralama tartışmaya kapalı: önce Firebase, sonra GTM.

Web tarafından geliyorsanız

Web'de GTM kurmuş bir ekip uygulamaya geçtiğinde aynı zihinsel modeli taşıyor ve bir yerde takılıyor. Web'de zincir şöyle: site dataLayer dizisine bir nesne iter, GTM bunu okur, tag'i tetikler ve isteği kendisi gönderir. GTM orada hem okuyucu hem göndericidir.

Uygulamada dataLayer diye bir şey yok. Olayı Firebase SDK kaydeder ve Analytics'e kendisi gönderir. GTM gönderici değil, araya giren katmandır: SDK kaydetmeden hemen önce olaya müdahale eder.

Farkın pratik sonucu şu: web'de GTM'i kaldırsanız ölçüm durur, uygulamada GTM'i kaldırsanız ölçüm devam eder, yalnız esneklik gider. Bu yüzden uygulamada "GTM kuralım da ölçüm başlasın" cümlesi anlamsız, "GTM kuralım da ölçümü sürümden bağımsız yönetelim" cümlesi doğrudur.

İki yapının alan alan karşılaştırması, Firebase'in adlandırma kuralları ve sınırları ayrı bir yazıda: mobil uygulamada dataLayer karşılığı.

Zincir dört halkadan oluşuyor

  • veri akışı
  • boş veya kesilmiş akış
  • GTM container

Dikkat edin: Google Ads sonuncu halka. Ekipler genellikle oradan başlıyor, dönüşüm görünmeyince kampanyayı kurcalıyor. Sebep neredeyse her zaman birinci veya ikinci halkada.

Adım 1: Firebase ve Analytics SDK'sı

Bu adım atlanamaz, çünkü GTM'in besleneceği veri buradan geliyor.

Firebase konsolunda proje açılır, iOS ve Android uygulamaları ayrı ayrı eklenir. Her platform kendi yapılandırma dosyasını indirir (google-services.json ve GoogleService-Info.plist) ve bu dosyalar projeye konur. Ardından Analytics SDK'sı bağımlılık olarak eklenir.

Buraya kadarı standart Firebase kurulumu ve dokümantasyonu bol. Asıl kritik nokta bundan sonrası.

Üç tür olay var ve karıştırılmamalı

Analytics'te olaylar üç gruba ayrılıyor ve hangisini kullandığınız raporda ne göreceğinizi belirliyor:

OLAY TÜRLERİ3 grup
  • Otomatik toplananSDK kendi kaydeder, kod yazılmaz
  • Önerilenadı ve parametresi önceden tanımlı
  • Özeladını siz koyarsınız

Otomatik toplananlar SDK kurulduğu anda akmaya başlar. Uygulamaya özgü olanların bir kısmı şunlar: first_open, session_start, app_update, os_update, app_remove (yalnız Android), app_store_refund (yalnız Android), app_store_subscription_renew, app_store_subscription_convert.

Önerilen olaylar adı ve parametre yapısı Google tarafından tanımlanmış olaylardır. Kodu siz yazarsınız ama isim uydurmazsınız: view_item, add_to_cart, begin_checkout, purchase, in_app_purchase. Bunları kullanmanın somut karşılığı var, standart raporlar ve Ads entegrasyonu bu adları tanıyor.

Özel olaylar son çaredir. Google'ın kendi ifadesi şu: özel olayı yalnızca başka hiçbir olay işinizi görmüyorsa oluşturun, çünkü özel olaylar standart raporların çoğunda görünmez.

En sık yapılan hata burada: ekip satin_alma veya PurchaseCompleted gibi kendi adını uydurup özel olay yazıyor. Rapor boş kalıyor, Ads tarafında dönüşüm eşleşmiyor, altı ay sonra hepsi yeniden yazılıyor. Karşılığı olan bir önerilen olay varsa onu kullanın.

Uygulamanız e-ticaret değilse

Örneklerin çoğu e-ticaret üzerinden veriliyor ve bu, sepeti olmayan uygulamaları kurulumun dışında bırakıyor. Analytics'in önerilen olay listesi tek bir sete değil, iş modeline göre gruplara ayrılıyor.

İş modeliÖnerilen olaylarAna dönüşüm
Satış (e-ticaret, seyahat, eğitim)view_item, add_to_cart, begin_checkout, add_payment_info, purchasepurchase
Lead toplama (B2B, sigorta, otomotiv)generate_lead, qualify_lead, working_lead, close_convert_leadgenerate_lead
Oyunlevel_start, level_end, level_up, post_score, unlock_achievement, spend_virtual_currencyin_app_purchase
Her uygulamalogin, sign_up, search, share, select_content, tutorial_begindeğişir

Lead toplama setindeki son üç olay dikkat çekici: qualify_lead, working_lead ve close_convert_lead uygulamada gerçekleşmez. Bunlar satış ekibinin CRM'de yaptığı işi ölçmek içindir ve oraya offline aktarımla girer. Bu ayrım, uygulamadan gelen lead'in gerçekten satışa dönüp dönmediğini görmenin tek yoludur.

Bir abonelik uygulaması için ana dönüşüm purchase değil, app_store_subscription_convert olabilir. Bu olay otomatik toplanır, yani kod yazmanız gerekmez, ama Google Ads tarafında dönüşüm eylemi olarak seçilmesi gerekir. Seçilmezse ücretsiz denemeden ücretliye geçen kullanıcı reklam raporunda hiç görünmez.

Kullanıcı özelliklerini atlamayın

GTM'in okuduğu üçüncü girdi kullanıcı özellikleri. Olaydan farkları, kullanıcıya yapışmaları ve sonraki bütün olaylara eşlik etmeleri.

Uygulamada işe yarayan örnekler: üyelik seviyesi, abonelik durumu, oturum açmış olup olmama, uygulamanın ilk açılış tarihi. Bunlar raporlarda kırılım olarak kullanılabiliyor ve Google Ads tarafında kitle tanımına girebiliyor.

Sınır 25 kullanıcı özelliği ve pratikte bu bol bir rakam. Buna rağmen çoğu kurulumda hiç kullanılmıyor, sonra "ödeme yapan kullanıcıların davranışı nasıl" sorusuna cevap veremiyoruz.

Kullanıcı özelliğine kişisel veri yazmayın. Ad, e-posta, telefon veya kullanıcı kimliği yerine sınıflandırma yazın: premium, deneme, ucretsiz. Analytics'e kişisel veri gönderilmesi hem politikaya aykırıdır hem de hesabın kapanmasına yol açabilir.

Sayılabilir sınırlar

Uygulama veri akışlarında Analytics'in koyduğu sınırlar şunlar:

ANALYTICS SINIRLARIuygulama veri akışı
  • Farklı olay adı500 (kullanıcı başına)
  • Olay başına parametre25
  • Kullanıcı özelliği25

Otomatik toplanan olaylar farklı olay adı sınırına dahil değil, yani o 500 tamamen sizin tanımladıklarınıza kalıyor. Pratikte bu bol bir rakam, ama uygulamanın her düğmesine ayrı olay adı veren kurulumlarda tükenebiliyor. Doğru yaklaşım az sayıda olay adı, çok sayıda parametre.

Adım 2: GTM container'ı eklemek

Kurulum sırası platformlar arasında benziyor, dosya yerleşimi ayrışıyor.

GTM MOBİL KURULUM SIRASI
  1. 1Firebase Analytics çalışıyorSDK kurulu, olaylar Firebase konsolunda görünüyor.görünen: DebugView'da olay akışı var
  2. 2Doğru container tipiTag Manager'da iOS veya Android container açılır. Legacy tipleri seçilmez.görünen: Container kimliği GTM ile başlıyor
  3. 3SDK bağımlılığıGTM kütüphanesi projeye eklenir, derleme başarılı olur.görünen: Uygulama hatasız derleniyor
  4. 4Varsayılan container dosyasıTag Manager'dan indirilen sürüm dosyası projedeki doğru klasöre konur.görünen: Uygulama internetsiz açıldığında da tag yapılandırması var
  5. 5YayınContainer yayınlanır, uygulama güncellenmiş sürümü kendisi indirir.görünen: Yaklaşık 12 saatte bir yenileniyor

Legacy container tipleri 30 Haziran 2019'dan beri yeni oluşturulamıyor. Bugün açacağınız container zaten standart tip olacak, ama devraldığınız eski bir projede "Android (Legacy)" görürseniz o kurulumun Firebase ile konuşmadığını bilin.

Android

Bağımlılık modül düzeyindeki Gradle dosyasına eklenir:

dependencies {
    implementation 'com.google.android.gms:play-services-tagmanager:18.3.0'
}

Container dosyası Tag Manager arayüzündeki Versions sekmesinden indirilir ve projede şu klasöre konur:

app/src/main/assets/containers/GTM-XXXXXXX

containers klasörü yoksa elle oluşturulur. Klasör adı çoğuldur ve büyük harf duyarlıdır.

iOS

CocoaPods kullanıyorsanız:

pod 'GoogleTagManager', '~> 6.0'

Swift Package Manager kullanıyorsanız paket adresi şu:

https://github.com/googleanalytics/google-tag-manager-ios-sdk.git

SPM tarafında kolay atlanan bir ayar var: Build Settings altında Other Linker Flags alanına -ObjC eklenmezse kütüphane doğru bağlanmıyor.

Container dosyası proje kökünde container adlı bir klasöre konur:

PROJECT_ROOT/container/GTM-XXXXXXX.json

Xcode'a eklerken Create folder references seçeneği işaretlenmeli. İşaretlenmezse Xcode klasörü grup olarak alır, dosya derlemeye girmez ve uygulama container'ı bulamaz.

Android'de klasör adı containers, iOS'ta container. Tekil ve çoğul farkı gerçek ve iki platformu aynı kişi kurduğunda en sık buradan hata çıkıyor.

Varsayılan container ne işe yarar

Uygulama ilk kez açıldığında henüz Tag Manager'dan bir şey indirmemiştir. Projeye koyduğunuz dosya o boşluğu doldurur. Uygulama internete bağlanıp güncel sürümü indirdikten sonra varsayılan container bir daha kullanılmaz.

Pratik sonuç: o dosyayı güncel tutmanın uzun vadede bir anlamı yok, ama uygulamanın ilk açılışında ölçüm yapılmasını istiyorsanız boş bırakılamaz.

Adım 3: GTM'in gerçekten işe yaradığı yer

Buraya kadarki kurulum tek başına ölçümü iyileştirmez. Değeri şurada ortaya çıkıyor.

Diyelim ki uygulamanın 4.2 sürümünde satın alma olayı gelir bilgisini kuruş olarak gönderiyor. Analytics'te ciro yüz kat yüksek görünüyor, Google Ads yanlış değere göre teklif veriyor.

PARAMETRE DÜZELTMESİGTM container kurulu
4.2 SÜRÜMÜyayında
  • eventpurchase
  • value254.90
  • currencyTRY
  • düzeltmecontainer yayını

Düzeltme container'da. Değişken değeri yüze böler, container yayınlanır, uygulama sonraki yenilemede alır. Kod dokunulmadan kalır.

Google'ın dokümanında bu yetenek açıkça yazılı: Tag Manager, olayları Firebase SDK kaydetmeden önce değiştirebilir veya engelleyebilir, parametre değerlerini ekleyebilir, çıkarabilir, değiştirebilir ve olay adlarını uygulama güncellemesi olmadan düzeltebilir.

Yapamadığı şey de aynı netlikte: otomatik toplanan olaylar engellenemez. first_open veya session_start sizin kontrolünüzde değil.

Bu neyi mümkün kılıyor

Uygulama tarafında sürüm döngüsü yavaştır. Ölçüm tarafında ise düzeltme ihtiyacı sık çıkar: bir parametre yanlış tipte gelir, bir olay adı standarda uymaz, bir kampanya için geçici olarak ek parametre gerekir.

GTM kurulu bir projede bunların hepsi container yayınıyla çözülür. Kurulu olmayan projede her biri ayrı bir sürüm planlama toplantısına dönüşür. Fark budur, başka bir şey değil.

Adım 4: Satın almayı Google Ads'e dönüşüm olarak göndermek

Ölçüm kurulumunun para tarafına bağlandığı yer burası ve çoğu kurulumun yarım kaldığı yer de burası.

Analytics'e akan bir olay, kendiliğinden Google Ads'te dönüşüm olmaz. Bunun için iki şeyin yapılması gerekiyor: hesapların bağlanması ve olayın dönüşüm eylemi olarak seçilmesi.

Google Ads tarafında yeni bir dönüşüm eylemi oluştururken App türü seçilir ve kaynak olarak Google Analytics (Firebase) bağlantısı kullanılı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.

Satın alma olayında ürün kimliğini gönderiyorsanız item_id değerinin Merchant Center feed'indeki item_id ile aynı olması gerekir. Aynı değilse ürün seviyesinde raporlama ve feed'e bağlı kampanya tipleri eşleşmez.

Doğrulama: kurulmuş saymak yetmez

Doğrulanmamış kurulum, kurulmamış kurulumdur. Dört madde, dört ayrı konsol.

1Olay gerçekten kaydediliyor mu?Firebase
Nerede
Firebase konsolunda DebugView. Cihazda hata ayıklama modunu açın ve uygulamada ilgili akışı baştan sona yapın.
Doğru cevap
Olay adı ve parametreleri saniyeler içinde akışta beliriyor.
Yanlışsa
Olay hiç görünmüyorsa kod tetiklenmiyor veya SDK kurulumu eksik. Bu noktada GTM'e bakmanın anlamı yok.
2Container uygulamaya inmiş mi?GTM
Nerede
Tag Manager'da Preview modu, ardından cihazı önizleme oturumuna bağlayın.
Doğru cevap
Önizleme ekranında olaylar listeleniyor ve tetikleyicilerin durumu görünüyor.
Yanlışsa
Bağlantı kurulmuyorsa container dosyası yanlış klasörde olabilir. iOS'ta Create folder references, Android'de containers klasör adını kontrol edin.
3Olay Analytics'e ulaşıyor mu?GA4
Nerede
Analytics'te Realtime raporu, uygulama veri akışı seçili.
Doğru cevap
Son 30 dakikada olay sayısı artıyor ve parametre değerleri doğru tipte.
Yanlışsa
DebugView'da görünüp burada görünmüyorsa olay filtreleniyor veya veri akışı yanlış seçilmiş.
4Dönüşüm Ads'te sayılıyor mu?Ads
Nerede
Google Ads'te Hedefler bölümünde dönüşüm eylemleri listesi.
Doğru cevap
Dönüşüm eyleminin durumu etkin ve son 30 günde sıfırdan büyük bir rakam var.
Yanlışsa
Rakam sıfırsa olay dönüşüm eylemi olarak seçilmemiş veya bağlantı kurulmamış olabilir.

Dördü de geçmeden kampanya optimizasyonuna geçmeyin. Yanlış veriyle çalışan bir kampanyanın öğrendiği her şey, sonradan silinmesi gereken yanlış bir öğrenmedir.

Sık yapılan altı hata

Firebase'i atlayıp GTM ile başlamak. Container kurulur, hata vermez, hiçbir şey de olmaz. GTM'in girdisi Firebase SDK'sının kaydettiği olaylardır.

Her ekrana ayrı özel olay adı vermek. 500 farklı olay adı sınırı bol görünür ama böyle bir kurulumda tükenir. Az olay adı, çok parametre.

Önerilen olay yerine kendi adını uydurmak. satin_alma yazan kurulumda standart raporlar boş kalır, Ads eşleşmesi kurulmaz.

Klasör adını karıştırmak. Android containers, iOS container.

iOS'ta Create folder references seçeneğini atlamak. Dosya projede görünür, derlemeye girmez, uygulama container'ı bulamaz.

Otomatik olayları engellemeye çalışmak. Mümkün değil, dokümanda açıkça yazıyor. Rapor gürültüsünü olay engelleyerek değil, rapor tarafında filtreyle çözün.

Ne zaman GTM kurmaya değmez

Her uygulamanın GTM'e ihtiyacı yok ve gereksiz katman bakım maliyetidir. Şu üç durumda kurulumu ertelemek daha doğru:

Olay şeması henüz oturmadıysa. GTM var olan olayları yönetir, olmayanı üretmez. Önce hangi olayın hangi ekranda tetikleneceğini kağıt üstünde netleştirin, sonra kodlayın, sonra GTM'i düşünün.

Sürüm döngüsü zaten hızlıysa. İki haftada bir yayın yapan, mağaza incelemesini beklemeden dağıtabilen bir ekipte GTM'in getirdiği esneklik küçülür. Kazanç, kurulum ve bakım maliyetinin altında kalabilir.

Ölçümü yalnız bir kişi kullanıyorsa ve o kişi geliştiriciyse. GTM'in asıl faydası, kod yazmayan birinin ölçüm yapılandırmasını değiştirebilmesi. Pazarlama tarafında container'a dokunacak kimse yoksa aynı işi kodda yapmak daha az katman demektir.

Kurmaya değdiği durum bunların tersi: şeması oturmuş, sürüm döngüsü yavaş ve ölçüm yapılandırmasını pazarlama tarafının da değiştirmesi gereken bir uygulama.

Sonuç

Uygulamada ölçüm iki katmanlıdır ve karıştırıldığında kurulum yarım kalır. Firebase SDK olayı üretir, GTM onu yönetir. Birincisi olmadan ikincisinin okuyacağı veri yoktur, ikincisi olmadan her düzeltme bir sürüm bekler.

Doğru kurulmuş bir zincirde satın alma olayı uygulamada tetiklenir, GTM'de standarda çekilir, Analytics'te raporlanır ve Google Ads'te dönüşüm olarak sayılır. Bu dört halkanın hepsi ayrı ayrı doğrulanabilir ve doğrulanmadan kurulmuş sayılmaz.

Sık sorulan sorular

  • Evet. Firebase SDK tek başına olayları toplar ve Analytics'e gönderir. GTM'in kattığı şey ölçümün kendisi değil, ölçümü uygulama sürümünden bağımsız yönetebilmektir: olay adını ve parametre değerini container yayınıyla değiştirebilirsiniz.

  • Yayınladığınız sürüm uygulamaya yaklaşık 12 saatte bir iner. Bu yüzden container değişikliği anında yayına girmez. Test ederken Preview modu kullanın, o anlık çalışır.

  • Hayır. Google'ın dokümanında açıkça yazıyor: otomatik toplanan olaylar engellenemez. Rapor tarafında filtre ile veya ilgili olayı dönüşüm olarak işaretlememekle yönetebilirsiniz.

  • Hayır. Firebase projesi Google Ads ile bağlandıktan sonra hangi olayların dönüşüm eylemi olacağını arayüzden seçersiniz. Dönüşüm takibi zaten kurulu olan Firebase kodunu kullanır.

  • Evet. Tag Manager'da iOS ve Android ayrı container tipleridir, her platform kendi container kimliğini taşır ve dosya projede farklı klasöre konur.

Ücretsiz audit

Kurulumunuzu 48 saat içinde inceleyelim.

Hesap erişimi gerekmiyor. Site adresi ve kısa bilgi yeterli, kalanını biz kontrol ediyoruz.

  1. 01AuditMevcut kurulum 12 madde üzerinden incelenir.
  2. 02Audit raporu12 maddelik incelemenin sonucu: ne çalışıyor, ne çalışmıyor, hangi sırayla düzeltilmeli.
  3. 03Görüşme30 dakikalık arama, soru-cevap. Yükümlülük yok.
  4. 04KararÇalışmak isterseniz plan çıkarırız. İstemezseniz audit raporu sizde kalır.
  • 12 maddelik inceleme
  • 48 saat içinde
  • Yükümlülük yok

Audit talebi

Göndererek gizlilik politikasını kabul etmiş olursunuz. Hesap erişimi bu aşamada istenmez.