Oversigt over webhooks
Webhooks giver ChatLab mulighed for at give dine systemer besked i samme øjeblik, der sker noget i dine chatbots. I stedet for at foretage polling mod Management API eller eksportere data manuelt, registrerer du et HTTPS-endpoint, hvortil ChatLab sender et signeret HTTP POST i realtid - når en besøgende efterlader et lead, indsender en kontaktformular, bedømmer en samtale, anmoder om et menneske, eller når en AI-handling kører.
Typiske anvendelsesmuligheder:
- send nye leads direkte ind i dit CRM i samme sekund, de opsamles
- giv dit team besked i Slack, når en besøgende anmoder om Live Chat (livechat)
- før samtalebedømmelser og opsummeringer ind i dine egne analyseværktøjer
- overvåg afvikling af AI actions (AI-handlinger), og opsæt advarsler ved fejl
Tilgængelighed: Webhooks er tilgængelige fra STANDARD-planen og opefter (funktion: Webhooks).
Her konfigureres det: I administratorappen åbner du Account settings -> Webhooks (Kontoindstillinger -> Webhooks) lige ved siden af sektionen Management API. Webhooks er på kontoniveau - ét endpoint kan modtage hændelser fra alle dine robotter eller fra et filtreret undersæt.
Opsætning af et endpoint
- Åbn Account settings -> Webhooks (Kontoindstillinger -> Webhooks), og klik på Create endpoint (Opret endpoint).
- Udfyld endpoint-formularen:
- Name (Navn) - en etiket til din egen reference, f.eks. "CRM-synkronisering" eller "Slack-notifikationer".
- URL - den HTTPS-adresse, som ChatLab sender hændelser til via POST.
- Events (Hændelser) - vælg, hvilke hændelsestyper dette endpoint skal modtage (se oversigten nedenfor). Vælg kun det, du har brug for; hændelser med høj volumen som f.eks.
ai_action.executedkan generere en stor mængde trafik. - Bot filter (valgfrit) - begræns endpointet til specifikke robotter. Lad feltet stå tomt for at modtage hændelser fra alle robotter på din konto.
- Custom form filter (valgfrit) - sender indsendelser fra én specifik tilpasset formular til dette endpoint. Det indsnævrer kun hændelsen
custom_form.submitted; alle andre hændelser, du abonnerer på (leads, kontaktanmodninger, samtaler, Live Chat, AI-handlinger), leveres uanset denne indstilling.
- Indsend. Endpointets secret (hemmelighed) vises præcis én gang i bekræftelsesdialogen - kopiér den med det samme, og opbevar den sikkert. Du skal bruge den til at verificere signaturer (se Sikkerhed nedenfor). Værdien i klartekst kan ikke hentes igen senere.
Hvert endpoint har også:
- Aktiver/deaktiver-knap - sæt leveringer på pause uden at slette endpointet. Deaktiverede endpoints kasserer hændelser uden besked (de lægges ikke i kø til senere).
- Send sample event (Send testhændelse) - leverer en signeret testanmodning til din URL, så du kan verificere din modtager fra start til slut. Du kan vælge hændelsestype og redigere testværdierne før afsendelse, så dit script modtager realistiske data. Testen ankommer som en almindelig levering med
eventTypesvarende til dit valg (eller somwebhook.testfor et simpelt forbindelsestjek). - Roll secret (Rul hemmelighed) - genererer en ny hemmelighed og ugyldiggør den gamle. Brug dette, hvis hemmeligheden kan være blevet kompromitteret. Den nye hemmelighed vises igen kun én gang. Opdater din modtager, før du ruller nøglen, da leveringer ellers vil fejle ved signaturverificeringen på din side.
- Delivery log (Leveringslog) - en liste over nylige leveringer for det enkelte endpoint med tidsstempel, hændelsestype, HTTP-status returneret af din server og svartid. Mislykkedes leveringer og automatiske pauser (circuit breaker) er synlige her. Loggen gemmes i 14 dage.
Hændelseskuvert (envelope)
Enhver levering er en HTTP POST med Content-Type: application/json. Brødteksten har altid den samme kuvertstruktur; data-objektet er specifikt for den enkelte hændelsestype:
{
"eventId": "9f1c1c8e-6a2b-4b9e-9d2f-3f8a1e2b4c5d",
"eventType": "lead.created",
"timestamp": "2026-08-13T14:22:31Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": { }
}
eventId- unik for hver hændelse. Bruges til deduplikering, hvis din behandling skal være idempotent.eventType- en af de typer, der er dokumenteret nedenfor; sendes også i headerenX-ChatLab-Event.timestamp- ISO 8601 UTC-tidspunkt for, hvornår hændelsen fandt sted.botId/botName- den bot, hændelsen tilhører.conversationId/sessionId- samtalekonteksten, når det er relevant.
Hændelseskatalog
lead.created
Udløses, når en besøgende indsender sine kontaktoplysninger - via lead collection form (leadopsamlingsformularen), før-formularen til Live Chat eller en tilpasset formular, der bruges til leadopsamling.
{
"eventId": "9f1c1c8e-6a2b-4b9e-9d2f-3f8a1e2b4c5d",
"eventType": "lead.created",
"timestamp": "2026-08-13T14:22:31Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"email": "jane.doe@example.com",
"name": "Jane Doe",
"phone": "+1 555 0123",
"source": "LEAD_COLLECTION_FORM",
"formCodeName": "lead_form",
"formName": "Lead form",
"fields": [
{"name": "email", "value": "jane.doe@example.com", "type": "email"},
{"name": "company", "value": "Acme Inc.", "type": "text"},
{"name": "topics", "value": ["Billing", "Delivery"], "type": "multichoice"},
{"name": "attachment", "value": "https://api.chatlab.com/aichat/customform/download?key=...&token=...", "type": "file"}
],
"pageUrl": "https://acme.com/pricing"
}
}
source- hvordan kontaktoplysningerne blev opsamlet:LEAD_COLLECTION_FORM(leadopsamlingsformular),LIVE_CHAT_FORM(før-formular til Live Chat),CONVERSATION(AI'en opsnappede oplysningerne under chatten),ADMIN_DATA_UPDATEellerUPDATE_CLIENT_CONTEXT(redigeret på ChatLabs side). Indsendelser via formularen til menneskelig support udløser aldrig denne hændelse - de udløser i stedetcontact_form.submitted.email,name,phone- kontaktoplysningerne tilknyttet lead-posten.- Når en tilpasset formular bruges til leadopsamling, inkluderes alle felter defineret i formularen under
fieldsi formularens rækkefølge, ogformCodeName/formNameidentificerer formularen. Ved den klassiske leadformular er beggenull, ogfieldser et tomt array. - Hver post i
fieldser{name, value, type}.nameer feltets tekniske navn, som forbliver uændret, selvom etiketten redigeres - brug det til tilknytning (mapping) i dit CRM. - For
multichoice-felter ervalueet array af de valgte indstillinger. Afkrydsningsfelter er individuelle poster med værdierne"true"/"false". - For
file-felter ervalueet downloadlink til den uploadede fil; webhooken indeholder aldrig selve filindholdet. pageUrl- den side, den besøgende befandt sig på ved indsendelsen.
contact_form.submitted
Udløses, når en besøgende indsender formularen til menneskelig supportkontakt eller en tilpasset formular, der bruges til menneskelig kontakt.
{
"eventId": "3a7b9c2d-1e4f-4a6b-8c0d-5e2f7a9b1c3d",
"eventType": "contact_form.submitted",
"timestamp": "2026-08-13T14:25:02Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"email": "jane.doe@example.com",
"message": "I need help with my last invoice.",
"source": "CUSTOM_FORM",
"formCodeName": "contact_form",
"formName": "Contact form",
"fields": [
{"name": "email", "value": "jane.doe@example.com", "type": "email"},
{"name": "order_number", "value": "A-10293", "type": "text"},
{"name": "message", "value": "I need help with my last invoice.", "type": "textarea"}
]
}
}
email- den adresse, den besøgende efterlod, og den adresse, dit supportteam skal svare til.source-CUSTOM_FORM, når kontaktformularen understøttes af en tilpasset formular,CONTACT_FORMfor den indbyggede.formCodeName/formName- identificerer den bagvedliggende tilpassede formular; begge ernullfor den indbyggede formular.- Når en tilpasset formular anvendes, inkluderes alle felter defineret på formularen i
fields(samme{name, value, type}-format som ilead.created). Ved den indbyggede kontaktformular udfyldes kunemailogmessage,fieldser et tomt array, og formularidentifikatorerne ernull. message- det tilknyttede beskedfelt eller alle udfyldte værdier sat sammen, hvis formularen ikke har et specifikt beskedfelt.
custom_form.submitted
Udløses ved enhver indsendelse af en tilpasset formular, uanset formularens formål. Bemærk, at formularer med leadopsamling eller menneskelig kontakt som formål også udløser deres dedikerede hændelser lead.created / contact_form.submitted - abonner på den ene eller den anden afhængigt af, om du ønsker den generelle eller den specialiserede visning, og dedupliker på conversationId + timestamp, hvis du abonnerer på begge.
{
"eventId": "6c1d8e3f-2a5b-4c7d-9e0f-1a4b6c8d0e2f",
"eventType": "custom_form.submitted",
"timestamp": "2026-08-13T14:27:45Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"formCodeName": "warranty_claim",
"formName": "Warranty claim",
"fields": [
{"name": "order_number", "value": "A-10293", "type": "text"},
{"name": "issue", "value": "Damaged on arrival", "type": "textarea"},
{"name": "photo", "value": "https://api.chatlab.com/aichat/customform/download?key=...&token=...", "type": "file"}
],
"purpose": "STANDALONE"
}
}
formCodeName- formularens faste systemnavn, som ikke ændrer sig, hvis du omdøber formularen; brug det til at dirigere indsendelser i dit eget system.formNameer den viste etiket, som de besøgende ser.fieldsanvender de samme{name, value, type}-poster somlead.created: værdier for flervalg er arrays, og filværdier er downloadlinks.purpose-STANDALONE,LEAD_COLLECTIONellerHUMAN_CONTACT, afhængigt af hvordan formularen er forbundet med chatbotted.
conversation.started
Udløses, når en besøgende sender den første besked i en ny samtale.
{
"eventId": "8e2f0a4b-3c6d-4e8f-a1b2-2c5d7e9f1a3b",
"eventType": "conversation.started",
"timestamp": "2026-08-13T14:20:11Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"firstMessage": "Do you ship to Canada?",
"chatSource": "WIDGET",
"byAdmin": false,
"countryCode": "PL",
"ipAddress": "83.12.44.7"
}
}
firstMessage- den præcise ordlyd af den besøgendes åbningsbesked.nullhvis samtalen blev åbnet uden beskedindhold.chatSource- den kanal, samtalen kom ind fra:WIDGET,WHATSAPP,MESSENGER,VOICE,VOICE_PHONE,API,BOOKING,AIRBNBellerIDOBOOKING.byAdmin-truenår samtalen kommer fra forhåndsvisningen af chatbotted inde i ChatLab-administratorpanelet frem for fra en rigtig besøgende. Brug det til at holde dine egne testsamtaler ude af dit CRM.countryCode- ISO-landekode udledt af den besøgendes IP-adresse,nullhvis den ikke kunne fastslås.ipAddress- den besøgendes IP-adresse set fra ChatLab,nullnår den ikke er tilgængelig. Behandl den som personoplysninger under GDPR, og gem den kun, hvis du har et lovligt grundlag.
conversation.rated
Udløses, når en besøgende bedømmer et botsvar med tommel op eller tommel ned (se Samtalebedømmelse).
{
"eventId": "1b4c6d8e-5f0a-4b2c-8d3e-4f7a9b1c3d5e",
"eventType": "conversation.rated",
"timestamp": "2026-08-13T14:31:09Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"rating": "POSITIVE"
}
}
rating-POSITIVEellerNEGATIVE. Fjernelse af en bedømmelse udløser ikke hændelsen, så du modtager aldrig en neutral værdi.
conversation.summarized
Udløses, når ChatLab genererer en opsummering af en afsluttet samtale.
{
"eventId": "4d7e9f1a-6b2c-4d4e-9f0a-5b8c0d2e4f6a",
"eventType": "conversation.summarized",
"timestamp": "2026-08-13T14:45:00Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"summary": "Visitor asked about shipping to Canada and delivery times. The bot confirmed availability and quoted 5-7 business days. Visitor left satisfied.",
"language": "en"
}
}
summary- den genererede opsummeringstekst. Opsummeringer genereres et par minutter efter, at samtalen bliver inaktiv, så denne hændelse ankommer senere end resten af samtalehændelserne.language- ISO-kode for det sprog, opsummeringen blev skrevet på, svarende til sproget i samtalen.
client.summarized
Udløses, når ChatLab opdaterer en klients AI-profil. Profilen genopbygges på baggrund af den tidligere profil plus opsummeringen af den netop afsluttede samtale, hvorfor denne hændelse følger efter conversation.summarized for den samme samtale. Klienter identificeres via e-mail, hvilket er grunden til, at adressen gentages på øverste niveau i data.
{
"eventId": "b5d8f1a3-7c2e-4d9b-a6f0-1e3c5a7b9d2f",
"eventType": "client.summarized",
"timestamp": "2026-08-18T09:12:04Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"clientEmail": "jane.doe@example.com",
"client": {
"email": "jane.doe@example.com",
"name": "Jane Doe",
"phone": "+1 555 0123",
"countryCode": "PL",
"ipAddress": "83.12.44.7"
},
"clientSummary": "Returning customer interested in international shipping. Asked about delivery times to Canada twice and about return costs once."
}
}
clientEmail- identifikator til at matche klienten mod dit eget CRM. Den ernullfor anonyme besøgende, som aldrig efterlod en adresse, og hændelsen udløses stadig for dem - spring disse leveringer over, hvis din integration er baseret på e-mail.client- den kontaktpost, ChatLab har om denne person:email,name,phone,countryCodeogipAddress. Alle nøgler er altid til stede; ukendte værdier ernull.clientSummary- den fulde profiltekst som almindelig tekst, ikke en ændringsoversigt (diff). Den erstatter den tidligere opsummering fuldstændigt, så gem den som en overskrivning i stedet for at tilføje den.- Profilen genopbygges kun for robotter, der har chat memory (sam选取talehukommelse) aktiveret, og kun for samtaler, der var inaktive længe nok til at blive opsummeret - forvent denne hændelse nogle minutter efter, at samtalen slutter, ikke med det samme.
live_chat.requested
Udløses, når AI'en overdrager samtalen til Live Chat (livechat), enten fordi den besøgende bad om et menneske, eller fordi botten vurderede, at et menneske var nødvendigt.
{
"eventId": "7a0b2c4d-8e3f-4a5b-b0c1-6d9e1f3a5b7c",
"eventType": "live_chat.requested",
"timestamp": "2026-08-13T14:33:20Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"requestedBy": "AI"
}
}
requestedBy- i øjeblikket altidAI, fordi overdragelsen altid initieres af bottens Live Chat-handling, også når den besøgende anmoder om det i almindelig tekst. Behandl det som en åben enum: håndter ukendte værdier i stedet for udelukkende at forventeAI.- Hændelsen angiver, at der blev anmodet om en overdragelse, ikke at en operatør har overtaget den. Vent på
live_chat.startedfor at bekræfte dette.
live_chat.started
Udløses, når en operatør deltager, og Live Chat-sessionen rent faktisk begynder.
{
"eventId": "0c3d5e7f-9a4b-4c6d-a1b2-7e0f2a4b6c8d",
"eventType": "live_chat.started",
"timestamp": "2026-08-13T14:33:55Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {}
}
dataer bevidst tomt. Alt, hvad du behøver, findes i kuverten:botIdidentificerer chatbotted, ogconversationId/sessionIdknytter hændelsen til den samtale, du allerede har modtagetlive_chat.requestedfor.
live_chat.ended
Udløses, når Live Chat-sessionen slutter.
{
"eventId": "2e5f7a9b-0c5d-4e7f-b2c3-8f1a3b5c7d9e",
"eventType": "live_chat.ended",
"timestamp": "2026-08-13T14:52:41Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"durationSeconds": 1126
}
}
durationSeconds- hvor længe operatøren var i samtalen, målt fra det øjeblik sessionen startede. Feltet udelades i de sjældne tilfælde, hvor en session afsluttes uden nogensinde at have været startet.
ai_action.executed
Udløses hver gang botten udfører en AI action (AI-handling) - et administreret integrationskald eller en tilpasset API-funktion. Dette er en hændelse med høj volumen: En aktiv e-handelsbot kan udføre hundredvis af handlinger om dagen, og et enkelt svar fra en besøgende kan udløse flere. Tilmeld dig den på et dedikeret endpoint, eller vær sikker på, at din modtager kan håndtere datamængden.
{
"eventId": "5f8a0b2c-1d6e-4f8a-c3d4-9a2b4c6d8e0f",
"eventType": "ai_action.executed",
"timestamp": "2026-08-13T14:21:03Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"actionName": "search_products",
"status": "SUCCESS",
"durationMs": 842,
"errorMessage": null
}
}
actionName- navnet på den udførte handling, som AI'en ser det, for eksempelsearch_productsfor en integreret løsning eller det navn, du gav en tilpasset API-handling.status-SUCCESSellerERROR.durationMs- hvor lang tid handlingen tog i millisekunder. Nyttigt til at opdage en langsom integration, før de besøgende klager over det.errorMessage- årsagen til fejlen, udfyldes kun nårstatuserERROR; ellersnull.
webhook.test
Sendes via knappen Send sample event (Send testhændelse), når du udfører et simpelt forbindelsestjek. Signeret på nøjagtig samme måde som en rigtig hændelse.
{
"eventId": "9b2c4d6e-3f8a-4b0c-d5e6-0b3c5d7e9f1a",
"eventType": "webhook.test",
"timestamp": "2026-08-13T14:10:00Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"message": "Test delivery from ChatLab"
}
}
message- fast tekst, altid den samme. Kuvertfelterne indeholder eksempelværdier, så behandl aldrig enwebhook.test-levering som rigtige data.- Dette er den eneste hændelsestype, du ikke kan abonnere på på et endpoint: Den sendes efter anmodning fra administratorpanelet og når altid det endpoint, du klikkede på, uanset hvilke hændelser det lytter efter.
Sikkerhed: verifikation af leveringer
Hver levering indeholder fire headers:
| Header | Værdi |
|---|---|
X-ChatLab-Signature |
sha256=<hex hmac> - HMAC-SHA256-signatur af payloaden |
X-ChatLab-Timestamp |
Unix-tid i sekunder, da leveringen blev signeret |
X-ChatLab-Event |
Hændelsestypen, f.eks. lead.created |
X-ChatLab-Delivery |
Unikt leverings-id, svarende til request bodyens eventId |
Signaturen beregnes som HMAC-SHA256 over strengen {timestamp}.{rawBody} ved hjælp af din slutpunktshemmelighed (endpoint secret), hvor {timestamp} er værdien af X-ChatLab-Timestamp, og {rawBody} er den rå, ubehandlede request body. Bekræft altid mod de rå bytes - re-serialisering af parset JSON ændrer bytesekvensen og ødelægger signaturen.
For at beskytte mod replay-angreb skal du afvise leveringer, hvis X-ChatLab-Timestamp er ældre end 5 minutter.
Node.js
const crypto = require('crypto');
function verifyChatLabSignature(req, secret) {
const signature = req.headers['x-chatlab-signature'];
const timestamp = req.headers['x-chatlab-timestamp'];
if (!signature || !timestamp) return false;
// Reject stale deliveries (older than 5 minutes)
const ageSeconds = Math.abs(Date.now() / 1000 - Number(timestamp));
if (ageSeconds > 300) return false;
// rawBody must be the raw request body bytes, not re-serialized JSON.
// With Express: app.use(express.json({ verify: (req, res, buf) => { req.rawBody = buf; } }))
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + req.rawBody)
.digest('hex');
const a = Buffer.from(signature);
const b = Buffer.from(expected);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
PHP
<?php
function verifyChatLabSignature(string $secret): bool
{
$signature = $_SERVER['HTTP_X_CHATLAB_SIGNATURE'] ?? '';
$timestamp = $_SERVER['HTTP_X_CHATLAB_TIMESTAMP'] ?? '';
if ($signature === '' || $timestamp === '') {
return false;
}
// Reject stale deliveries (older than 5 minutes)
if (abs(time() - (int) $timestamp) > 300) {
return false;
}
$rawBody = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $rawBody, $secret);
return hash_equals($expected, $signature);
}
Hvis verifikationen mislykkes, skal du svare med 401 og kassere payloaden. Behandl aldrig ubekræftede leveringer - enhver, der opdager din URL, kan sende arbitrær JSON til den via POST.
Leveringsadfærd
Forstå disse garantier, før du bygger videre på webhooks:
- Svar hurtigt. Dit slutpunkt skal svare inden for 3 sekunder, ellers tæller leveringen som mislykket. Svar
2xxmed det samme, og behandl payloaden asynkront (sæt den i kø, og kvitter derefter) - foretag ikke CRM-kald eller databaseopdateringer, før du svarer. - Fire-and-forget, højst én gang (at-most-once). Hver hændelse får præcis ét leveringsforsøg - der er ingen genforsøg. Hvis dit slutpunkt er nede, timer ud eller returnerer en status, der ikke er 2xx, er hændelsen tabt og bliver ikke leveret igen. Webhooks er notifikationer, ikke et replikeret datalager: Når du har brug for garanteret fuldstændighed, skal du afstemme mod Management API eller dine lead-eksporter.
- Afbryder (circuit breaker). Efter 5 mislykkede leveringer i træk for en bot sættes leveringer for den pågældende bot på pause i 5 minutter. Hændelser, der opstår under pausen, droppes, og leveringsloggen viser
CIRCUIT_OPEN-poster, så du kan se præcist, hvornår og hvorfor trafikken blev stoppet. Leveringer, der springes over på grund af en åben afbryder, tæller ikke med i automatisk deaktivering. - Automatisk deaktivering. Kontrollen kører i det øjeblik, en levering mislykkes, aldrig på en timer. Hvis en levering mislykkes, og der ikke har været en vellykket levering i 7 dage - talt fra den seneste succes eller fra slutpunktets oprettelsesdato, hvis det aldrig er lykkedes - deaktiveres slutpunktet, og du modtager en e-mailnotifikation. En enkelt
2xxpå et hvilket som helst tidspunkt nulstiller uret. Et slutpunkt, der ikke modtager trafik, deaktiveres aldrig, fordi intet mislykkes. Genaktiver det fra Account settings (Kontoindstillinger), når din modtager er rettet; fejltælleren og tidsstemplet for automatisk deaktivering nulstilles, når du slår det til igen, og hændelser, der blev overset, mens det var slået fra, indhentes ikke. - 410 Gone. Hvis dit slutpunkt svarer med HTTP
410 Gone, deaktiverer ChatLab det med det samme. Brug dette til programmatisk at nedlægge et slutpunkt fra modtagersiden. - Idempotens. Dublerede leveringer forventes ikke under normal drift, men hvis din behandling skal være strengt idempotent, skal du deduplikere ud fra
eventId(også tilgængelig i headerenX-ChatLab-Delivery).
Begrænsninger
- Op til 10 webhook-slutpunkter pr. konto.
- Opbevaring af leveringslog: 14 dage. Ældre poster fjernes automatisk.
Relaterede artikler
- Lead collection - formularen bag
lead.created - Human Support Contact form - formularen bag
contact_form.submitted - Live Chat - flowet bag
live_chat.*-hændelserne - Conversation rating - tommelfinger op/ned bag
conversation.rated - AI Actions - integrationerne bag
ai_action.executed - Chat API - widget-callbacks i browseren (klientsidens modstykke til webhooks)
- Management API - REST API til administration af bots og forbrugsdata