Anomaly Sentinel hesabı saat saat izler. Bugünün şimdiye kadarki hâlini (son tamamlanan saate kadar) geçmiş N haftanın aynı haftalık günüyle karşılaştırır; bir metrik dayanıklı z-skorunun dışına çıkarsa WARNING ya da CRITICAL uyarısı üretir. Uyarılar saatler arasında tekrarlanmaz, kötüleşince yükseltilir ve toparlanma bildirimiyle kapatılır.

Nasıl çalışır

On metriğin (gösterim, tıklama, maliyet, dönüşüm, dönüşüm değeri, TO, TBM, dönüşüm oranı, CPA, ROAS) her biri için script weeks hafta boyunca aynı haftalık gününden bir taban oluşturur; tek bir uç değerin tabanı bozmaması için ortalama ve standart sapma yerine medyan ve MAD kullanır, taban sıfırsa mutlak eşikler uygular. Hacim kapıları (min_impressions, min_clicks), sessiz saatler, istisna tarihleri ve en düşük yüzde sapma gürültüyü bastırır. Dönüşümler geç geldiği için dönüşüm tabanlı metrikler, saat-bazlı kesit tabanı en az snapshot_baseline_min_samples örneğe ulaşana kadar WARNING düzeyiyle sınırlıdır; sonrasında kesit tabanına geçer. Her uyarıya sapmayı açıklayan en etkili kampanyalar eklenir.

Sheet’e ne yazar

  • Alerts — olay başına 14 sütun: Zaman damgası, Tarih, Saat, Metrik, Durum (NEW / ESCALATED / RECOVERED), Önem (WARNING / CRITICAL), Gözlenen, Beklenen, Sapma, Örnek sayısı, Kampanya ipuçları ve diğerleri; teslim kanalı Durum hücresine not olarak eklenir.
  • _settings — aşağıdaki tüm eşikler, koda dokunmadan düzenlenebilir.
  • _state, _baseline, _snapshot — iç kullanım: açık uyarılar, haftalık gün tabanı ve saat-bazlı kesitler (snapshot_keep_weeks hafta sonra budanır).

Kurulum

  1. Scripti yetkilendireceğin Google hesabıyla yeni ve boş bir Google Sheet oluştur, adresini kopyala. Başka bir scriptin Sheet’ini kullanma; her Sheet tek bir scripte ve tek bir Google Ads hesabına bağlanır.
  2. Google Ads’te Araçlar → Komut Dosyaları bölümünü aç, yeni bir script oluştur, kodun tamamını yapıştır ve bir ad ver.
  3. CONFIG.spreadsheet_url değerine Sheet adresini yaz. Scripti yönetici (MCC) hesabından çalıştırıyorsan CONFIG.account_id alanına müşteri hesabı kimliğini (örn. 123-456-7890) yaz; yazılmazsa script açık bir hata mesajıyla durur.
  4. İsteğe bağlı: CONFIG.email (virgülle ayrılmış alıcılar) ve/veya CONFIG.slack_webhook alanlarını doldur. Webhook yalnızca kodda kalır, Sheet’e hiçbir zaman yazılmaz.
  5. Scripti yetkilendir, günlüğü kontrol etmek için bir kez Önizle, sonra Çalıştır. İlk çalışma sekmeleri, başlık satırlarını ve _settings sekmesini oluşturur.
  6. Zamanla: saatlik.
  7. İsteğe bağlı: Excel dashboard’unu indir (yukarıdaki buton), Read me sekmesini aç ve Sheet sekmelerini orada anlatıldığı gibi yapıştır; sütun düzeni script çıktısıyla birebir aynıdır.

Parametreler

ParametreAçıklamaVarsayılan
spreadsheet_urlScriptin yazacağı boş Google Sheet’in adresi.'YOUR_SPREADSHEET_URL'
emailVirgülle ayrılmış alıcılar; boş = e-posta yok. _settings üzerinden değiştirilebilir.''
slack_webhookSlack incoming-webhook adresi; boş = Slack mesajı yok. Yalnızca kodda tutulur.''
account_idMüşteri hesabı kimliği; yalnızca yönetici (MCC) hesabından çalıştırırken gerekir.''
weeksAynı haftalık gün için geçmiş derinliği.12
lag_hoursRaporlama gecikmesi toleransı (saat); son N saat değerlendirilmez.3
quiet_hours_endBu saatten önce oran tabanlı uyarı yok.6
min_impressions / min_clicksOran metrikleri için hacim kapıları.1000 / 50
min_conversions_baselineTaban dönüşümü bunun altındaysa CPA / dönüşüm oranı / ROAS uyarılarını atla.3
z_warning / z_criticalWARNING ve CRITICAL için dayanıklı z-skoru eşikleri.2.0 / 3.0
min_pct_deviationBu paydan küçük sapmaları yok say.0.20
abs_floorTaban sıfırken kullanılan mutlak eşikler (gösterim, tıklama, maliyet, dönüşüm, değer).200 / 20 / 20 / 2 / 50
conversion_metrics_max_severityWARNING veya CRITICAL — kesit tabanı olgunlaşana kadar dönüşüm tabanlı metrikler için tavan.'WARNING'
snapshot_baseline_min_samplesDönüşüm metriklerinin saat-bazlı kesit tabanına geçmesi için gereken örnek sayısı.12
snapshot_keep_weeksBudanmadan önce saklanan saatlik kesit satırlarının hafta sayısı.26
exception_datesYok sayılacak tarihler (tatiller, lansmanlar), yyyy-MM-dd.[]
campaign_hintsSapmanın açıklaması olarak listelenen ilk N kampanya.3
Tüm değerler scriptin başındaki CONFIG bloğunda bulunur; _settings sekmesinde de olan anahtarlar oradan değiştirilebilir.

_settings sekmesi

İlk çalışmada script bir _settings sekmesi (Key / Value / Notes) oluşturur. Buradaki değerler ilgili CONFIG girdilerini ezer; günlük ince ayar kodu düzenlemeden Sheet üzerinden yapılır. Sayılar binlik ayraç olmadan ve en fazla iki ondalıkla yazılmalıdır (0.5 veya 0,5). script ve account satırları Sheet’in sahibini işaretler: aynı Sheet’i başka bir script ya da başka bir hesap açarsa hiçbir şey yazmadan durur. Alt çizgiyle başlayan iç sekmeler (_settings, _history, _snapshot, _state, _baseline) dilden bağımsızdır; EN/TR/DE sürümleri arasında geçiş yapıldığında kayıtlı durum korunur.

Bildirimler

Yeni, yükseltilen ve toparlanan olaylar metrik, gözlenen-beklenen, sapma ve kampanya ipuçlarıyla e-posta ve/veya Slack üzerinden gider. İki kanal da teslim edemezse uyarı yazılmaz ve durum geri alınır; bir sonraki saat kopya yerine tek kayıtla yeniden dener. Kısmi teslim (bir kanal başarısız) günlüğe düşer.

Notlar ve sınırlar

  • İlk 12 haftada dönüşüm uyarıları tasarım gereği WARNING düzeyinde kalır; bu kesit tabanının olgunlaşmasıdır, hata değil.
  • Tarih aritmetiği takvim tabanlıdır; yaz saati geçişleri (ABD ve AB) haftalık gün tabanını kaydırmaz.
  • Her rapor sekmesinde küçük bir atıf hücresi (H1:K1, yalnızca uyarı veren koruma) ve kod başlığında bir telif satırı bulunur; kaynağı düzenleyen herkes ikisini de kaldırabilir.