Bu rehberde: WhatsApp, Telegram, Slack, Discord, Messenger, SMS ve e-posta ile mesaj gönderen, toplu kampanya yapan ve konuşmayı insana devreden kutuları öğrenirsiniz. WhatsApp'ın 24 saat kuralı da burada.
⏱ 12 dakika
Kısaca
Mesajlaşma kutuları bağlı kanallarınıza yazar. Gelen mesajları yakalamak için Mesaj geldi tetikleyicisi kullanılır. Bir kutu, mesaj sağlayıcı tarafından kabul edildiğinde başarılı sayılır.

Teknik ayrıntılar
Bu node'lar bağlı mesajlaşma kanallarına yazar: WhatsApp, Telegram, Slack, Discord, Messenger, SMS ve e-posta. Gelen mesajlar için trigger.messageReceived kullanılır (Tetikleyiciler). Gönderimler messaging kuyruğuna alınır; node, kuyruğa yazıldığında değil, sağlayıcı kabul ettiğinde başarılı sayılır.
| Node | Tip | Girdi | Çıktı handle'ları | Entegrasyon | Model |
|---|---|---|---|---|---|
| Send message | messaging.send | 1 | main, error | WHATSAPP, TELEGRAM, SLACK, DISCORD, MESSENGER, TWILIO_SMS | – |
| Send email | messaging.sendEmail | 1 | main, error | EMAIL_SMTP, RESEND | – |
| Broadcast campaign | messaging.broadcast | 1 | main | WHATSAPP, TELEGRAM, EMAIL_SMTP, RESEND, TWILIO_SMS | – |
| Hand off to human | messaging.handoff | 1 | main | – | – |
Send message (messaging.send)
Tek alıcıya mesaj gönderir. Konuşma (Conversation) kaydı varsa mesaj oraya eklenir ve message.sent olayı yayınlanır.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
channel | Channel | select | Evet | – | WHATSAPP, TELEGRAM, SLACK, DISCORD, MESSENGER, TWILIO_SMS (EMAIL bu node'da yok) |
to | Recipient (phone / chat id / channel) | expression | Evet | {{ $json.contactId }} | WhatsApp/SMS: E.164 numara (905551112233); Telegram: chat id; Slack: kanal id veya @kullanıcı; Discord: kanal id; Messenger: PSID |
text | Message | expression | Evet | {{ $json.reply }} | Markdown Slack/Telegram/Discord'da kısmen desteklenir |
templateName | WhatsApp template name (outside 24h window) | string | Hayır | – | Yalnızca channel = WHATSAPP iken görünür |
templateParams | Template parameters | expression | Hayır | – | Yalnızca channel = WHATSAPP; {{1}}, {{2}} sırasıyla dizi: ["{{ $json.name }}", "{{ $json.date }}"] |
mediaUrl | Media URL (optional) | expression | Hayır | – | Görsel/belge; herkese açık URL |
Çıktı: item + messageId, externalMessageId, sentAt, channel. Hatada error handle'ı: { error: { code, message, retryable } }.
WhatsApp 24 saat kuralı
Müşteri son 24 saat içinde yazmadıysa serbest metin gönderilemez (hata 131047). Bu durumda templateName (WhatsApp Manager'da onaylı şablon) ve templateParams zorunludur; text yok sayılır. Node, konuşma penceresini bilir: pencere açıksa text, kapalıysa şablon kullanır; şablon tanımlı değilse INVALID döner. Ayrıntı: WhatsApp şablonları ve 24 saat penceresi.
Örnek 1 – chatbot yanıtı (şablondan): channel {{ $json.channel }} (tetikleyiciden gelen kanal), to {{ $json.contactId }}, text {{ $json.reply }}.
Örnek 2 – WhatsApp randevu hatırlatması: channel WHATSAPP, to {{ $json.phone }}, templateName appointment_reminder, templateParams ["{{ $json.name }}", "{{ $date($json.appointmentAt, "DD.MM.YYYY HH:mm") }}"].
Örnek 3 – Slack'e rapor: channel SLACK, to C0123ABCD, text "*{{ $json.title }}*\n{{ $json.summary }}".
Send email (messaging.sendEmail)
SMTP veya Resend hesabıyla e-posta gönderir.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
to | To | expression | Evet | {{ $json.email }} | Virgülle birden fazla adres |
subject | Subject | expression | Evet | – | |
html | Body (HTML or markdown) | text | Evet | – | Markdown yazarsanız HTML'e çevrilir; düz metin sürümü otomatik üretilir |
replyTo | Reply-to | string | Hayır | – | Yanıtların düşeceği adres |
trackReplies | Track replies into conversations | boolean | Hayır | true | Yanıtlar (Reply-To/Message-ID eşleşmesiyle) konuşma olarak Gelen Kutusu'na düşer, lead REPLIED olur |
Çıktı: item + messageId, sentAt, conversationId (trackReplies açıksa). Gönderen adresi entegrasyonun From address alanıdır. Abonelikten çıkma linki için {{ $json.unsubscribeUrl }} alanı outreach/broadcast item'larında hazır gelir.
Örnek – form teşekkür e-postası:
trigger.form → leads.create → messaging.sendEmail
to: {{ $json.email }}
subject: Talebinizi aldık, {{ $json.name.split(" ")[0] }}
html: |
Merhaba {{ $json.name }},
{{ $project.name }} ekibi olarak mesajınızı aldık. En geç 1 iş günü içinde dönüş yapacağız.
replyTo: satis@ornek.com
Broadcast campaign (messaging.broadcast)
Bir lead segmentine hız sınırlı, opt-out'a saygılı toplu mesaj gönderir ve bir Kampanya kaydı oluşturur (Kampanyalar sayfasında ilerleme, teslim ve yanıt istatistikleri).
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
channel | Channel | select | Evet | – | WHATSAPP, TELEGRAM, SLACK, DISCORD, MESSENGER, EMAIL, TWILIO_SMS (entegrasyon: WHATSAPP, TELEGRAM, EMAIL_SMTP, RESEND, TWILIO_SMS) |
segment | Lead segment (filter JSON) | json | Hayır | { "status": ["QUALIFIED"], "tags": [] } | Alanlar: status[], tags[], minScore, projectId, notContactedDays, source |
template | Message template | text | Evet | – | Lead alanlarıyla ifade: Merhaba {{ $json.name }}, …. WhatsApp'ta onaylı şablon adı templateName olarak segment yerine json.templateName ile de verilebilir |
perMinute | Rate (messages / minute) | number | Hayır | 20 | Sağlayıcı limitini aşmayın (WhatsApp 80/s teknik, kalite için 20-60/dk önerilir) |
campaignName | Campaign name | string | Hayır | – | Boşsa iş akışı adı + tarih |
Gelen item'lar segmenti genişletir: node'a leads.query çıktısı bağlarsanız o lead'ler kullanılır, aksi halde segment filtresi çalışır. Opt-out etiketi (unsubscribed) veya doNotContact: true olan lead'ler otomatik atlanır. Çıktı: tek item { campaignId, total, queued, skipped, skippedReasons }. Gönderimler campaigns kuyruğunda ilerler; campaign.started / campaign.finished olayları yayınlanır.
Örnek – WhatsApp kampanyası:
trigger.manual → leads.query (status [QUALIFIED, CONTACTED], tags [webinar], minScore 60)
→ messaging.broadcast
channel: WHATSAPP
template: Merhaba {{ $json.name }}, {{ $vars.eventName }} webinarımız {{ $vars.eventDate }} tarihinde. Katılım linki: {{ $vars.link }}
perMinute: 30
campaignName: Webinar duyurusu – {{ $today }}
WhatsApp'ta pazarlama mesajı için alıcının opt-in'i ve onaylı Marketing şablonu gerekir; bkz. Broadcast kampanyaları ve izin.
Hand off to human (messaging.handoff)
Konuşmayı HUMAN durumuna alır, botu durdurur (trigger.messageReceived bu konuşma için tetiklenmez), ekibe bildirir ve conversation.handoff olayı yayınlar.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
conversationId | Conversation id | expression | Evet | {{ $json.conversationId }} | Tetikleyici veya chatbot çıktısından |
reason | Reason | expression | Hayır | {{ $json.reason }} | Gelen Kutusu'nda ve bildirimde görünür (chatbot handoffReason üretir) |
notifyVia | Notify via | multiselect | Hayır | ["inapp"] | inapp, email, slack |
Çıktı: item + conversationStatus: "HUMAN", assignedToId (atama kuralı varsa). İnsan işini bitirince Gelen Kutusu'ndan Bota geri ver (POST /conversations/:id/release).
Örnek: Chatbot şablonu: logic.if ({{ $json.handoff === true }}) → true → messaging.handoff (reason {{ $json.handoffReason }}, notifyVia [inapp, email]). Müşteriye bilgi vermek için ardından messaging.send (text "Sizi bir temsilcimize bağlıyorum, {{ $json.workingHoursMessage ?? "en kısa sürede dönüş yapacağız" }}.").
İpuçları ve sınırlar
- Test modunda tüm gönderim node'ları dry-run olur;
messaging.handoffgerçek durum değişikliği yapar. - Alıcı biçimleri: WhatsApp
905551112233(artı işareti olmadan da kabul edilir), Twilio+905551112233, Telegram sayısal chat id (kanal için-100…), SlackC…/U…, Discord kanal id. - Slack ve Discord'da bot ilgili kanala eklenmiş olmalıdır.
- E-posta gönderim limitleri sağlayıcıya bağlıdır (Gmail Workspace 2.000/gün, Resend planı); broadcast
perMinutebunu aşmasın. - Konuşma tabanlı metrikler (
messages.outbound,messages.bot_replies,conversations.handoffs) bu node'lardan beslenir. - Yasal: ticari elektronik ileti için alıcı onayı ve İYS kaydı (Türkiye) / GDPR onayı gerekir;
STOP,İPTAL,unsubscribeyanıtları otomatik opt-out yapar.
Sık sorulan sorular
Müşteriye ilk mesajı WhatsApp'tan atabilir miyim? Yalnızca onaylı şablonla ve müşterinin önceden onayıyla. Bkz. WhatsApp şablonları.
Test modunda mesaj gider mi? Hayır; gönderim kutuları kuru çalışır. İnsana devret ise gerçek durum değişikliği yapar.
Toplu mesajda çıkış yapanlara da gider mi? Hayır. Çıkış etiketi veya "iletişim kurma" işareti olan adaylar otomatik atlanır.