SEM

Rekor Günün Yarısı Bot Çıktı: Google Ads'te Sahte Tıklamayı Nasıl Yakaladım

GrowthMadre··9 dk okuma

Lansman gecesiydi. Kaş'ta bir dalış merkezi yönetiyorum (Google Ads tarafını); aylardır beklediğimiz yeni web sitesini sabaha karşı canlıya almıştık. Ertesi akşam panele baktım: 19 dönüşüm, 56₺ blended CPA. Önceki günlerin üç katı hacim, yarı maliyet. Hedefimiz olan günde 10-20 temas bandını ilk kez yakalamıştık — tam da sitenin açıldığı gün.

İki gün sonra, Görüntülü kampanyanın dönüşümlerinin yarısının insan olmadığını öğrendim.

Bu yazı o iki günün hikâyesi: şüphenin nasıl doğduğu, ilk teşhisimin nasıl yanlış çıktığı, kesin kanıtın hangi veriden geldiği ve çözümü hangi üç katmanla kurduğumuz. Teori yok; her adımda gerçek sorgular, gerçek rakamlar, gerçek geri dönüşler var.

Şüphe: "Bu kadar ucuz dönüşüm olmaz"

Görüntülü kampanya birden parlamıştı: günde 6-7 dönüşüm, 12-25₺ CPA. Arama kampanyası aynı temasları 64₺'ye alırken, Görüntülü'nün dörtte bir fiyata "dönüştürmesi" ya bir mucizeydi ya da bir yalan.

