Giden webhooklar
Bir HTTPS URL kaydedin; DMtoLead yeni konusmalar, mesajlar ve otomasyon tetikleri oldukca olaylari oraya POST eder. CRM, Slack veya kendi ic araclariniza baglayin.
Webhook kaydetme
- 1
Dashboard'u acin
Settings - Webhooks - Create webhook.
- 2
Isim ve URL verin
Isim sadece ic kullanima yoneliktir (or. "Production CRM"). URL, sizin kontrol ettiginiz public HTTPS endpoint olmalidir. Self-signed certificate reddedilir - gercek certificate kullanin (Let's Encrypt yeterlidir).
- 3
(Opsiyonel) Account filtresi
Tek workspace'te birden fazla managed account yoneten ajanslar icin: bu webhook'un hangi managed account'lar icin calisacagini secin. Bos birakirsaniz tum aktivitede calisir.
- 4
Kaydedin - DMtoLead URL'i dogrular
Kaydetmede DMtoLead URL'inize verification payload gonderir (asagida). Endpoint'iniz 10 saniye icinde
2xxdonmeli veverifyToken'i JSON icinde geri yansitmalidir. Dogrulama basarisiz olursa webhook kaydedilir ama disabled kalir - endpoint'i duzeltip re-verify toggle'ini kullanin. - 5
API key'i kopyalayin
Kayit sonrasi bir kez gorunen API key'i otomatik uretiriz. Sizin tarafta request signature header'ini dogrulamak icin kullanin (body uzerinden HMAC-SHA256, secret olarak key). Tam key database'de hashli saklanir - tekrar gosteremeyiz.
Verification payload
Webhook olustururken ve her "re-verify" isleminde URL'inize bunu POST ederiz:
{
"event": "webhook.verify",
"verifyToken": "abc123...",
"timestamp": "2026-05-13T19:24:00.000Z"
}Sununla cevap verin:
{ "verifyToken": "abc123..." }Status code 200, content-type application/json. Baska her sey webhook'u unverified birakir.
Event tipleri
webhook.verify- kurulumda bir kez gonderilir (yukarida).conversation.created- herhangi bir kanalda yeni konusma.message.received- musteriden inbound mesaj.message.sent- outbound mesaj (AI veya manuel).automation.triggered- otomasyon kurali match ettiginde calisir (keyword auto-reply, comment auto-engage).conversation.closed- agent veya AI konusmayi cozuldu olarak isaretledi.
Ornek payload'lar
{
"event": "conversation.created",
"timestamp": "2026-05-13T19:24:00.000Z",
"data": {
"conversationId": "65f3a2...",
"workspaceId": "wks_...",
"automationId": "auto_...",
"channel": "instagram",
"customer": {
"platformId": "17841...",
"name": "Alice",
"username": "alice.example"
},
"firstMessage": "Hi, do you have the green one in M?"
}
}{
"event": "message.sent",
"timestamp": "2026-05-13T19:24:02.310Z",
"data": {
"conversationId": "65f3a2...",
"messageId": "msg_...",
"direction": "outbound",
"type": "ai",
"text": "Yes! The green is in stock in M. Want me to set up a draft order?",
"creditsUsed": 1
}
}Request'in DMtoLead'den geldigini dogrulama
Her webhook POST'u X-DMtoLead-Signature header'i icerir. Bu, raw request body'nin API key'inizi secret olarak kullanan HMAC-SHA256 hex digest'idir. Kendi tarafinizda dogrulayin:
import crypto from "crypto";
function verify(rawBody, signatureHeader, apiKey) {
const expected = crypto
.createHmac("sha256", apiKey)
.update(rawBody)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signatureHeader)
);
}Teslimat ve tekrar denemeler
DMtoLead basarisiz teslimatlari artan bekleme sureleriyle tekrar dener: 1s, 5s, 30s, 5min, 30min, sonra vazgecer. Hatalar Settings - Webhooks - Delivery log'da gorunur. Endpoint'iniz herhangi bir 2xx donerse kabul edilir; baska her sey yeniden deneme tetikler.
10 saniye icinde cevap vermeyi hedefleyin - yavas endpoint teslimati bozmaz ama yuksek hacimde yeniden deneme biriktirebilir. Agir is yapacaksaniz kendi tarafinizda queue'ya atin ve hizli 200 donun.
Plan limitleri
- Free: 1 webhook
- Starter: 3 webhook
- Pro: 10 webhook
- Business / Agency: sinirsiz
Her kayitli URL bir webhook sayilir. Birden fazla event ayni URL'e payload icindeki farkli event degerleriyle gider - her event icin ayri URL gerekmez.
