n8n Trigger Nedir: Webhook ve Zamanlama ile Tetikleme
Otomasyon dünyasına adım attığınızda ilk karşılaştığınız kavramlardan biri “tetikleyici” yani trigger’dır. n8n’de bir iş akışı kendi kendine çalışmaz; ona “şimdi başla” diyecek bir şeye ihtiyacı vardır. İşte bu noktada trigger node’lar devreye girer. Yıllar içinde onlarca farklı otomasyon aracı kullandım, ama n8n’in trigger mekanizması beni en çok etkileyen özelliklerden biri oldu. Hem webhook bazlı hem de zamanlama bazlı tetikleme seçenekleri ile neredeyse her senaryoyu kapsayabiliyorsunuz.
Trigger Node Nedir ve Neden Bu Kadar Önemli?
n8n’de her workflow bir trigger node ile başlamak zorundadır. Bu node, iş akışının ne zaman ve hangi koşulda çalışacağını belirler. Trigger olmadan bir workflow sadece manuel olarak “Execute Workflow” butonuna basıldığında çalışır ki bu da otomasyon sayılmaz.
Trigger node’ları ikiye ayırabiliriz:
- Aktif trigger’lar: Bir olay gerçekleştiğinde anında tetiklenir (webhook, email geldiğinde, veritabanında değişiklik olduğunda)
- Pasif trigger’lar: Belirli aralıklarla çalışır ve bir şeyler kontrol eder (her 5 dakikada bir API’yi sorgula, her sabah 08:00’de rapor al)
Gerçek dünya senaryolarında bu ikisini doğru seçmek kritik önem taşır. Webhook kullanılabilecek bir yerde cron trigger kullanmak hem sistemi gereksiz yere yorar hem de gecikmeye yol açar.
Webhook Trigger: Anlık Tetikleme
Webhook trigger, dışarıdan gelen bir HTTP isteği ile workflow’u başlatan mekanizmadır. Basitçe söylemek gerekirse: n8n size bir URL verir, bu URL’ye POST veya GET isteği atıldığında workflow çalışmaya başlar.
Webhook Node Kurulumu
n8n arayüzünde yeni bir workflow açtığınızda, “Add first step” alanına tıklayıp “Webhook” yazarak node’u ekleyebilirsiniz. Karşınıza birkaç önemli parametre çıkar:
- HTTP Method: GET, POST, PUT, DELETE seçenekleri mevcut. Genellikle veri göndermek için POST kullanılır
- Path: Webhook URL’inizin son kısmı. Örneğin “yeni-siparis” yazarsanız URL
/webhook/yeni-siparisşeklinde olur - Authentication: Webhook’a gelen istekleri kimin atabileceğini kontrol eder. Basic Auth, Header Auth gibi seçenekler var
- Respond: Workflow çalışırken mi cevap versin, hemen mi cevap versin seçeneği
Webhook URL’niz tipik olarak şu formatta olur:
# Production URL (workflow aktifken)
https://sizin-n8n-adresiniz.com/webhook/yeni-siparis
# Test URL (geliştirme sırasında)
https://sizin-n8n-adresiniz.com/webhook-test/yeni-siparis
Webhook’u Test Etmek
Geliştirme aşamasında test URL’sini kullanmanız gerekir. Production URL’si sadece workflow aktif hale getirildiğinde çalışır. Test sırasında n8n “Listen for test event” moduna geçer ve siz isteği atana kadar bekler.
# curl ile basit POST isteği gönderme
curl -X POST https://sizin-n8n-adresiniz.com/webhook-test/yeni-siparis
-H "Content-Type: application/json"
-d '{"siparis_id": "12345", "musteri": "Ahmet Yılmaz", "tutar": 250.00}'
Bu isteği attıktan sonra n8n arayüzünde gelen veriyi görebilir ve sonraki node’larda {{ $json.siparis_id }} gibi ifadelerle kullanabilirsiniz.
Authentication ile Güvenlik
Webhook’unuzu açık bırakmak ciddi güvenlik riski oluşturur. Header Auth kullanımı en pratik yöntemlerden biridir:
# Header Auth ile istek gönderme
curl -X POST https://sizin-n8n-adresiniz.com/webhook/yeni-siparis
-H "Content-Type: application/json"
-H "X-Api-Key: gizli-anahtar-buraya"
-d '{"siparis_id": "12345"}'
n8n tarafında ise Credential Manager’a gidip yeni bir “Header Auth” credential oluşturuyorsunuz. Name alanına X-Api-Key, Value alanına da güçlü bir anahtar yazıyorsunuz.
Gerçek Dünya Senaryosu: E-ticaret Sipariş Bildirimleri
Müşteri siparişlerini takip eden bir senaryo düşünelim. WooCommerce veya herhangi bir e-ticaret platformu sipariş oluştuğunda webhook atar, n8n bu webhook’u yakalar ve:
# WooCommerce'in n8n'e attığı örnek payload
curl -X POST https://n8n.sirket.com/webhook/woo-siparis
-H "Content-Type: application/json"
-H "X-WC-Webhook-Signature: sha256-imzasi"
-d '{
"id": 98765,
"status": "processing",
"billing": {
"first_name": "Fatma",
"last_name": "Kaya",
"email": "[email protected]"
},
"total": "450.00",
"line_items": [
{"name": "Laptop Çantası", "quantity": 2}
]
}'
Bu veriyi alan n8n workflow’u sırasıyla şunları yapabilir: Muhasebe sistemine kaydeder, müşteriye teşekkür emaili atar, Slack kanalına bildirim gönderir, kargo sisteminde takip numarası oluşturur.
Webhook ile Yanıt Döndürme
Bazen webhook isteği atan sistem bir cevap bekler. Örneğin bir form submit edildiğinde başarılı mı başarısız mı olduğunu öğrenmek ister. n8n’de “Respond to Webhook” node’unu kullanarak özelleştirilmiş cevaplar dönebilirsiniz:
# n8n'in döneceği örnek başarılı yanıt
{
"success": true,
"message": "Siparişiniz alındı",
"tracking_id": "TRK-2024-98765"
}
Respond node’unda Response Code (200, 201, 400 vb.) ve response body’yi istediğiniz gibi şekillendirebilirsiniz. Bu özellik özellikle API entegrasyonlarında kritik rol oynar.
Schedule Trigger: Zamanlama ile Tetikleme
Webhook her zaman uygun değildir. Bazen “her gün sabah 07:00’de veritabanı yedeğini al” veya “her pazartesi öğleden sonra haftalık raporu hazırla” gibi senaryolarınız olur. Bunun için Schedule Trigger kullanırsınız.
Cron Syntax ile Zamanlama
n8n’in Schedule Trigger node’unda iki mod vardır:
- Simple Mode: Dakika, saat, gün bazında basit seçimler yapabileceğiniz arayüz
- Custom Mode: Cron expression yazabileceğiniz gelişmiş mod
Cron expression formatı beş alandan oluşur:
# Dakika Saat Ay-Günü Ay Hafta-Günü
# * * * * *
# Her gün sabah 07:30'da çalış
30 7 * * *
# Haftanın her iş günü (Pzt-Cuma) 08:00'de çalış
0 8 * * 1-5
# Her ayın ilk günü gece yarısı çalış
0 0 1 * *
# Her 15 dakikada bir çalış
*/15 * * * *
# Her Pazartesi ve Perşembe 14:00'de çalış
0 14 * * 1,4
Pratik Zamanlama Örnekleri
Gerçek ortamlarda en çok kullandığım zamanlama senaryoları:
# Her gece 02:00'de log temizliği (sunucu sakin olduğunda)
0 2 * * *
# Her Cuma 17:00'de haftalık özet raporu
0 17 * * 5
# Her sabah 06:45'te veri senkronizasyonu (mesai başlamadan önce)
45 6 * * 1-5
# Her 30 dakikada bir API sağlık kontrolü
*/30 * * * *
# Her ayın son günü (sondan 1. gün trick ile)
# Bu n8n'de biraz farklı çözülmeli, workflow içinde kontrol gerekir
0 23 28-31 * *
Timezone Dikkat!
Türkiye’deyseniz ve sunucunuz UTC üzerinde çalışıyorsa dikkatli olun. n8n’de Schedule Trigger node’unda timezone ayarını mutlaka yapın. Özellikle yaz saati uygulamasının kaldırıldığı dönemden bu yana Türkiye UTC+3 sabit kalıyor ama sunucunuz UTC’de ise 3 saat fark var demektir.
n8n arayüzünde Settings > n8n Settings yolundan varsayılan timezone’u ayarlayabilir ya da doğrudan Schedule Trigger node içinde her workflow için ayrı timezone belirtebilirsiniz.
Gerçek Dünya Senaryosu: Otomatik Rapor Sistemi
Bir şirkette her sabah departman yöneticilerine dünkü satış verilerini özet geçen bir sistem kuralım. Schedule Trigger ile başlayan workflow:
# Bu workflow her sabah 07:00'de tetiklenir
# PostgreSQL veritabanından dün ki satışları çeker
SELECT
COUNT(*) as siparis_sayisi,
SUM(tutar) as toplam_ciro,
AVG(tutar) as ortalama_siparis
FROM siparisler
WHERE DATE(created_at) = CURRENT_DATE - INTERVAL '1 day'
AND durum = 'tamamlandi';
Bu veriyi çektikten sonra workflow bir sonraki adımda email hazırlar ve ilgili kişilere gönderir. Pazar günleri için workflow içinde bir IF node’u ekleyebilir ve pazar günü tetiklenirse farklı bir template kullanmasını sağlayabilirsiniz.
Workflow Trigger: İç İçe İş Akışları
Webhook ve Schedule dışında önemli bir trigger tipi daha var: Workflow Trigger veya “Execute Workflow” mekanizması. Bu, bir workflow’un başka bir workflow’u tetiklemesi için kullanılır.
Ana bir workflow var diyelim, büyük bir veriyi işliyor. Bu veriyi parçalara bölerek her parçayı ayrı bir sub-workflow’a gönderebilirsiniz. Bu sayede hem modülerlik sağlanır hem de bakım kolaylaşır.
# Ana workflow içinden alt workflow çağırma mantığı
# Loop Over Items node ile her kayıt için
# Execute Workflow node'u tetiklenir
# Sub-workflow işlemi tamamlayıp sonucu ana workflow'a döndürür
Polling Trigger: Değişikliği Yoklamak
Bazı servislerin webhook desteği yoktur. Örneğin eski bir API veya webhook atmayan bir sistem düşünün. Burada polling mantığını kullanırsınız: n8n belirli aralıklarla o sistemi kontrol eder ve değişiklik olup olmadığına bakar.
n8n’deki bazı entegrasyon node’ları (Gmail, RSS Feed, vb.) kendi içinde polling mekanizması barındırır. Bunlar hem trigger hem de polling özelliğini birleştirir.
# RSS Feed Trigger örnek kullanım
# Kaynak URL: https://techcrunch.com/feed/
# Poll Times: Her 30 dakikada bir kontrol et
# Yeni yazı varsa workflow'u tetikle
Hata Senaryoları ve Dikkat Edilecekler
Webhook Timeout Sorunu
Webhook ile başlayan bir workflow çok uzun sürerse kaynak sistem timeout alabilir. Örneğin bir GitHub webhook’u 10 saniyede cevap gelmezse yeniden gönderim yapar. Bu durumda “Respond to Webhook” node’unu erken koyup “immediately respond” modunu seçin, sonra arka planda işlemi sürdürün.
# Uzun süren işlemler için önce cevap ver, sonra işle
# 1. Webhook gelir
# 2. Hemen "202 Accepted" cevabı dön
# 3. Asıl işlemi arka planda devam ettir
Schedule Trigger’da Overlap Problemi
Bir workflow 5 dakikada bir çalışacak şekilde ayarlandı diyelim, ama tek bir çalışması 7 dakika sürüyor. Overlap yani üst üste binme sorunu yaşarsınız. n8n bunu yönetmek için workflow settings’de “Execution Order” ve timeout ayarları sunar. Uzun süren işlemler için zamanlama aralığını gerçekçi tutun.
Webhook URL Güvenliği
Production ortamında webhook URL’nizi asla açık bırakmayın:
# Webhook güvenliği için checklist
# 1. Authentication mutlaka ekleyin (Header Auth veya Basic Auth)
# 2. IP whitelist uygulayabilirsiniz (nginx veya firewall seviyesinde)
# 3. Rate limiting ekleyin
# 4. Webhook secret/signature doğrulaması yapın (GitHub, Stripe gibi sistemler imzalı istek atar)
# Nginx ile basit IP kısıtlaması
location /webhook/ {
allow 1.2.3.4; # Güvenilen kaynak IP
deny all;
proxy_pass http://localhost:5678;
}
Cron Expression Test Etme
Yazdığınız cron expression’ın doğru çalışıp çalışmadığını test etmek için:
# Linux terminalde cron expression test etme
# crontab -e ile açıp test edebilirsiniz
# Ya da online araçlar kullanın: crontab.guru
# Systemd timer ile de test edebilirsiniz
# n8n'in kendi arayüzünde de "Next execution" göstergesi var
Multiple Trigger: Bir Workflow’a Birden Fazla Başlangıç
n8n’de bir workflow’un hem webhook ile hem de schedule ile tetiklenebileceğini biliyor muydunuz? Aynı workflow’a birden fazla trigger node ekleyebilirsiniz. Her trigger aynı ana akışa bağlanır.
Örnek senaryo: Stok raporu hem her gece otomatik çalışır hem de manuel webhook tetiklendiğinde anında çalışabilir. Bu esneklik özellikle acil durum senaryolarında çok işe yarar.
# Workflow başlangıç noktaları:
# Trigger 1: Schedule (her gece 23:00)
# Trigger 2: Webhook (manuel tetikleme için)
# Her ikisi de aynı "Stok Kontrol" node'una bağlı
# Sonuç: İki farklı kaynaktan aynı işlem tetiklenebilir
Environment Variable ile Dinamik Webhook Yönetimi
Büyük organizasyonlarda farklı ortamlar (dev, staging, prod) için farklı webhook URL’leri ve konfigürasyonlar gerekebilir. n8n’de environment variable kullanımı bu konuda yardımcı olur:
# n8n başlatırken environment variable tanımlama
export N8N_WEBHOOK_BASE_URL=https://n8n.sirket.com
export N8N_BASIC_AUTH_ACTIVE=true
export N8N_BASIC_AUTH_USER=admin
export N8N_BASIC_AUTH_PASSWORD=guclu-sifre
# Docker Compose ile kullanım
services:
n8n:
image: n8nio/n8n
environment:
- N8N_WEBHOOK_BASE_URL=https://n8n.sirket.com
- WEBHOOK_URL=https://n8n.sirket.com
- TZ=Europe/Istanbul
Bu sayede aynı workflow farklı ortamlarda farklı URL’lerle çalışabilir, ortama göre konfigürasyonu dışarıdan yönetmiş olursunuz.
Sonuç
n8n’de trigger seçimi, iş akışı tasarımının temel taşlarından biridir. Webhook gerçek zamanlı, olay güdümlü senaryolar için; Schedule Trigger ise periyodik görevler için biçilmiş kaftandır. Doğru trigger’ı seçmek performansı doğrudan etkiler ve sistemin güvenilirliğini artırır.
Pratik tavsiyem: Eğer kaynak sistem webhook destekliyorsa her zaman webhook’u tercih edin. Polling veya schedule’a yalnızca zorunlu kaldığınızda başvurun. Güvenlik konusunda webhook URL’lerinizi mutlaka koruyun, production ortamında authentication olmayan bir webhook bırakmak ciddi bir açık kapıdır.
n8n’in trigger sistemi başlangıçta basit görünse de derinleştikçe ciddi esneklik sunduğunu görürsünüz. Timezone sorunları, overlap yönetimi, multiple trigger kullanımı gibi konuları sindirdikçe çok daha güçlü otomasyon sistemleri kurabilirsiniz. Bir sonraki adım olarak webhook ile aldığınız veriyi nasıl işleyeceğinizi, filtre ve dönüşüm node’larını incelemenizi öneririm.