İlk kontrol: yerleşim raporu (Ads API'de detail_placement_view). 14 günün dönüşüm yazan yerleşimleri:

YerleşimNe bu?Dönüşüm
lsmagazineimg.comXiaomi/Oppo kilit ekranı magazin feed'i7
fnyfeds.comDosya paylaşım uygulaması içi haber akışı2
apdownload.comAPK indirme sayfası — üstelik 0 tıklamayla 2 dönüşüm2
oyun siteleri (5-6 domain)çocukların kazara tıkladığı ucuz envanter5+

Sektörün buna bir adı var: MFA — Made for Advertising. Tek amacı reklam gösterip tıklama üretmek olan siteler. ANA'nın çalışmasına göre programatik harcamaların ~%15'i bu envantere akıyor.

İlk teşhisim keskindi: "Dönüşümlerin %96'sı sahte."

Yanlış alarm: Yer-gerçeği testi

Sonra işletme sahibine tek bir soru sorduk: "Dün gerçekte kaç arama, kaç WhatsApp mesajı geldi?"

Cevap: 5 arama + 20 WhatsApp = 25 gerçek temas. Panelin yazdığı: 19.

Gerçek, raporlanandan fazlaydı. Sayaç şişirmiyordu — tersine, reklam-dışı kanalları (organik, Haritalar) hiç saymıyordu. "%96 sahte" iddiamı geri aldım.

Ders 1: Yerleşim imzası şüphe üretir; hükmü yer-gerçeği verir. Kilit ekranı feed'inden gelen trafik "kesin sahtedir" diyemezsin — raporlanan sayıyı gerçek telefonla/WhatsApp'la kıyaslamadan hiçbir teşhis kesinleşmez. (Başka bir hesapta aynı testi yapmıştık: raporlanan 34 WA/güne karşı gerçek ~10 mesaj — orada sahtelik böyle kanıtlanmıştı. Aynı test, iki zıt sonuç.)

Kesin kanıt: Dakika-düzeyi oturum forensiği

Ama içim rahat değildi. Toplamlar tutuyordu; peki kredi doğru muydu? Görüntülü'nün "ben getirdim" dediği temaslar gerçekten kilit ekranından mı geliyordu?

Kırılma anı, GA4'te şu analizle geldi: her dönüşüm olayını dakika hassasiyetinde çekip (dateHourMinute boyutu), aynı dakikadaki oturumun etkileşim süresiyle eşleştirdim. Sorulan soru basitti: dönüşüm yazan ziyaretçi sitede kaç saniye geçirmiş?

KaynakDönüşümlü oturum5 saniyeden kısa kalanlar
Arama~45~%10
Görüntülü~22~%50 (çoğu 0-1 saniye)

Ve bir sabah, tablonun ortasında bomba: tek bir oturum, bir dakika içinde WhatsApp butonuna 16 kez tıklamış. Toplam etkileşimi 12 saniye. Bu bir insan değil.

Karşı örnek de aynı saatte duruyordu: başka bir Görüntülü ziyaretçisi 8,5 dakika gezip telefonla aramıştı. Gerçeği de vardı — ama azınlıktaydı.

Resim netleşti: temasların toplamı gerçekti (Arama'nın uzun oturumları mesaj atıyordu), ama Görüntülü'nün kredisinin yarısı, mesaja dönüşmeyen refleks tıklamalardı. Kilit ekranını kapatmaya çalışırken reklama dokunan adam, siteden çıkmaya çalışırken WhatsApp butonuna da dokunuyor. Sayaç "dönüşüm" yazıyor; işletmenin telefonunda karşılığı yok.

Arama tarafını da aynı disiplinle denetledim — beş test, beşi de temiz: Google'ın invalid-click filtresi normal bantta (%4-9 vs Görüntülü %21), arama ortakları kapalı, tıklama/oturum oranı sağlıklı, dönüşümler 25-100 saniyelik okumalardan, terimler ve şehirler müşteri profiliyle tutarlı. Sahtelik kanala özgüydü.

Neden oluyor: MaxConv'un bütçe-bitirme zorunluluğu

Buradaki mekanik, çoğu rehberde atlanır:

Hedefsiz Maximize Conversions'ın bir sözleşmesi var: günlük bütçeyi bitir, dönüşümü maksimize et. Dönüşüm kıtsa bile para bir yere gömülecek. En ucuz "dönüşüm" nerede? Refleks tıklama üreten çöp envanterde. Algoritma bozuk değil — tasarlandığı gibi çalışıyor; sadece ona verdiğimiz başarı tanımı (çıplak tel/WA tıklaması) sahtelenebilir.

"tCPA koy, çözülür" diyenlere dürüst cevap: çözülmez. Çöp dönüşüm 5-15₺'ye geliyorsa, 50₺'lik tCPA onu "hedefin altında fırsat" diye görür ve ölçekler. tCPA'nın tek farkı bütçeyi bitirme zorunluluğunu kaldırmasıdır; sahtelik filtresi değildir. Sahteliği iki şey keser: envanteri kapatmak ve sinyali sahtelenemez yapmak.

Çözüm: Üç katman

Katman 1 — Yerleşim kara-listesi (aynı gün). Hesap-düzeyi negatif yerleşim olarak 94 domain: kilit ekranı feed'leri, APK sayfaları, oyun arbitrajı. Hesap-düzeyi olması kritik — kampanya kurcalamalarından etkilenmez, PMax dahil her şeyi kapsar. (espn.com gibi araya karışan gerçek siteleri bilerek listeye almadık; bir tuhaf dönüşüm, bir siteyi çöp yapmaz.)

Katman 2 — Sinyal temizliği (ertesi gün). Sorunun kökü, teklif motorunun "başarı" tanımının çıplak buton tıklaması olması. Siteye tek şartlı yeni bir olay ekledik: qualified_contact — tel/WA tıklaması, yalnız oturum 5 saniyeden yaşlıysa ateşlenir. (Eşiği veriye bakarak seçtik: çöp kümesi 0-5 saniyede yoğunlaşıyordu; 6-8 saniyede gerçek hızlı karar vericiler başlıyordu.) Ham sayaçlar raporlama için aynen kaldı; Görüntülü kampanyanın teklif hedefi ise yalnız bu nitelikli olaya kilitlenecek. Arama'ya dokunmadık — niyetini yazarak gelen ve 4 saniyede karar veren adam gerçektir, onun sinyali temiz.

Uygulama zinciri 15 dakikada canlıdaydı: site kodunda 20 satır (sessionStorage ile oturum yaşı) → GTM'de custom-event tetikleyicili GA4 tag'i → gerçek tarayıcıda ateşleme testi (5 saniyeden önce tıkla: olay yok; sonra tıkla: olay var) → GA4 realtime'da doğrulama.

Katman 3 — Doğal deney. İki müdahalenin işe yarayıp yaramadığını atıf raporu değil, üç bağımsız sayaç söyleyecek: Ads'in rapor ettiği dönüşüm + GA4'ün tekil tıklayıcı sayısı + işletmenin gerçek tel/WA beyanı, bir hafta yan yana. Gerçek temaslar sabit kalıp Görüntülü'nün raporu düşerse → kredi sahteydi, para temiz envantere kaydı. İkisi birden düşerse → envanter gerçekten getiriyormuş, rollback bir komut uzağında (her değişikliğin before/after kaydı var).

Kullandığım araçlar (pratik döküm)

  • Google Ads API / GAQL: detail_placement_view (yerleşim×dönüşüm), metrics.invalid_clicks (Google'ın kendi filtresi ne yakalamış), click_view (gclid envanteri), customer_negative_criterion (kara-listenin kendisi). Panel arayüzü bu soruların çoğuna cevap ver(e)mez.
  • GA4 Data API: Asıl kahraman dateHourMinute boyutu — dönüşüm anını dakikaya sabitleyip aynı dakikanın userEngagementDuration değeriyle eşleştirmek, oturum-düzeyi forensiğin panelsiz yolu. Realtime API'si de deploy sonrası fire-test doğrulaması için birebir.
  • GTM + 20 satır site kodu: Nitelikli-temas kapısı. Ölçüm katmanında değil, sinyal üretiminde filtre.
  • AI ajan (Claude): Bu analizlerin tamamı — GAQL sorguları, GA4 dakika-eşleştirmesi, kara-liste mutasyonları, tarayıcı fire-testleri — sohbet arayüzünden, oturum başına dakikalar içinde koştu. Adli analizin maliyetini düşüren şey buydu: hipotez → sorgu → kanıt döngüsü, panel tıklamaları yerine dakikada bir tur dönüyor.
  • NotebookLM: Vakayı çözdükten sonra literatür taraması için — 24 kaynaklık MFA/invalid-traffic/incrementality okuma listesini yükleyip metodolojiyi çapraz kontrol ettim. (Tersinden not: NotebookLM'in önerdiği genel çözüm listesindeki iki madde — "Bilinmiyor demografiyi kapat", "gece reklamları durdur" — bizim veriyle çelişiyordu. Bot saldırımız sabah 10:22'deydi ve gece 00:30'da gerçek müşteriler yazıyordu. Genel tavsiye, kendi verinle doğrulanmadan uygulanmaz.)

Sonuç: Deney ne dedi (31 Temmuz okuması)

Kara-liste 24 Temmuz akşamüstü canlıya girdi. Altı tam günün verisi (25-30 Temmuz), önceki yedi günle yan yana:

Metrik (Görüntülü)Önce (17-23 Tem)Sonra (25-30 Tem)
Raporlanan dönüşüm/gün3,62,3 (−%44)
Tıklama194292 (+%50)
Tıklama→dönüşüm oranı%13%5
Raporlanan CPA29₺53₺
Google'ın invalid-click filtresi%18%22

Okuma şöyle:

Sahte kredi tezi doğrulandı — CPA'nın yükselmesiyle. Tıklamalar %50 arttığı hâlde raporlanan dönüşüm neredeyse yarıya düştü. 5-15₺'lik "dönüşüm mucizesi" bloke edilen kilit-ekranı envanterindeydi; o kesilince Görüntülü'nün gerçek fiyatı ortaya çıktı: 53₺. Kâğıt üstünde kampanya "kötüleşti" — gerçekte sayaç ilk kez doğruya yaklaştı. Panele bakan biri kara-listeyi "performansı düşürdü" diye geri alabilirdi; deney tasarımı olmadan temizlik, kötüleşme gibi görünür.

Sinyal kapısı makası ölçtü. Aynı altı günde qualified_contact (5 saniye oturum-yaşı kapılı temas) Arama'da ham tel/WA tıklamalarının ~%90'ını yakaladı — Arama trafiğinin insanlığı bir kez daha teyit. Görüntülü'de ise kalan dönüşümlerle kapılı olay artık başa baş gidiyor: kara-liste sonrası hayatta kalan Görüntülü teması, kapıdan geçen cinsten. Refleks-tıklama üreten envanter gidince, geride kalan azınlık gerçek görünüyor.

Üçüncü sayaç da kapandı: işletme beyanı. Deney tasarımındaki üçüncü bağımsız sayaç işletmenin kendisiydi. Sorduk: kara-liste sonrası dönemde gerçekte kaç arama ve WhatsApp mesajı geldi? Cevap net: aramaların ve mesajların neredeyse tamamı gerçek, rakamlar raporla tutuyor. Gerçek temaslar yerli yerindeyken raporlanan dönüşümün %44 düşmesi, kesilen kısmın ne olduğunu tartışmasız söylüyor: telefonun hiç çalmadığı kâğıt-dönüşümler.

Ama tavşan deliği kapanmadı. Invalid-click oranı %22'ye çıktı ve yerleşim raporunda yeni oyun/arbitraj domainleri belirdi — 94 domain'lik listeye girmeyen taze envanter. Fark: bunlar tıklama üretiyor ama dönüşüm üretemiyor (çoğu 0 dönüşümlü). Kilit ekranı feed'leri gibi dönüşüm-sahteleyen sınıf kapandı; tıklama-yakan sınıf dönüyor. MFA bir liste işi değil, bakım işi: kara-liste yaşayan bir doküman olmak zorunda.

Para nereye kaydı: Aynı iki pencerede Arama kampanyaları 7 dönüşüm/günden 14,8'e, CPA 121₺'den 81₺'ye geldi (bu sıçramada ayrı bir müdahalenin — teklif stratejisi düzeltmesinin — payı var, tamamını kara-listeye yazmak haksızlık olur). Ama yön net: bütçe, sahte dönüşüm satın alan kanaldan gerçek talep yakalayan kanala aktı ve hesap, hedeflediğimiz günde 10-20 gerçek temas bandına ilk kez sahte kredisiz oturdu.

Kararlar: Kara-liste kalıcı ve hesap-düzeyinde kalıyor; aylık yerleşim taraması takvime bağlandı. Görüntülü'nün teklif hedefini qualified_contact'a kilitleme adımını bilinçli olarak deney penceresinin sonrasına bırakmıştık — iki değişkeni aynı anda oynatsaydık hangisinin ne yaptığını asla bilemezdik. Deney kapanır kapanmaz kilit takıldı: kampanyanın teklif motoru artık yalnız oturum-yaşı kapısından geçen nitelikli teması "başarı" sayıyor. (Teknik dipnot, aynı yolu yürüyecekler için: Google Ads'te bu kilidi aksiyon düzeyinde takmanın tek yolu özel dönüşüm hedefi — kampanya-hedefi ayarları kategori düzeyinde çalıştığından, aynı kategorideki ham buton-tıklamasıyla kapılı olayı birbirinden ayıramıyor.)

Kendi hesabın için 10 dakikalık kontrol listesi

  1. Görüntülü kampanyanın CPA'sı Arama'nın çok altındaysa sevinme — şüphelen.
  2. Yerleşim raporunu aç; dönüşüm yazan ilk 20 yerleşimin adını tek tek oku. "lockscreen/download/game" görüyorsan devam et.
  3. 0 tıklamayla dönüşüm yazan yerleşim = modellenmiş atıf. Not al.
  4. GA4'te dönüşüm olaylarını dateHourMinute ile çek; aynı dakikanın etkileşim süresine bak. 0-5 saniyelik dönüşümlerin oranı kanal bazında ne?
  5. İşletmeye sor: dün gerçekte kaç arama/mesaj geldi? Raporla kıyasla. (En ucuz ve en kesin test budur.)
  6. metrics.invalid_click_rate'e bak — Google'ın kendi filtresi bir kanalda %15+'ı eliyorsa, filtreden geçenler de şüphelidir.
  7. Arama ortakları ve (arama kampanyalarında) Görüntülü ağ kapalı mı?
  8. Dönüşüm sayımın ONE_PER_CLICK mı? (Bizde 16 tıklamalık botu 1 dönüşüme indiren ayar buydu.)
  9. Kirli envanteri hesap-düzeyi negatif yerleşimle kapat; kampanya düzeyinde bırakma.
  10. Teklif hedefini sahtelenemez bir sinyale bağla — ham buton tıklaması değil, en azından oturum-yaşı kapılı bir olay.

Sık sorulan sorular

Google Ads'te sahte tıklamayı nasıl anlarım? Dört sinyale bakın: Görüntülü kampanyanın CPA'sının Arama'nın çok altında olması, yerleşim raporunda lockscreen/download/game türü domain'ler, 0 tıklamayla dönüşüm yazan yerleşimler ve GA4'te dönüşüm anındaki oturumun 0-5 saniyelik etkileşim süresi. Kesin hüküm için raporlanan sayıyı işletmenin gerçek telefon ve WhatsApp trafiğiyle kıyaslayın.

MFA (Made for Advertising) sitesi nedir? Tek amacı reklam gösterip tıklama üretmek olan sitelerdir: kilit ekranı haber akışları, APK indirme sayfaları, ucuz oyun envanteri gibi. ANA'nın çalışmasına göre programatik harcamaların yaklaşık %15'i bu envantere akıyor.

tCPA hedefi sahte dönüşümleri engeller mi? Hayır. Çöp dönüşüm 5-15₺'ye geliyorsa 50₺'lik tCPA onu hedefin altında fırsat olarak görür ve ölçekler. tCPA yalnızca bütçeyi bitirme zorunluluğunu kaldırır; sahtelik filtresi değildir. Sahteliği envanteri kapatmak ve teklif sinyalini sahtelenemez yapmak keser.

Google'ın kendi geçersiz tıklama filtresi yeterli değil mi? Kısmen yakalar, tamamını yakalamaz. Bu vakada Görüntülü kanalda filtre tıklamaların %18-22'sini zaten eliyordu; buna rağmen dönüşümlerin yarısı botlardan geliyordu. Filtre bir kanalda %15'in üzerini eliyorsa, geçenlere de şüpheyle bakın.


Rakamlar gerçek hesap verisidir; müşteri gizliliği için işletme adı yayınlanmamaktadır. Aynı hesabın önceki bölümü: dalış merkezi vakası.

Bu yazıyı paylaşın

Google Ads Yönetiminizi AI'a Bırakın

Hektera Ads ile Slack üzerinden AI destekli Google Ads kampanya yönetimi. Performansınızı optimize edin.

Hektera Ads'i Keşfet

Benzer Yazilar

Bu işleri sizin hesabınızda da yapabilirim

Google Ads, ölçüm kurulumu ve dönüşüm odaklı site üzerine danışmanlık veriyorum. Kısa bir ön görüşmeyle başlayalım.

Danışmanlık için yazın

Haftalık Bülten

Yeni analizler, deneyler ve vaka notları e-posta kutunuza gelsin.