Webhook chatbota to punkt końcowy HTTPS, na który platforma chatbota wysyła metodą POST ładunek JSON za każdym razem, gdy coś się dzieje: odwiedzający zaczyna rozmowę, agent kończy odpowiedź, zostaje pozyskany lead. Skieruj ten punkt końcowy na n8n, Make lub Zapier, a wszystko dalej — alerty na Slacku, arkusze, aktualizacje CRM, maile uzupełniające — to automatyzacja, którą już umiesz budować. W SuperCognit rejestrujesz punkt końcowy w panelu, wybierasz zdarzenia, a każde doręczenie jest podpisane i ponawiane. Ten poradnik omawia dostępne zdarzenia, wygląd ładunków, odbiornik w każdym z narzędzi i kilka błędów, przez które po cichu tracisz dane.
Zdarzenia, które możesz subskrybować
Nazwy zdarzeń to publiczny kontrakt: nowe są dodawane, istniejących nigdy się nie przemianowuje, więc automatyzacja zbudowana dziś będzie działać dalej. Te, których używa większość osób:
Punkt końcowy z pustą listą zdarzeń otrzymuje wszystko. Zacznij wąsko — jedno zdarzenie, jeden przepływ — i poszerzaj, gdy pierwszy scenariusz zrobi się nudny.
Jak wygląda ładunek leada
{
"id": "evt_…", // stable across retries — dedupe on this
"event": "lead.captured",
"version": 1,
"createdAt": "2026-09-10T09:14:02.000Z",
"workspaceId": "…", // a receiver may serve several workspaces
"data": {
"leadId": "…",
"productId": "…",
"sessionId": "…",
"agent": "Showroom assistant",
"contact": { "name": "Ana Silva", "email": "ana@example.com", "phone": null },
"fields": { "budget": "20k" },
"consent": true,
"sourceUrl": "https://acme.com/pricing",
"status": "pending",
"crm": { "provider": "pipedrive", "leadId": "…", "url": "…" }
}
}Obiekt fields zawiera odpowiedzi kwalifikujące zebrane przez agenta, consent rejestruje, że odwiedzający zgodził się na kontakt, a crm występuje tylko wtedy, gdy podłączony jest CRM. Ładunki tylko zyskują pola; nic, co zmapujesz dziś, nie zniknie.
Zarejestruj punkt końcowy
Najpierw utwórz odbiornik
W n8n, Make lub Zapier dodaj wyzwalacz webhook i skopiuj podany adres URL. Musi przyjmować POST i szybko odpowiadać kodem 2xx — powolną pracę wykonuj po odpowiedzi.
Dodaj webhook w panelu
W Ustawieniach → Webhooki dodaj punkt końcowy, wklej adres URL i wybierz zdarzenia. Skopiuj sekret podpisu; bez niego nie zbudujesz weryfikacji. Ta sama rejestracja jest dostępna przez REST API dla zespołów, które konfigurują wszystko z kodu.
Wyślij test
Rozpocznij rozmowę z własnym agentem albo pozyskaj testowego leada. Obserwuj dziennik doręczeń w panelu: każda próba jest zapisywana ze statusem odpowiedzi zwróconym przez Twój punkt końcowy.
Zweryfikuj podpis, zanim zaufasz treści
Każde doręczenie zawiera nagłówek x-supercognit-signature: sha256=, a po nim HMAC-SHA256 surowej treści żądania, z Twoim sekretem jako kluczem. Oblicz go, porównaj w stałym czasie, odrzuć przy niezgodności. Każdy może wysłać POST na publiczny URL; podpisać może tylko platforma.
// Node.js — verify the signature on the RAW body (not the parsed JSON)
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(rawBody, header, secret) {
const expected = "sha256=" + createHmac("sha256", secret).update(rawBody).digest("hex");
return expected.length === header.length && timingSafeEqual(Buffer.from(expected), Buffer.from(header));
}Odbieranie w każdym narzędziu
n8n
Użyj węzła Webhook z metodą POST i opcją „Respond immediately”. Zaraz po nim dodaj węzeł Code, który zweryfikuje podpis za pomocą powyższego fragmentu — n8n udostępnia surową treść, gdy włączysz to w węźle — a potem rozgałęź przepływ według pola event węzłem Switch. Samodzielnie hostowane n8n pod Twoją własną domeną to najporządniejsza opcja: Twój sekret i Twoje dane zostają u Ciebie.
Make
Utwórz Custom webhook, wykonaj jedno testowe doręczenie, żeby Make poznał strukturę, a potem dodaj router według pola event. Make potrafi obliczyć HMAC w funkcji tekstowej; porównaj go z nagłówkiem przed routerem i zatrzymaj scenariusz przy niezgodności.
Zapier
Użyj Webhooks by Zapier z Catch Hook jako wyzwalaczem. Zapier sam parsuje JSON, co jest wygodne, ale oznacza też, że do weryfikacji potrzebujesz kroku Code odtwarzającego surową treść; jeśli to więcej, niż chcesz, ogranicz Zapa do scenariuszy niskiego ryzyka, takich jak powiadomienia, a zapisy w CRM zostaw natywnej integracji.
Ponowienia i idempotentność
Doręczenia, które nie dostaną odpowiedzi 2xx, są ponawiane do pięciu prób z wykładniczym odstępem — co jedną, dwie, cztery i osiem minut — a każda próba jest zapisywana ze statusem odpowiedzi. Pole id w kopercie pozostaje takie samo we wszystkich próbach i właśnie to pozwala usuwać duplikaty: jeśli Twój punkt końcowy odpowiedział powoli, a ponowienie i tak dotarło, druga kopia ma to samo id i ją pomijasz. Odpowiadaj szybko, zapisz id, pracę wykonaj potem.
Pięć scenariuszy, które zwracają koszt konfiguracji
- lead.captured → wiadomość na Slacku na kanał sprzedaży z kontaktem, odpowiedziami kwalifikującymi i linkiem do zapisu rozmowy.
- lead.failed → alert dla osoby odpowiedzialnej za połączenie z CRM, z id leada do ponownego wysłania z panelu.
- message.completed → dopisanie do arkusza przeglądu, a potem losowe sprawdzenie dziesięciu tygodniowo pod kątem jakości.
- conversation.created → liczenie według sourceUrl w panelu, żeby widzieć, które strony zaczynają rozmowy.
- knowledge.source.failed → zgłoszenie do właściciela treści, zanim agent zacznie odpowiadać na podstawie nieaktualnych stron.
„Webhook ChatGPT”: dlaczego to wyszukiwanie nie daje nic przydatnego
Osoby szukające webhooka ChatGPT zwykle mają na myśli jedną z dwóch rzeczy. Jeśli zbudowały własnego GPT, odpowiedź brzmi: GPT może wywołać Twoje API przez akcję, ale nie wysyła Ci zdarzenia, gdy odbywa się rozmowa — nie ma wychodzącego webhooka do subskrypcji. Jeśli same zbudowały bota na OpenAI API, webhook to ich własny kod do napisania. Tak czy inaczej, poszukiwana funkcja to platforma, która emituje zdarzenia o rozmowach i leadach. Tym właśnie jest powyższy katalog zdarzeń.
Błędy, przez które tracisz dane
- Wykonywanie powolnej pracy przed odpowiedzią. Zapis w CRM trwający dwanaście sekund przekracza limit czasu doręczenia, które jest ponawiane — i masz dwie szanse sprzedaży.
- Weryfikowanie sparsowanego JSON-a zamiast surowej treści. Ponowna serializacja zmienia bajty; podpis nigdy się nie zgodzi.
- Subskrybowanie wszystkiego pierwszego dnia. Samo message.created to potrafi być tysiące zdarzeń dziennie; zacznij od tego, na które zareagujesz.
- Ignorowanie lead.failed. Lead jest bezpieczny w panelu, ale nikt nie wie, że trzeba go wysłać ponownie, dopóki coś mu tego nie powie.
Webhooki to ta część chatbota, której nikt nie widzi, a od której wszyscy zależą. Zarejestruj jeden punkt końcowy, zweryfikuj jeden podpis, zbuduj jeden scenariusz, a reszta Twojego stosu zacznie słyszeć, co robi Twój agent.
