Bu rehberde: Google Analytics ve Search Console verisini iş akışına çeken, bir sayıyı eşikle karşılaştıran ve kendi metriğinizi kaydeden kutuları öğrenirsiniz.
⏱ 10 dakika
Kısaca
Analitik kutuları ölçüm verisini iş akışına taşır. Örneğin: "oturumlar geçen haftaya göre %20 düştüyse bana haber ver". Analytics Strategist aynı veriyi okur; bu kutular kuralları sizin belirlediğiniz kontroller içindir.

Teknik ayrıntılar
Analitik node'ları ölçüm verisini iş akışına taşır: GA4 raporları, Search Console sorguları, eşik kontrolleri ve özel metrik yazımı. Analytics Strategist ajanı aynı veriyi araçlarla okur; bu node'lar veriyi deterministik biçimde çekmek, koşullu dallanmak ve kendi metriklerinizi kaydetmek için kullanılır.
| Node | Tip | Girdi | Çıktı handle'ları | Entegrasyon | Model |
|---|---|---|---|---|---|
| Google Analytics report | analytics.ga4Report | 1 | main | GOOGLE_ANALYTICS | – |
| Search Console queries | analytics.searchConsole | 1 | main | GOOGLE_SEARCH_CONSOLE | – |
| KPI threshold check | analytics.kpiCheck | 1 | above, below | – | – |
| Record custom stat | analytics.recordStat | 1 | main | – | – |
Google Analytics report (analytics.ga4Report)
GA4 Data API runReport çağrısı yapar (metrik × boyut × tarih aralığı). Hesap seçimi: iş akışının projesine bağlı GA4 entegrasyonu (mülk id'si entegrasyonda saklıdır).
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
metrics | Metrics | list | Hayır | ["sessions", "totalUsers", "conversions", "engagementRate"] | GA4 API metrik adları: sessions, totalUsers, newUsers, screenPageViews, engagedSessions, engagementRate, averageSessionDuration, bounceRate, conversions, keyEvents, eventCount, totalRevenue |
dimensions | Dimensions | list | Hayır | ["date", "sessionDefaultChannelGroup"] | date, sessionDefaultChannelGroup, sessionSource, sessionMedium, sessionCampaignName, landingPage, pagePath, country, deviceCategory, city |
dateRange | Date range | select | Hayır | last_28_days | last_7_days, last_28_days, last_90_days, custom |
startDate | Start (YYYY-MM-DD) | string | Hayır | – | Yalnızca dateRange = custom |
endDate | End (YYYY-MM-DD) | string | Hayır | – | Yalnızca dateRange = custom; ifade kullanılabilir ({{ $today }}) |
limit | Row limit | number | Hayır | 500 | En fazla 10.000 |
Çıktı: tek item:
{
"property": "properties/123456789",
"dateRange": { "startDate": "2026-09-18", "endDate": "2026-09-24" },
"metrics": ["sessions", "totalUsers", "conversions", "engagementRate"],
"dimensions": ["date", "sessionDefaultChannelGroup"],
"rows": [
{ "date": "20260918", "sessionDefaultChannelGroup": "Organic Social", "sessions": 412, "totalUsers": 380, "conversions": 9, "engagementRate": 0.61 }
],
"totals": { "sessions": 3120, "totalUsers": 2790, "conversions": 71, "engagementRate": 0.58 },
"rowCount": 42
}
Satırları ayrı item yapmak için data.code: return items[0].json.rows.map(r => ({ json: r }));.
Örnek 1 – haftalık kanal karşılaştırması (şablon): dateRange last_7_days, metrics [sessions, totalUsers, conversions, engagementRate], dimensions [date, sessionDefaultChannelGroup] → logic.merge → agent.analyticsStrategist.
Örnek 2 – kampanya raporu: dateRange custom, startDate {{ $vars.campaignStart }}, endDate {{ $today }}, metrics [sessions, conversions, totalRevenue], dimensions [sessionCampaignName, sessionSource] → ai.generate (prompt "Bu GA4 verisini pazarlama ekibi için 5 maddede yorumla: {{ JSON.stringify($json.rows) }}") → utility.report.
GA4 verisi 24-48 saat gecikmeli olabilir; "bugün" sorguları eksik döner. Kotalar: mülk başına günlük token, eşzamanlı 10 istek; sık çalışan akışlarda dateRange daraltın.
Search Console queries (analytics.searchConsole)
Search Analytics API ile tıklama, gösterim, CTR ve ortalama pozisyon getirir. Her satır ayrı item.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
days | Look back (days) | number | Hayır | 28 | Search Console verisi 2-3 gün gecikmelidir; aralık otomatik geriye kaydırılır |
dimension | Dimension | select | Hayır | query | query, page, country, device |
limit | Rows | number | Hayır | 200 | En fazla 25.000 |
Çıktı item'ı: { dimension: "query", key: "filtre kahve nasıl yapılır", clicks: 84, impressions: 3120, ctr: 0.027, position: 8.4, siteUrl: "sc-domain:ornek.com" }.
Örnek – düşük CTR'li yüksek gösterim fırsatları:
trigger.schedule (0 8 1 * *) → analytics.searchConsole (days 28, dimension query, limit 500)
→ logic.filter ({{ $json.impressions > 1000 && $json.ctr < 0.02 && $json.position <= 15 }})
→ logic.limit (count 20)
→ agent.contentCreator (task "Şu sorgu için başlık/meta açıklama alternatifleri ve bir LinkedIn gönderisi yaz: {{ $json.key }}", platforms [LINKEDIN])
KPI threshold check (analytics.kpiCheck)
Bir istatistik metriğini eşikle karşılaştırır ve item'ları above ya da below handle'ına yönlendirir. Veri StatDaily toplamlarından gelir (GA4 senkronizasyonu, yayın kuyruğu, lead servisi vb.); harici API çağrısı yapmaz.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
metric | Metric | string | Evet | ga.sessions | STAT_METRICS anahtarlarından biri veya custom.* |
period | Period (days) | number | Hayır | 7 | Son N günün toplamı (oran metriklerinde ortalama) |
threshold | Threshold | number | Evet | – | absolute modunda değer, change modunda yüzde (-20 = %20 düşüş) |
compare | Compare to | select | Hayır | absolute | absolute: toplam ≥ eşik → above; change: önceki eşit döneme göre % değişim ≥ eşik → above |
Geçerli metrik anahtarları:
| Grup | Anahtarlar |
|---|---|
| İş akışı / ajan | workflow.runs, workflow.runs.succeeded, workflow.runs.failed, agent.runs, agent.runs.failed, llm.input_tokens, llm.output_tokens, llm.cost_usd |
| İçerik | content.posts.created, content.posts.published, content.posts.failed, social.impressions, social.engagements, social.followers, social.clicks |
| Mesajlaşma | messages.inbound, messages.outbound, messages.bot_replies, conversations.opened, conversations.handoffs, conversations.resolved_by_bot |
| Lead | leads.created, leads.qualified, leads.contacted, leads.replied, leads.converted |
| Kampanya | campaign.sent, campaign.delivered, campaign.read, campaign.replied |
| GA4 | ga.sessions, ga.users, ga.new_users, ga.pageviews, ga.engaged_sessions, ga.conversions, ga.avg_session_duration, ga.bounce_rate |
Çıktı: gelen item'lar + kpi: { metric, period, value, previousValue, changePct, threshold, compare, result: "above" | "below" }.
Örnek 1 – trafik düşüşünde uyarı:
trigger.schedule (0 9 * * *) → analytics.kpiCheck (metric ga.sessions, period 7, threshold -20, compare change)
below → utility.notify (title "Haftalık oturumlar %{{ Math.abs($json.kpi.changePct) }} düştü", channels [inapp, slack])
→ agent.analyticsStrategist (task "Oturum düşüşünün nedenini bul ve 3 aksiyon öner", period last_7_days)
above → utility.noop
Örnek 2 – bot çözüm oranı hedefi: metric conversations.resolved_by_bot, period 7, threshold 100, compare absolute → below → utility.notify ("Bot bu hafta 100'den az konuşma çözdü; bilgi bankasını gözden geçirin").
Anlık (olay bazlı) eşikler için trigger.event (analytics.threshold) da kullanılabilir; bu olay günlük senkronizasyon sonrası Ayarlar → Analitik eşiklerinde tanımlı kurallardan üretilir.
Record custom stat (analytics.recordStat)
Kendi metriğinizi istatistik sistemine yazar; İstatistik gezgini, Kontrol Paneli ve analytics.kpiCheck tarafından kullanılabilir.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
metric | Metric key | string | Evet | – | custom. ile başlamalı, küçük harf ve nokta/alt çizgi: custom.signups, custom.demo_requests |
value | Value | expression | Evet | {{ $json.value }} | Sayı; aynı gün/aynı boyutlar için toplanır |
dims | Dimensions (JSON) | json | Hayır | – | Kırılım: { "platform": "{{ $json.platform }}", "campaign": "{{ $vars.campaignName }}" } |
Çıktı: gelen item'lar değişmeden geçer (recorded: true eklenir). Değerler günlük stats-rollup ile StatDaily'ye toplanır; İstatistik gezgininde groupBy ile boyut kırılımı yapılabilir.
Örnek – webhook'tan gelen satışları say:
trigger.webhook (POST) → analytics.recordStat
metric: custom.orders
value: 1
dims: { "source": "{{ $json.body.utm_source ?? "direct" }}" }
→ analytics.recordStat
metric: custom.revenue_try
value: {{ Number($json.body.total) }}
Sonra analytics.kpiCheck (metric custom.orders, period 1, threshold 10) ile günlük hedef kontrolü.
İpuçları ve sınırlar
analytics.ga4Reportveanalytics.searchConsoleçalıştırma başına sağlayıcı kotası harcar; saatlik akışlarda önbelleklenmişStatDailyverisini (analytics.kpiCheck) tercih edin.- GA4 ve Search Console entegrasyonları proje kapsamlıdır; iş akışı doğru projede olmalıdır.
- Metrik adları GA4 API adlarıdır (UI adları değil): "Views" →
screenPageViews, "Key events" →keyEvents/conversions. - Tarih boyutu
dateYYYYMMDDbiçiminde gelir;$dateile dönüştürün. custom.*metrikleri planknowledgeDocsgibi limitlere tabi değildir ancak günlük 100 farklı özel metrik anahtarı ile sınırlıdır.
Sık sorulan sorular
Her saat GA4 raporu çekebilir miyim? Kotayı hızla tüketir. Sık kontroller için KPI kontrolü kutusunu kullanın; o, günlük toplamları okur ve GA4'e istek atmaz.
"Bugün" verisi neden eksik? GA4 verisi 24-48 saat, Search Console 2-3 gün gecikmelidir.
Kendi satış verimi ekleyebilir miyim?
Evet, Özel metrik kaydet kutusuyla custom.orders gibi metrikler yazarsınız.