[{"data":1,"prerenderedAt":2930},["ShallowReactive",2],{"docs.navigation":3,"docs.content.webhooks":317,"docs.section.bots":2913,"docs.prevnext.webhooks":2927},[4,46,100,137,171,232,239,258,275,292],{"id":5,"title":6,"position":7,"children":8},32,"Introduction",0,[9,13,17,22,27,32,36,41],{"id":10,"title":6,"slug":11,"position":7,"directory":12},34,"getting-started","introduction",{"id":14,"title":15,"slug":16,"position":7,"directory":12},35,"Quickstart guide","quickstart-guide",{"id":18,"title":19,"slug":20,"position":21,"directory":12},37,"What is a bot?","what-is-a-bot",3,{"id":23,"title":24,"slug":25,"position":26,"directory":12},39,"What is a data source?","what-is-a-data-source",4,{"id":28,"title":29,"slug":30,"position":31,"directory":12},38,"What is a channel?","what-is-a-channel",6,{"id":33,"title":34,"slug":35,"position":31,"directory":12},40,"What is a power-up?","what-is-a-power-up",{"id":37,"title":38,"slug":39,"position":40,"directory":12},33,"FAQ","faq",7,{"id":42,"title":43,"slug":44,"position":45,"directory":12},36,"Troubleshooting","troubleshooting",8,{"id":7,"title":47,"position":48,"children":49},"Bots",1,[50,54,58,62,66,70,74,77,81,84,87,92,96],{"id":21,"title":51,"slug":52,"position":7,"directory":53},"Bot advanced settings","bot-advanced-settings","bots",{"id":55,"title":56,"slug":57,"position":48,"directory":53},10,"Prompt engineering tips","prompt-engineering-tips",{"id":59,"title":60,"slug":61,"position":59,"directory":53},2,"Available models","available-models",{"id":63,"title":64,"slug":65,"position":21,"directory":53},13,"Widget customisation","widget-customisation",{"id":67,"title":68,"slug":69,"position":26,"directory":53},12,"Webhooks","webhooks",{"id":71,"title":72,"slug":73,"position":71,"directory":53},5,"Custom domains","custom-domains",{"id":26,"title":75,"slug":76,"position":31,"directory":53},"Bot testing","bot-testing",{"id":78,"title":79,"slug":80,"position":31,"directory":53},11,"SDK","sdk",{"id":40,"title":82,"slug":83,"position":40,"directory":53},"Human takeover","human-takeover",{"id":31,"title":85,"slug":86,"position":55,"directory":53},"Duplicating bots","duplicating-bots",{"id":88,"title":89,"slug":90,"position":91,"directory":53},9,"My Chats","my-chats",15,{"id":48,"title":93,"slug":94,"position":95,"directory":53},"Analytics","analytics",16,{"id":45,"title":97,"slug":98,"position":99,"directory":53},"Lead capture","lead-capture",20,{"id":101,"title":102,"position":59,"children":103},23,"Data sources",[104,109,113,117,121,125,129,133],{"id":105,"title":106,"slug":107,"position":7,"directory":108},25,"File","file-data-source","data-sources",{"id":110,"title":111,"slug":112,"position":7,"directory":108},28,"Notion","notion-data-source",{"id":114,"title":115,"slug":116,"position":59,"directory":108},30,"Website","website-data-source",{"id":118,"title":119,"slug":120,"position":21,"directory":108},31,"YouTube","youtube-data-source",{"id":122,"title":123,"slug":124,"position":26,"directory":108},29,"RSS","rss-data-source",{"id":126,"title":127,"slug":128,"position":71,"directory":108},27,"Manual","manual-data-source",{"id":130,"title":131,"slug":132,"position":88,"directory":108},24,"Data source best practices","data-source-best-practices",{"id":134,"title":135,"slug":136,"position":55,"directory":108},26,"Keeping your bot up to date","keeping-your-bot-up-to-date",{"id":138,"title":139,"position":26,"children":140},14,"Channels",[141,146,150,154,157,160,164,167],{"id":142,"title":143,"slug":144,"position":7,"directory":145},21,"Web","web-channel","channels",{"id":147,"title":148,"slug":149,"position":48,"directory":145},18,"Slack","slack-bot-channel",{"id":151,"title":152,"slug":153,"position":48,"directory":145},19,"Slack (V1 Deprecated)","slack-channel",{"id":95,"title":155,"slug":156,"position":59,"directory":145},"Discord","discord-channel",{"id":99,"title":158,"slug":159,"position":21,"directory":145},"Telegram","telegram-channel",{"id":161,"title":162,"slug":163,"position":26,"directory":145},22,"WhatsApp","whatsapp-channel",{"id":91,"title":165,"slug":166,"position":71,"directory":145},"API","api-channel",{"id":168,"title":169,"slug":170,"position":45,"directory":145},17,"Email","email-channel",{"id":172,"title":173,"position":26,"children":174},47,"Power-ups",[175,180,184,188,192,196,200,204,208,212,216,220,224,228],{"id":176,"title":177,"slug":178,"position":7,"directory":179},49,"Browse Webpage Power-up","browse-webpage-power-up","power-ups",{"id":181,"title":182,"slug":183,"position":7,"directory":179},53,"Google Search Power-up","google-search-power-up",{"id":185,"title":186,"slug":187,"position":7,"directory":179},55,"Power-up basics","power-up-basics",{"id":189,"title":190,"slug":191,"position":7,"directory":179},60,"Use API Power-up","use-api-power-up",{"id":193,"title":194,"slug":195,"position":48,"directory":179},61,"Zapier Power-up","zapier-power-up",{"id":197,"title":198,"slug":199,"position":59,"directory":179},54,"Notion Power-ups","notion-power-ups",{"id":201,"title":202,"slug":203,"position":21,"directory":179},59,"Talk to a Human Power-up","talk-to-a-human",{"id":205,"title":206,"slug":207,"position":26,"directory":179},52,"Email Power-ups","email-power-up",{"id":209,"title":210,"slug":211,"position":71,"directory":179},57,"Send an email","send-email-power-up",{"id":213,"title":214,"slug":215,"position":55,"directory":179},58,"Slack Power-ups","slack-power-ups",{"id":217,"title":218,"slug":219,"position":78,"directory":179},50,"Discord Power-ups","discord-power-ups",{"id":221,"title":222,"slug":223,"position":67,"directory":179},48,"Bot-to-bot power-up","bot-to-bot-power-up",{"id":225,"title":226,"slug":227,"position":63,"directory":179},51,"Display power-ups","display-power-ups",{"id":229,"title":230,"slug":231,"position":138,"directory":179},56,"Power-up display modes","power-up-display-modes",{"id":233,"title":234,"position":71,"children":235},62,"Tasks",[236],{"id":237,"title":234,"slug":238,"position":7,"directory":238},63,"tasks",{"id":240,"title":241,"position":31,"children":242},64,"Teams",[243,246,250,254],{"id":244,"title":241,"slug":245,"position":7,"directory":245},65,"teams",{"id":247,"title":248,"slug":249,"position":48,"directory":245},66,"Inviting team members","teams-inviting",{"id":251,"title":252,"slug":253,"position":59,"directory":245},67,"Managing team members","teams-member-roles",{"id":255,"title":256,"slug":257,"position":21,"directory":245},68,"Transferring bots","teams-transferring-bots",{"id":259,"title":260,"position":31,"children":261},73,"Use cases",[262,267,271],{"id":263,"title":264,"slug":265,"position":7,"directory":266},76,"Build a support bot for your website","support-bot","use-cases",{"id":268,"title":269,"slug":270,"position":48,"directory":266},74,"Build an internal knowledge bot for your team","internal-knowledge-bot",{"id":272,"title":273,"slug":274,"position":59,"directory":266},75,"Build a lead capture bot for your website","lead-capture-bot",{"id":276,"title":277,"position":40,"children":278},69,"Usage and billing",[279,284,288],{"id":280,"title":281,"slug":282,"position":7,"directory":283},70,"How does billing work?","how-does-billing-work","usage-and-billing",{"id":285,"title":286,"slug":287,"position":7,"directory":283},72,"What are storage tokens?","what-are-storage-tokens",{"id":289,"title":290,"slug":291,"position":21,"directory":283},71,"What are message tokens?","what-are-message-tokens",{"id":293,"title":294,"position":45,"children":295},41,"Plans",[296,301,305,309,313],{"id":297,"title":298,"slug":299,"position":7,"directory":300},44,"Free","free-plan","plans",{"id":302,"title":303,"slug":304,"position":48,"directory":300},42,"Basic","basic-plan",{"id":306,"title":307,"slug":308,"position":59,"directory":300},46,"Standard","standard-plan",{"id":310,"title":311,"slug":312,"position":21,"directory":300},45,"Pro","pro-plan",{"id":314,"title":315,"slug":316,"position":26,"directory":300},43,"Enterprise","enterprise-plan",{"id":318,"title":68,"body":319,"description":2905,"extension":2906,"longTitle":2907,"meta":2908,"navigation":1095,"path":2909,"position":26,"seo":2910,"stem":2911,"__hash__":2912},"docs\u002Fdocs\u002Fbots\u002Fwebhooks.md",{"type":320,"value":321,"toc":2865},"minimark",[322,327,331,334,338,341,392,395,399,402,452,459,465,471,477,481,487,492,498,517,521,533,539,543,550,556,560,566,588,591,597,601,619,622,625,654,657,666,674,680,683,697,732,739,749,790,793,810,824,830,833,839,859,863,869,873,879,882,885,889,892,900,908,914,918,926,1140,1143,1168,1171,1176,1187,1190,1193,1198,1206,1209,1229,1233,1236,1241,1302,1305,1433,1437,1440,1444,1467,1469,1532,1536,1542,1546,1549,1553,1621,1623,1750,1754,1757,1761,1817,1819,1942,1946,1949,1953,2014,2016,2152,2156,2159,2163,2219,2221,2352,2355,2365,2368,2371,2458,2462,2472,2771,2778,2782,2785,2803,2810,2814,2826,2838,2850,2854,2861],[323,324,326],"h2",{"id":325},"what-are-webhooks","What are webhooks?",[328,329,330],"p",{},"Webhooks are a method for websites and applications to communicate with each other in real-time. They enable seamless integration between different platforms by sending data instantly when a specific event occurs, instead of constantly polling for updates.",[328,332,333],{},"In ChatThing, webhooks let you connect your bot to the rest of your stack. For example, a webhook can trigger a data-source sync from your CMS whenever an article is published, or send a Slack message to your team the moment a user escalates a conversation to a human.",[323,335,337],{"id":336},"incoming-vs-outgoing","Incoming vs outgoing",[328,339,340],{},"Webhooks in ChatThing fall into two buckets:",[342,343,344,361],"ul",{},[345,346,347,351,352,356,357,360],"li",{},[348,349,350],"strong",{},"Incoming"," - something on the internet calls ",[353,354,355],"em",{},"us"," via a unique URL that ChatThing generates for you. The ",[348,358,359],{},"Sync trigger"," webhook is the only incoming type.",[345,362,363,366,367,370,371,374,375,374,378,374,381,374,384,387,388,391],{},[348,364,365],{},"Outgoing"," - ChatThing calls ",[353,368,369],{},"your"," URL when something happens inside the product. ",[348,372,373],{},"Sync success",", ",[348,376,377],{},"Sync failure",[348,379,380],{},"Conversation started",[348,382,383],{},"Conversation escalated",[348,385,386],{},"Conversation claimed"," and ",[348,389,390],{},"Conversation released"," are all outgoing.",[328,393,394],{},"The distinction matters because the two flows have different settings. Incoming webhooks only need a secret (it's embedded in the URL you share with the outside system). Outgoing webhooks need a target URL to send the request to, plus a secret that you use to verify the request came from us.",[323,396,398],{"id":397},"adding-a-webhook","Adding a webhook",[328,400,401],{},"Webhooks are configured per bot. To add one:",[403,404,405,411,418,429,439,445],"ol",{},[345,406,407,408,410],{},"Open a bot and click the ",[348,409,68],{}," tab.",[345,412,413,414,417],{},"Click ",[348,415,416],{},"New webhook"," to open the webhook catalog.",[345,419,420,421,424,425,428],{},"Search for, or pick, the webhook type you want. If you pick the ",[348,422,423],{},"Sync trigger webhook",", an inline ",[348,426,427],{},"Data source"," picker appears so you can choose which source the hook will sync.",[345,430,413,431,434,435,438],{},[348,432,433],{},"Create webhook",". You'll land on the webhook's settings page with the hook pre-seeded and ",[348,436,437],{},"disabled",".",[345,440,441,442,438],{},"Fill in the required fields and click ",[348,443,444],{},"Save",[345,446,447,448,451],{},"Flip the ",[348,449,450],{},"Enabled"," toggle to start receiving or accepting traffic.",[328,453,454],{},[455,456],"img",{"alt":457,"src":458},"Empty Webhooks tab with No webhooks created yet message and New webhook button","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304188\u002Fdocs\u002Fwebhooks-empty-state.png",[328,460,461],{},[455,462],{"alt":463,"src":464},"Webhook catalog page showing all webhook types as radio cards","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304189\u002Fdocs\u002Fwebhooks-catalog.png",[328,466,467],{},[455,468],{"alt":469,"src":470},"Webhook catalog with Sync trigger card selected showing the Data source picker below","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304191\u002Fdocs\u002Fwebhooks-catalog-sync-trigger-selected.png",[328,472,473],{},[455,474],{"alt":475,"src":476},"Outgoing webhook settings page for Conversation started immediately after creation with enable toggle off and pre-filled secret","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304193\u002Fdocs\u002Fwebhooks-outgoing-fresh-settings.png",[323,478,480],{"id":479},"managing-your-webhooks","Managing your webhooks",[328,482,483,484,486],{},"Once a webhook exists you can manage it from two places - its card on the ",[348,485,68],{}," tab, and its own settings page.",[488,489,491],"h3",{"id":490},"enabling-and-disabling","Enabling and disabling",[328,493,494,495,497],{},"Every webhook has an ",[348,496,450],{}," toggle, available both on the card and on the settings page header. Disabled webhooks behave differently depending on direction:",[342,499,500,511],{},[345,501,502,503,506,507,510],{},"For an ",[348,504,505],{},"outgoing"," webhook, disabled means ChatThing will not send any live events to your target URL. The ",[348,508,509],{},"Test hook"," button still works, so you can validate the configuration before going live.",[345,512,502,513,516],{},[348,514,515],{},"incoming"," webhook, disabled means requests to the webhook URL will be rejected rather than triggering a sync.",[488,518,520],{"id":519},"opening-settings","Opening settings",[328,522,523,524,528,529,532],{},"On any webhook card, click the kebab (",[525,526,527],"code",{},"⋮",") menu and select ",[348,530,531],{},"Settings"," to open that webhook's settings page.",[328,534,535],{},[455,536],{"alt":537,"src":538},"Webhooks grid with kebab menu open on a card showing Settings and Delete options","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304194\u002Fdocs\u002Fwebhooks-grid-kebab-menu.png",[488,540,542],{"id":541},"deleting-a-webhook","Deleting a webhook",[328,544,545,546,549],{},"Open the kebab menu on the card and choose ",[348,547,548],{},"Delete",". A confirmation modal appears - confirming it removes the webhook permanently and invalidates any incoming URL it was using.",[328,551,552],{},[455,553],{"alt":554,"src":555},"Delete webhook confirmation modal","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304196\u002Fdocs\u002Fwebhooks-delete-modal.png",[488,557,559],{"id":558},"testing-a-webhook","Testing a webhook",[328,561,562,563,565],{},"The settings page has a ",[348,564,509],{}," button in the action bar.",[342,567,568,578],{},[345,569,570,571,573,574,577],{},"For ",[348,572,505],{}," webhooks, it sends a real request to the saved target URL using your saved headers and body. It runs against the ",[353,575,576],{},"saved"," configuration, so save any changes you want to test first. It fires even when the hook is disabled.",[345,579,580,581,583,584,587],{},"For the ",[348,582,359],{}," webhook, the test button is labelled ",[348,585,586],{},"Open webhook URL"," and simply opens the unique webhook URL in a new tab so you can see the request flow end-to-end.",[328,589,590],{},"The response from an outgoing test is rendered at the top of the settings page, including the HTTP status and body.",[328,592,593],{},[455,594],{"alt":595,"src":596},"Test hook result panel showing successful 200 OK response at the top of the settings page","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304198\u002Fdocs\u002Fwebhooks-test-hook-result.png",[323,598,600],{"id":599},"configuring-an-outgoing-webhook","Configuring an outgoing webhook",[328,602,603,604,374,607,610,611,614,615,618],{},"Outgoing webhook settings are split into three sections: ",[348,605,606],{},"Delivery",[348,608,609],{},"Authentication",", and ",[348,612,613],{},"Custom payload",", with a ",[348,616,617],{},"Variables sidebar"," on the right.",[488,620,606],{"id":621},"delivery",[328,623,624],{},"Set the URL we should send requests to.",[342,626,627,641],{},[345,628,629,632,633,636,637,640],{},[348,630,631],{},"Webhook target URL"," - the full URL, including ",[525,634,635],{},"https:\u002F\u002F",". ChatThing will send a ",[525,638,639],{},"POST"," here when the event fires (or your chosen method, if you've turned on custom payloads).",[345,642,643,645,646,649,650,653],{},[348,644,427],{}," ",[353,647,648],{},"(sync success \u002F sync failure only)"," - optional. Leave empty to fire for ",[353,651,652],{},"any"," data source on the bot, or pick one to scope the hook to a specific source.",[488,655,609],{"id":656},"authentication",[328,658,659,660,665],{},"Every outgoing webhook needs a secret. We use it to sign the request so your server can confirm the payload actually came from us (see ",[661,662,664],"a",{"href":663},"#security","Security",").",[342,667,668,671],{},[345,669,670],{},"Click the regenerate icon next to the secret field to get a fresh value.",[345,672,673],{},"Rotating the secret invalidates the signatures on any in-flight deliveries - receivers checking signatures will start rejecting old requests until they pick up the new secret.",[328,675,676],{},[455,677],{"alt":678,"src":679},"Outgoing webhook settings with target URL filled in showing Authentication section and Save button","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304200\u002Fdocs\u002Fwebhooks-outgoing-target-saved.png",[488,681,613],{"id":682},"custom-payload",[328,684,685,686,690,691,693,694,696],{},"By default, each outgoing webhook sends a fixed JSON payload (documented in ",[661,687,689],{"href":688},"#available-webhook-types","Available webhook types"," below) with a ",[525,692,639],{},". Turn on ",[348,695,613],{}," if you want to override any of that:",[342,698,699,720,726],{},[345,700,701,704,705,374,707,374,710,374,713,716,717,438],{},[348,702,703],{},"HTTP method"," - choose ",[525,706,639],{},[525,708,709],{},"PUT",[525,711,712],{},"PATCH",[525,714,715],{},"GET",", or ",[525,718,719],{},"DELETE",[345,721,722,725],{},[348,723,724],{},"Request headers"," - JSON object of headers to send.",[345,727,728,731],{},[348,729,730],{},"Request body"," - the exact string we'll send as the body.",[328,733,734,735,738],{},"Turning the toggle ",[348,736,737],{},"off"," hides the override but keeps the fields visible (they're just not saved). The default payload resumes.",[328,740,741,742,745,746,748],{},"You can template the target URL, headers, and body with ",[525,743,744],{},"{{dot.path}}"," placeholders that resolve against the event payload. For example, on a ",[348,747,380],{}," webhook, a body of:",[750,751,756],"pre",{"className":752,"code":753,"language":754,"meta":755,"style":755},"language-json shiki shiki-themes monokai","{ \"bot\": \"{{conversation.botName}}\", \"message\": \"{{conversation.initialMessage}}\" }\n","json","",[525,757,758],{"__ignoreMap":755},[759,760,762,766,770,773,777,779,782,784,787],"span",{"class":761,"line":48},"line",[759,763,765],{"class":764},"sCdxs","{ ",[759,767,769],{"class":768},"sOx1s","\"bot\"",[759,771,772],{"class":764},": ",[759,774,776],{"class":775},"susgL","\"{{conversation.botName}}\"",[759,778,374],{"class":764},[759,780,781],{"class":768},"\"message\"",[759,783,772],{"class":764},[759,785,786],{"class":775},"\"{{conversation.initialMessage}}\"",[759,788,789],{"class":764}," }\n",[328,791,792],{},"…will be rendered with real values at delivery time.",[794,795,796],"callout",{},[328,797,798,801,802,805,806,809],{},[348,799,800],{},"Scalar-only in URLs and headers."," The target URL and header values can only contain text, numbers, or booleans. Pick a specific field like ",[525,803,804],{},"{{conversation.id}}",", not a whole object like ",[525,807,808],{},"{{conversation}}",". The body accepts both - objects and arrays are JSON-encoded.",[328,811,812,813,816,817,820,821,823],{},"If a placeholder doesn't resolve (for example, a typo like ",[525,814,815],{},"{{conversation.userData.emial}}","), the literal ",[525,818,819],{},"{{...}}"," token is sent to your receiver. The ",[348,822,509],{}," button flags unresolved tokens before you go live.",[328,825,826],{},[455,827],{"alt":828,"src":829},"Custom payload section expanded with headers and body editors and the Variables sidebar on the right","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304201\u002Fdocs\u002Fwebhooks-custom-payload-section.png",[488,831,617],{"id":832},"variables-sidebar",[328,834,835,836,838],{},"The right-hand sidebar lists the variables available for the webhook type you're configuring. Click a variable chip to insert its ",[525,837,744],{}," into whichever field you last clicked.",[342,840,841,852],{},[345,842,843,844,847,848,851],{},"The palette filters based on context: when you're editing the target URL or headers, only ",[348,845,846],{},"scalar"," variables are shown (text \u002F numbers \u002F booleans). When you're editing the body, every variable is available, and non-scalars are marked with an ",[348,849,850],{},"object"," badge.",[345,853,854,855,858],{},"Expand ",[348,856,857],{},"Variable reference"," at the bottom of the sidebar for a full list with descriptions - a handy source of truth for what each event carries.",[323,860,862],{"id":861},"configuring-the-sync-trigger-webhook","Configuring the sync trigger webhook",[328,864,865,866,868],{},"The ",[348,867,359],{}," webhook is the only incoming type, so its settings page is smaller.",[488,870,872],{"id":871},"trigger","Trigger",[328,874,875,876,878],{},"Pick the ",[348,877,427],{}," you want this URL to sync when it's called.",[488,880,609],{"id":881},"authentication-1",[328,883,884],{},"The secret is part of the webhook URL - there's no separate header to send. Regenerating the secret changes the URL and invalidates the previous one.",[488,886,888],{"id":887},"webhook-url-panel","Webhook URL panel",[328,890,891],{},"The sidebar shows the full, ready-to-share URL in the form:",[750,893,898],{"className":894,"code":896,"language":897},[895],"language-text","https:\u002F\u002Fchatthing.ai\u002Fapi\u002Fpublic\u002Fhooks\u002F\u003ChookId>\u002F\u003Csecret>\n","text",[525,899,896],{"__ignoreMap":755},[794,901,902],{},[328,903,904,907],{},[348,905,906],{},"Treat this URL like a password."," Anyone with it can trigger a sync against your data source. If it leaks, regenerate the secret to invalidate it.",[328,909,910],{},[455,911],{"alt":912,"src":913},"Sync trigger webhook settings page showing the Trigger section and the Webhook URL sidebar panel","https:\u002F\u002Fres.cloudinary.com\u002Fdjyjvrw5u\u002Fimage\u002Fupload\u002Fv1777304203\u002Fdocs\u002Fwebhooks-sync-trigger-settings.png",[488,915,917],{"id":916},"how-to-call-it","How to call it",[328,919,920,921,374,923,925],{},"Any HTTP method works - ",[525,922,715],{},[525,924,639],{},", or anything else your upstream system sends is fine.",[927,928,929,961,1075],"code-group",{},[750,930,935],{"className":931,"code":932,"filename":933,"language":934,"meta":755,"style":755},"language-bash shiki shiki-themes monokai","curl --request GET \\\n  --url https:\u002F\u002Fchatthing.ai\u002Fapi\u002Fpublic\u002Fhooks\u002F38362dae-a2b4-4484-8ced-920082a40b45\u002F14e6c7131ce0465cb46ec109e7de0719\n","curl","bash",[525,936,937,953],{"__ignoreMap":755},[759,938,939,942,946,950],{"class":761,"line":48},[759,940,933],{"class":941},"sHkqI",[759,943,945],{"class":944},"s7s5_"," --request",[759,947,949],{"class":948},"s_Ekj"," GET",[759,951,952],{"class":944}," \\\n",[759,954,955,958],{"class":761,"line":59},[759,956,957],{"class":944},"  --url",[759,959,960],{"class":948}," https:\u002F\u002Fchatthing.ai\u002Fapi\u002Fpublic\u002Fhooks\u002F38362dae-a2b4-4484-8ced-920082a40b45\u002F14e6c7131ce0465cb46ec109e7de0719\n",[750,962,966],{"className":963,"code":964,"filename":965,"language":965,"meta":755,"style":755},"language-javascript shiki shiki-themes monokai","fetch(\n  \"https:\u002F\u002Fchatthing.ai\u002Fapi\u002Fpublic\u002Fhooks\u002F38362dae-a2b4-4484-8ced-920082a40b45\u002F14e6c7131ce0465cb46ec109e7de0719\",\n  { method: \"GET\" }\n)\n  .then((response) => response.json())\n  .then((response) => console.log(response))\n  .catch((err) => console.error(err));\n","javascript",[525,967,968,976,984,994,999,1028,1051],{"__ignoreMap":755},[759,969,970,973],{"class":761,"line":48},[759,971,972],{"class":941},"fetch",[759,974,975],{"class":764},"(\n",[759,977,978,981],{"class":761,"line":59},[759,979,980],{"class":948},"  \"https:\u002F\u002Fchatthing.ai\u002Fapi\u002Fpublic\u002Fhooks\u002F38362dae-a2b4-4484-8ced-920082a40b45\u002F14e6c7131ce0465cb46ec109e7de0719\"",[759,982,983],{"class":764},",\n",[759,985,986,989,992],{"class":761,"line":21},[759,987,988],{"class":764},"  { method: ",[759,990,991],{"class":948},"\"GET\"",[759,993,789],{"class":764},[759,995,996],{"class":761,"line":26},[759,997,998],{"class":764},")\n",[759,1000,1001,1004,1007,1010,1014,1017,1020,1023,1025],{"class":761,"line":71},[759,1002,1003],{"class":764},"  .",[759,1005,1006],{"class":941},"then",[759,1008,1009],{"class":764},"((",[759,1011,1013],{"class":1012},"sW0Xf","response",[759,1015,1016],{"class":764},") ",[759,1018,1019],{"class":768},"=>",[759,1021,1022],{"class":764}," response.",[759,1024,754],{"class":941},[759,1026,1027],{"class":764},"())\n",[759,1029,1030,1032,1034,1036,1038,1040,1042,1045,1048],{"class":761,"line":31},[759,1031,1003],{"class":764},[759,1033,1006],{"class":941},[759,1035,1009],{"class":764},[759,1037,1013],{"class":1012},[759,1039,1016],{"class":764},[759,1041,1019],{"class":768},[759,1043,1044],{"class":764}," console.",[759,1046,1047],{"class":941},"log",[759,1049,1050],{"class":764},"(response))\n",[759,1052,1053,1055,1058,1060,1063,1065,1067,1069,1072],{"class":761,"line":40},[759,1054,1003],{"class":764},[759,1056,1057],{"class":941},"catch",[759,1059,1009],{"class":764},[759,1061,1062],{"class":1012},"err",[759,1064,1016],{"class":764},[759,1066,1019],{"class":768},[759,1068,1044],{"class":764},[759,1070,1071],{"class":941},"error",[759,1073,1074],{"class":764},"(err));\n",[750,1076,1080],{"className":1077,"code":1078,"filename":1079,"language":1079,"meta":755,"style":755},"language-python shiki shiki-themes monokai","import requests\n\nurl = \"https:\u002F\u002Fchatthing.ai\u002Fapi\u002Fpublic\u002Fhooks\u002F38362dae-a2b4-4484-8ced-920082a40b45\u002F14e6c7131ce0465cb46ec109e7de0719\"\n\nresponse = requests.request(\"GET\", url)\n\nprint(response.text)\n","python",[525,1081,1082,1091,1097,1108,1112,1127,1131],{"__ignoreMap":755},[759,1083,1084,1088],{"class":761,"line":48},[759,1085,1087],{"class":1086},"s8I7P","import",[759,1089,1090],{"class":764}," requests\n",[759,1092,1093],{"class":761,"line":59},[759,1094,1096],{"emptyLinePlaceholder":1095},true,"\n",[759,1098,1099,1102,1105],{"class":761,"line":21},[759,1100,1101],{"class":764},"url ",[759,1103,1104],{"class":1086},"=",[759,1106,1107],{"class":948}," \"https:\u002F\u002Fchatthing.ai\u002Fapi\u002Fpublic\u002Fhooks\u002F38362dae-a2b4-4484-8ced-920082a40b45\u002F14e6c7131ce0465cb46ec109e7de0719\"\n",[759,1109,1110],{"class":761,"line":26},[759,1111,1096],{"emptyLinePlaceholder":1095},[759,1113,1114,1117,1119,1122,1124],{"class":761,"line":71},[759,1115,1116],{"class":764},"response ",[759,1118,1104],{"class":1086},[759,1120,1121],{"class":764}," requests.request(",[759,1123,991],{"class":948},[759,1125,1126],{"class":764},", url)\n",[759,1128,1129],{"class":761,"line":31},[759,1130,1096],{"emptyLinePlaceholder":1095},[759,1132,1133,1137],{"class":761,"line":40},[759,1134,1136],{"class":1135},"sYf5A","print",[759,1138,1139],{"class":764},"(response.text)\n",[328,1141,1142],{},"A successful call returns:",[750,1144,1146],{"className":752,"code":1145,"language":754,"meta":755,"style":755},"{\n  \"success\": true\n}\n",[525,1147,1148,1153,1163],{"__ignoreMap":755},[759,1149,1150],{"class":761,"line":48},[759,1151,1152],{"class":764},"{\n",[759,1154,1155,1158,1160],{"class":761,"line":59},[759,1156,1157],{"class":768},"  \"success\"",[759,1159,772],{"class":764},[759,1161,1162],{"class":944},"true\n",[759,1164,1165],{"class":761,"line":21},[759,1166,1167],{"class":764},"}\n",[323,1169,689],{"id":1170},"available-webhook-types",[328,1172,1173,1174,438],{},"One reference per webhook type, in catalog order. Every outgoing payload also carries the delivery headers documented in ",[661,1175,664],{"href":663},[328,1177,1178,1179,1182,1183,1186],{},"Every outgoing payload body includes a top-level ",[525,1180,1181],{},"deliveryId"," (string) - the same UUID that is echoed in the ",[525,1184,1185],{},"X-ChatThing-Delivery-Id"," header. It is stable across retries, so receivers can de-dupe on it without having to read headers.",[488,1188,423],{"id":1189},"sync-trigger-webhook",[328,1191,1192],{},"Fires when an external system calls the unique URL generated for this hook. Triggers a sync on the configured data source.",[328,1194,1195],{},[348,1196,1197],{},"Response body",[342,1199,1200],{},[345,1201,1202,1205],{},[348,1203,1204],{},"success"," (boolean): whether the sync was successfully queued.",[328,1207,1208],{},"Example response:",[750,1210,1211],{"className":752,"code":1145,"language":754,"meta":755,"style":755},[525,1212,1213,1217,1225],{"__ignoreMap":755},[759,1214,1215],{"class":761,"line":48},[759,1216,1152],{"class":764},[759,1218,1219,1221,1223],{"class":761,"line":59},[759,1220,1157],{"class":768},[759,1222,772],{"class":764},[759,1224,1162],{"class":944},[759,1226,1227],{"class":761,"line":21},[759,1228,1167],{"class":764},[488,1230,1232],{"id":1231},"sync-success-webhook","Sync success webhook",[328,1234,1235],{},"Fires when a data source on the bot finishes syncing successfully. If you pick a data source on the hook, it only fires for that source; otherwise it fires for every source on the bot.",[328,1237,1238],{},[348,1239,1240],{},"Payload",[342,1242,1243,1252,1290,1296],{},[345,1244,1245,1247,1248,1251],{},[348,1246,1204],{}," (boolean): always ",[525,1249,1250],{},"true"," for this event.",[345,1253,1254,1257,1258],{},[348,1255,1256],{},"results"," (object):\n",[342,1259,1260,1266,1272,1278,1284],{},[345,1261,1262,1265],{},[348,1263,1264],{},"totalTokens"," (number): the total number of storage tokens consumed by this sync.",[345,1267,1268,1271],{},[348,1269,1270],{},"modifiedRows"," (number): the number of rows which have changed since the last sync.",[345,1273,1274,1277],{},[348,1275,1276],{},"totalDocuments"," (number): the total number of individual documents relating to this data source.",[345,1279,1280,1283],{},[348,1281,1282],{},"unmodifiedRows"," (number): the number of rows which haven't changed since the last sync.",[345,1285,1286,1289],{},[348,1287,1288],{},"totalDataSourceRows"," (number): the number of data source rows.",[345,1291,1292,1295],{},[348,1293,1294],{},"bot"," (string): the name of the bot.",[345,1297,1298,1301],{},[348,1299,1300],{},"dataSource"," (string): the name of the data source.",[328,1303,1304],{},"Example body:",[750,1306,1308],{"className":752,"code":1307,"language":754,"meta":755,"style":755},"{\n  \"success\": true,\n  \"deliveryId\": \"d3c5a9e8-1b2c-4f5a-9b8d-1a2b3c4d5e6f\",\n  \"results\": {\n    \"totalTokens\": 241245,\n    \"modifiedRows\": 15,\n    \"totalDocuments\": 20,\n    \"unmodifiedRows\": 0,\n    \"totalDataSourceRows\": 15\n  },\n  \"bot\": \"Testing bot\",\n  \"dataSource\": \"Data source one\"\n}\n",[525,1309,1310,1314,1324,1336,1344,1356,1368,1380,1392,1402,1407,1419,1429],{"__ignoreMap":755},[759,1311,1312],{"class":761,"line":48},[759,1313,1152],{"class":764},[759,1315,1316,1318,1320,1322],{"class":761,"line":59},[759,1317,1157],{"class":768},[759,1319,772],{"class":764},[759,1321,1250],{"class":944},[759,1323,983],{"class":764},[759,1325,1326,1329,1331,1334],{"class":761,"line":21},[759,1327,1328],{"class":768},"  \"deliveryId\"",[759,1330,772],{"class":764},[759,1332,1333],{"class":775},"\"d3c5a9e8-1b2c-4f5a-9b8d-1a2b3c4d5e6f\"",[759,1335,983],{"class":764},[759,1337,1338,1341],{"class":761,"line":26},[759,1339,1340],{"class":768},"  \"results\"",[759,1342,1343],{"class":764},": {\n",[759,1345,1346,1349,1351,1354],{"class":761,"line":71},[759,1347,1348],{"class":768},"    \"totalTokens\"",[759,1350,772],{"class":764},[759,1352,1353],{"class":944},"241245",[759,1355,983],{"class":764},[759,1357,1358,1361,1363,1366],{"class":761,"line":31},[759,1359,1360],{"class":768},"    \"modifiedRows\"",[759,1362,772],{"class":764},[759,1364,1365],{"class":944},"15",[759,1367,983],{"class":764},[759,1369,1370,1373,1375,1378],{"class":761,"line":40},[759,1371,1372],{"class":768},"    \"totalDocuments\"",[759,1374,772],{"class":764},[759,1376,1377],{"class":944},"20",[759,1379,983],{"class":764},[759,1381,1382,1385,1387,1390],{"class":761,"line":45},[759,1383,1384],{"class":768},"    \"unmodifiedRows\"",[759,1386,772],{"class":764},[759,1388,1389],{"class":944},"0",[759,1391,983],{"class":764},[759,1393,1394,1397,1399],{"class":761,"line":88},[759,1395,1396],{"class":768},"    \"totalDataSourceRows\"",[759,1398,772],{"class":764},[759,1400,1401],{"class":944},"15\n",[759,1403,1404],{"class":761,"line":55},[759,1405,1406],{"class":764},"  },\n",[759,1408,1409,1412,1414,1417],{"class":761,"line":78},[759,1410,1411],{"class":768},"  \"bot\"",[759,1413,772],{"class":764},[759,1415,1416],{"class":775},"\"Testing bot\"",[759,1418,983],{"class":764},[759,1420,1421,1424,1426],{"class":761,"line":67},[759,1422,1423],{"class":768},"  \"dataSource\"",[759,1425,772],{"class":764},[759,1427,1428],{"class":775},"\"Data source one\"\n",[759,1430,1431],{"class":761,"line":63},[759,1432,1167],{"class":764},[488,1434,1436],{"id":1435},"sync-failure-webhook","Sync failure webhook",[328,1438,1439],{},"Fires when a data source on the bot fails to sync. Same scoping rules as sync success - pick a data source to scope, or leave empty for any source on the bot.",[328,1441,1442],{},[348,1443,1240],{},[342,1445,1446,1453,1459,1463],{},[345,1447,1448,1247,1450,1251],{},[348,1449,1204],{},[525,1451,1452],{},"false",[345,1454,1455,1458],{},[348,1456,1457],{},"reason"," (string): why the sync failed.",[345,1460,1461,1295],{},[348,1462,1294],{},[345,1464,1465,1301],{},[348,1466,1300],{},[328,1468,1304],{},[750,1470,1472],{"className":752,"code":1471,"language":754,"meta":755,"style":755},"{\n  \"success\": false,\n  \"deliveryId\": \"d3c5a9e8-1b2c-4f5a-9b8d-1a2b3c4d5e6f\",\n  \"reason\": \"Over plan storage token limit, please upgrade plan\",\n  \"bot\": \"Testing bot\",\n  \"dataSource\": \"Data source one\"\n}\n",[525,1473,1474,1478,1488,1498,1510,1520,1528],{"__ignoreMap":755},[759,1475,1476],{"class":761,"line":48},[759,1477,1152],{"class":764},[759,1479,1480,1482,1484,1486],{"class":761,"line":59},[759,1481,1157],{"class":768},[759,1483,772],{"class":764},[759,1485,1452],{"class":944},[759,1487,983],{"class":764},[759,1489,1490,1492,1494,1496],{"class":761,"line":21},[759,1491,1328],{"class":768},[759,1493,772],{"class":764},[759,1495,1333],{"class":775},[759,1497,983],{"class":764},[759,1499,1500,1503,1505,1508],{"class":761,"line":26},[759,1501,1502],{"class":768},"  \"reason\"",[759,1504,772],{"class":764},[759,1506,1507],{"class":775},"\"Over plan storage token limit, please upgrade plan\"",[759,1509,983],{"class":764},[759,1511,1512,1514,1516,1518],{"class":761,"line":71},[759,1513,1411],{"class":768},[759,1515,772],{"class":764},[759,1517,1416],{"class":775},[759,1519,983],{"class":764},[759,1521,1522,1524,1526],{"class":761,"line":31},[759,1523,1423],{"class":768},[759,1525,772],{"class":764},[759,1527,1428],{"class":775},[759,1529,1530],{"class":761,"line":40},[759,1531,1167],{"class":764},[488,1533,1535],{"id":1534},"conversation-webhooks","Conversation webhooks",[328,1537,1538,1539,438],{},"The remaining four webhook types fire during the conversation lifecycle. They are useful for integrating with CRMs, ticketing systems, and monitoring tools. To learn more about the lifecycle itself, see ",[661,1540,82],{"href":1541},"\u002Fdocs\u002Fhuman-takeover",[488,1543,1545],{"id":1544},"conversation-started-webhook","Conversation started webhook",[328,1547,1548],{},"Fires when a new conversation is created with your bot.",[328,1550,1551],{},[348,1552,1240],{},[342,1554,1555,1564,1570],{},[345,1556,1557,1560,1561,438],{},[348,1558,1559],{},"event"," (string): ",[525,1562,1563],{},"\"conversation.started\"",[345,1565,1566,1569],{},[348,1567,1568],{},"timestamp"," (string): ISO 8601 timestamp.",[345,1571,1572,1257,1575],{},[348,1573,1574],{},"conversation",[342,1576,1577,1583,1589,1594,1603,1615],{},[345,1578,1579,1582],{},[348,1580,1581],{},"id"," (string): the conversation ID.",[345,1584,1585,1588],{},[348,1586,1587],{},"botId"," (string): the bot ID.",[345,1590,1591,1295],{},[348,1592,1593],{},"botName",[345,1595,1596,1599,1600,438],{},[348,1597,1598],{},"initialMessage"," (string) ",[353,1601,1602],{},"(optional)",[345,1604,1605,1608,1609,374,1612,665],{},[348,1606,1607],{},"channelType"," (string): the channel type (e.g. ",[525,1610,1611],{},"\"web\"",[525,1613,1614],{},"\"slack\"",[345,1616,1617,1620],{},[348,1618,1619],{},"createdAt"," (string): ISO 8601 timestamp of when the conversation was created.",[328,1622,1304],{},[750,1624,1626],{"className":752,"code":1625,"language":754,"meta":755,"style":755},"{\n  \"event\": \"conversation.started\",\n  \"deliveryId\": \"d3c5a9e8-1b2c-4f5a-9b8d-1a2b3c4d5e6f\",\n  \"timestamp\": \"2026-03-10T12:00:00.000Z\",\n  \"conversation\": {\n    \"id\": \"abc-123\",\n    \"botId\": \"def-456\",\n    \"botName\": \"My Bot\",\n    \"channelType\": \"web\",\n    \"initialMessage\": \"What are your opening times?\",\n    \"createdAt\": \"2026-03-10T12:00:00.000Z\"\n  }\n}\n",[525,1627,1628,1632,1643,1653,1665,1672,1684,1696,1708,1719,1731,1741,1746],{"__ignoreMap":755},[759,1629,1630],{"class":761,"line":48},[759,1631,1152],{"class":764},[759,1633,1634,1637,1639,1641],{"class":761,"line":59},[759,1635,1636],{"class":768},"  \"event\"",[759,1638,772],{"class":764},[759,1640,1563],{"class":775},[759,1642,983],{"class":764},[759,1644,1645,1647,1649,1651],{"class":761,"line":21},[759,1646,1328],{"class":768},[759,1648,772],{"class":764},[759,1650,1333],{"class":775},[759,1652,983],{"class":764},[759,1654,1655,1658,1660,1663],{"class":761,"line":26},[759,1656,1657],{"class":768},"  \"timestamp\"",[759,1659,772],{"class":764},[759,1661,1662],{"class":775},"\"2026-03-10T12:00:00.000Z\"",[759,1664,983],{"class":764},[759,1666,1667,1670],{"class":761,"line":71},[759,1668,1669],{"class":768},"  \"conversation\"",[759,1671,1343],{"class":764},[759,1673,1674,1677,1679,1682],{"class":761,"line":31},[759,1675,1676],{"class":768},"    \"id\"",[759,1678,772],{"class":764},[759,1680,1681],{"class":775},"\"abc-123\"",[759,1683,983],{"class":764},[759,1685,1686,1689,1691,1694],{"class":761,"line":40},[759,1687,1688],{"class":768},"    \"botId\"",[759,1690,772],{"class":764},[759,1692,1693],{"class":775},"\"def-456\"",[759,1695,983],{"class":764},[759,1697,1698,1701,1703,1706],{"class":761,"line":45},[759,1699,1700],{"class":768},"    \"botName\"",[759,1702,772],{"class":764},[759,1704,1705],{"class":775},"\"My Bot\"",[759,1707,983],{"class":764},[759,1709,1710,1713,1715,1717],{"class":761,"line":88},[759,1711,1712],{"class":768},"    \"channelType\"",[759,1714,772],{"class":764},[759,1716,1611],{"class":775},[759,1718,983],{"class":764},[759,1720,1721,1724,1726,1729],{"class":761,"line":55},[759,1722,1723],{"class":768},"    \"initialMessage\"",[759,1725,772],{"class":764},[759,1727,1728],{"class":775},"\"What are your opening times?\"",[759,1730,983],{"class":764},[759,1732,1733,1736,1738],{"class":761,"line":78},[759,1734,1735],{"class":768},"    \"createdAt\"",[759,1737,772],{"class":764},[759,1739,1740],{"class":775},"\"2026-03-10T12:00:00.000Z\"\n",[759,1742,1743],{"class":761,"line":67},[759,1744,1745],{"class":764},"  }\n",[759,1747,1748],{"class":761,"line":63},[759,1749,1167],{"class":764},[488,1751,1753],{"id":1752},"conversation-escalated-webhook","Conversation escalated webhook",[328,1755,1756],{},"Fires when a user requests to speak to a human agent (via the \"Talk to a human\" function). Fires for all channels, regardless of whether our team-inbox takeover UI is enabled for the bot.",[328,1758,1759],{},[348,1760,1240],{},[342,1762,1763,1770,1774,1811],{},[345,1764,1765,1560,1767,438],{},[348,1766,1559],{},[525,1768,1769],{},"\"conversation.escalated\"",[345,1771,1772,1569],{},[348,1773,1568],{},[345,1775,1776,1257,1778],{},[348,1777,1574],{},[342,1779,1780,1784,1788,1792,1797,1805],{},[345,1781,1782,1582],{},[348,1783,1581],{},[345,1785,1786,1588],{},[348,1787,1587],{},[345,1789,1790,1295],{},[348,1791,1593],{},[345,1793,1794,1796],{},[348,1795,1607],{}," (string): the channel type.",[345,1798,1799,1560,1802,438],{},[348,1800,1801],{},"state",[525,1803,1804],{},"\"Escalated\"",[345,1806,1807,1810],{},[348,1808,1809],{},"userData"," (object): any user data collected during the conversation.",[345,1812,1813,1816],{},[348,1814,1815],{},"userEmail"," (string): the email address provided by the user.",[328,1818,1304],{},[750,1820,1822],{"className":752,"code":1821,"language":754,"meta":755,"style":755},"{\n  \"event\": \"conversation.escalated\",\n  \"deliveryId\": \"d3c5a9e8-1b2c-4f5a-9b8d-1a2b3c4d5e6f\",\n  \"timestamp\": \"2026-03-10T12:05:00.000Z\",\n  \"conversation\": {\n    \"id\": \"abc-123\",\n    \"botId\": \"def-456\",\n    \"botName\": \"My Bot\",\n    \"channelType\": \"web\",\n    \"state\": \"Escalated\",\n    \"userData\": {}\n  },\n  \"userEmail\": \"user@example.com\"\n}\n",[525,1823,1824,1828,1838,1848,1859,1865,1875,1885,1895,1905,1916,1924,1928,1938],{"__ignoreMap":755},[759,1825,1826],{"class":761,"line":48},[759,1827,1152],{"class":764},[759,1829,1830,1832,1834,1836],{"class":761,"line":59},[759,1831,1636],{"class":768},[759,1833,772],{"class":764},[759,1835,1769],{"class":775},[759,1837,983],{"class":764},[759,1839,1840,1842,1844,1846],{"class":761,"line":21},[759,1841,1328],{"class":768},[759,1843,772],{"class":764},[759,1845,1333],{"class":775},[759,1847,983],{"class":764},[759,1849,1850,1852,1854,1857],{"class":761,"line":26},[759,1851,1657],{"class":768},[759,1853,772],{"class":764},[759,1855,1856],{"class":775},"\"2026-03-10T12:05:00.000Z\"",[759,1858,983],{"class":764},[759,1860,1861,1863],{"class":761,"line":71},[759,1862,1669],{"class":768},[759,1864,1343],{"class":764},[759,1866,1867,1869,1871,1873],{"class":761,"line":31},[759,1868,1676],{"class":768},[759,1870,772],{"class":764},[759,1872,1681],{"class":775},[759,1874,983],{"class":764},[759,1876,1877,1879,1881,1883],{"class":761,"line":40},[759,1878,1688],{"class":768},[759,1880,772],{"class":764},[759,1882,1693],{"class":775},[759,1884,983],{"class":764},[759,1886,1887,1889,1891,1893],{"class":761,"line":45},[759,1888,1700],{"class":768},[759,1890,772],{"class":764},[759,1892,1705],{"class":775},[759,1894,983],{"class":764},[759,1896,1897,1899,1901,1903],{"class":761,"line":88},[759,1898,1712],{"class":768},[759,1900,772],{"class":764},[759,1902,1611],{"class":775},[759,1904,983],{"class":764},[759,1906,1907,1910,1912,1914],{"class":761,"line":55},[759,1908,1909],{"class":768},"    \"state\"",[759,1911,772],{"class":764},[759,1913,1804],{"class":775},[759,1915,983],{"class":764},[759,1917,1918,1921],{"class":761,"line":78},[759,1919,1920],{"class":768},"    \"userData\"",[759,1922,1923],{"class":764},": {}\n",[759,1925,1926],{"class":761,"line":67},[759,1927,1406],{"class":764},[759,1929,1930,1933,1935],{"class":761,"line":63},[759,1931,1932],{"class":768},"  \"userEmail\"",[759,1934,772],{"class":764},[759,1936,1937],{"class":775},"\"user@example.com\"\n",[759,1939,1940],{"class":761,"line":138},[759,1941,1167],{"class":764},[488,1943,1945],{"id":1944},"conversation-claimed-webhook","Conversation claimed webhook",[328,1947,1948],{},"Fires when an agent claims (takes over) a conversation.",[328,1950,1951],{},[348,1952,1240],{},[342,1954,1955,1962,1966,1995],{},[345,1956,1957,1560,1959,438],{},[348,1958,1559],{},[525,1960,1961],{},"\"conversation.claimed\"",[345,1963,1964,1569],{},[348,1965,1568],{},[345,1967,1968,1257,1970],{},[348,1969,1574],{},[342,1971,1972,1976,1980,1984,1988],{},[345,1973,1974,1582],{},[348,1975,1581],{},[345,1977,1978,1588],{},[348,1979,1587],{},[345,1981,1982,1295],{},[348,1983,1593],{},[345,1985,1986,1796],{},[348,1987,1607],{},[345,1989,1990,1560,1992,438],{},[348,1991,1801],{},[525,1993,1994],{},"\"Active\"",[345,1996,1997,1257,2000],{},[348,1998,1999],{},"agent",[342,2001,2002,2008],{},[345,2003,2004,2007],{},[348,2005,2006],{},"name"," (string): the agent's display name.",[345,2009,2010,2013],{},[348,2011,2012],{},"email"," (string): the agent's email address.",[328,2015,1304],{},[750,2017,2019],{"className":752,"code":2018,"language":754,"meta":755,"style":755},"{\n  \"event\": \"conversation.claimed\",\n  \"deliveryId\": \"d3c5a9e8-1b2c-4f5a-9b8d-1a2b3c4d5e6f\",\n  \"timestamp\": \"2026-03-10T12:10:00.000Z\",\n  \"conversation\": {\n    \"id\": \"abc-123\",\n    \"botId\": \"def-456\",\n    \"botName\": \"My Bot\",\n    \"channelType\": \"web\",\n    \"state\": \"Active\"\n  },\n  \"agent\": {\n    \"name\": \"Jane\",\n    \"email\": \"jane@example.com\"\n  }\n}\n",[525,2020,2021,2025,2035,2045,2056,2062,2072,2082,2092,2102,2111,2115,2122,2134,2144,2148],{"__ignoreMap":755},[759,2022,2023],{"class":761,"line":48},[759,2024,1152],{"class":764},[759,2026,2027,2029,2031,2033],{"class":761,"line":59},[759,2028,1636],{"class":768},[759,2030,772],{"class":764},[759,2032,1961],{"class":775},[759,2034,983],{"class":764},[759,2036,2037,2039,2041,2043],{"class":761,"line":21},[759,2038,1328],{"class":768},[759,2040,772],{"class":764},[759,2042,1333],{"class":775},[759,2044,983],{"class":764},[759,2046,2047,2049,2051,2054],{"class":761,"line":26},[759,2048,1657],{"class":768},[759,2050,772],{"class":764},[759,2052,2053],{"class":775},"\"2026-03-10T12:10:00.000Z\"",[759,2055,983],{"class":764},[759,2057,2058,2060],{"class":761,"line":71},[759,2059,1669],{"class":768},[759,2061,1343],{"class":764},[759,2063,2064,2066,2068,2070],{"class":761,"line":31},[759,2065,1676],{"class":768},[759,2067,772],{"class":764},[759,2069,1681],{"class":775},[759,2071,983],{"class":764},[759,2073,2074,2076,2078,2080],{"class":761,"line":40},[759,2075,1688],{"class":768},[759,2077,772],{"class":764},[759,2079,1693],{"class":775},[759,2081,983],{"class":764},[759,2083,2084,2086,2088,2090],{"class":761,"line":45},[759,2085,1700],{"class":768},[759,2087,772],{"class":764},[759,2089,1705],{"class":775},[759,2091,983],{"class":764},[759,2093,2094,2096,2098,2100],{"class":761,"line":88},[759,2095,1712],{"class":768},[759,2097,772],{"class":764},[759,2099,1611],{"class":775},[759,2101,983],{"class":764},[759,2103,2104,2106,2108],{"class":761,"line":55},[759,2105,1909],{"class":768},[759,2107,772],{"class":764},[759,2109,2110],{"class":775},"\"Active\"\n",[759,2112,2113],{"class":761,"line":78},[759,2114,1406],{"class":764},[759,2116,2117,2120],{"class":761,"line":67},[759,2118,2119],{"class":768},"  \"agent\"",[759,2121,1343],{"class":764},[759,2123,2124,2127,2129,2132],{"class":761,"line":63},[759,2125,2126],{"class":768},"    \"name\"",[759,2128,772],{"class":764},[759,2130,2131],{"class":775},"\"Jane\"",[759,2133,983],{"class":764},[759,2135,2136,2139,2141],{"class":761,"line":138},[759,2137,2138],{"class":768},"    \"email\"",[759,2140,772],{"class":764},[759,2142,2143],{"class":775},"\"jane@example.com\"\n",[759,2145,2146],{"class":761,"line":91},[759,2147,1745],{"class":764},[759,2149,2150],{"class":761,"line":95},[759,2151,1167],{"class":764},[488,2153,2155],{"id":2154},"conversation-released-webhook","Conversation released webhook",[328,2157,2158],{},"Fires when an agent hands a conversation back to the bot.",[328,2160,2161],{},[348,2162,1240],{},[342,2164,2165,2172,2176,2205],{},[345,2166,2167,1560,2169,438],{},[348,2168,1559],{},[525,2170,2171],{},"\"conversation.released\"",[345,2173,2174,1569],{},[348,2175,1568],{},[345,2177,2178,1257,2180],{},[348,2179,1574],{},[342,2181,2182,2186,2190,2194,2198],{},[345,2183,2184,1582],{},[348,2185,1581],{},[345,2187,2188,1588],{},[348,2189,1587],{},[345,2191,2192,1295],{},[348,2193,1593],{},[345,2195,2196,1796],{},[348,2197,1607],{},[345,2199,2200,1560,2202,438],{},[348,2201,1801],{},[525,2203,2204],{},"\"Resolved\"",[345,2206,2207,1257,2209],{},[348,2208,1999],{},[342,2210,2211,2215],{},[345,2212,2213,2007],{},[348,2214,2006],{},[345,2216,2217,2013],{},[348,2218,2012],{},[328,2220,1304],{},[750,2222,2224],{"className":752,"code":2223,"language":754,"meta":755,"style":755},"{\n  \"event\": \"conversation.released\",\n  \"deliveryId\": \"d3c5a9e8-1b2c-4f5a-9b8d-1a2b3c4d5e6f\",\n  \"timestamp\": \"2026-03-10T12:15:00.000Z\",\n  \"conversation\": {\n    \"id\": \"abc-123\",\n    \"botId\": \"def-456\",\n    \"botName\": \"My Bot\",\n    \"channelType\": \"web\",\n    \"state\": \"Resolved\"\n  },\n  \"agent\": {\n    \"name\": \"Jane\",\n    \"email\": \"jane@example.com\"\n  }\n}\n",[525,2225,2226,2230,2240,2250,2261,2267,2277,2287,2297,2307,2316,2320,2326,2336,2344,2348],{"__ignoreMap":755},[759,2227,2228],{"class":761,"line":48},[759,2229,1152],{"class":764},[759,2231,2232,2234,2236,2238],{"class":761,"line":59},[759,2233,1636],{"class":768},[759,2235,772],{"class":764},[759,2237,2171],{"class":775},[759,2239,983],{"class":764},[759,2241,2242,2244,2246,2248],{"class":761,"line":21},[759,2243,1328],{"class":768},[759,2245,772],{"class":764},[759,2247,1333],{"class":775},[759,2249,983],{"class":764},[759,2251,2252,2254,2256,2259],{"class":761,"line":26},[759,2253,1657],{"class":768},[759,2255,772],{"class":764},[759,2257,2258],{"class":775},"\"2026-03-10T12:15:00.000Z\"",[759,2260,983],{"class":764},[759,2262,2263,2265],{"class":761,"line":71},[759,2264,1669],{"class":768},[759,2266,1343],{"class":764},[759,2268,2269,2271,2273,2275],{"class":761,"line":31},[759,2270,1676],{"class":768},[759,2272,772],{"class":764},[759,2274,1681],{"class":775},[759,2276,983],{"class":764},[759,2278,2279,2281,2283,2285],{"class":761,"line":40},[759,2280,1688],{"class":768},[759,2282,772],{"class":764},[759,2284,1693],{"class":775},[759,2286,983],{"class":764},[759,2288,2289,2291,2293,2295],{"class":761,"line":45},[759,2290,1700],{"class":768},[759,2292,772],{"class":764},[759,2294,1705],{"class":775},[759,2296,983],{"class":764},[759,2298,2299,2301,2303,2305],{"class":761,"line":88},[759,2300,1712],{"class":768},[759,2302,772],{"class":764},[759,2304,1611],{"class":775},[759,2306,983],{"class":764},[759,2308,2309,2311,2313],{"class":761,"line":55},[759,2310,1909],{"class":768},[759,2312,772],{"class":764},[759,2314,2315],{"class":775},"\"Resolved\"\n",[759,2317,2318],{"class":761,"line":78},[759,2319,1406],{"class":764},[759,2321,2322,2324],{"class":761,"line":67},[759,2323,2119],{"class":768},[759,2325,1343],{"class":764},[759,2327,2328,2330,2332,2334],{"class":761,"line":63},[759,2329,2126],{"class":768},[759,2331,772],{"class":764},[759,2333,2131],{"class":775},[759,2335,983],{"class":764},[759,2337,2338,2340,2342],{"class":761,"line":138},[759,2339,2138],{"class":768},[759,2341,772],{"class":764},[759,2343,2143],{"class":775},[759,2345,2346],{"class":761,"line":91},[759,2347,1745],{"class":764},[759,2349,2350],{"class":761,"line":95},[759,2351,1167],{"class":764},[323,2353,664],{"id":2354},"security",[328,2356,2357,2358,2364],{},"Every outgoing webhook is signed with your secret. Verifying the signature proves the request came from ChatThing and wasn't tampered with in transit. If you don't plan to verify (for example, you're just hitting ",[661,2359,2363],{"href":2360,"rel":2361},"https:\u002F\u002Fwebhook.site",[2362],"nofollow","webhook.site"," to check it's working), you can skip this section.",[488,2366,724],{"id":2367},"request-headers",[328,2369,2370],{},"Every outgoing webhook carries these headers:",[2372,2373,2374,2387],"table",{},[2375,2376,2377],"thead",{},[2378,2379,2380,2384],"tr",{},[2381,2382,2383],"th",{},"Header",[2381,2385,2386],{},"Description",[2388,2389,2390,2401,2414,2423,2442],"tbody",{},[2378,2391,2392,2398],{},[2393,2394,2395],"td",{},[525,2396,2397],{},"X-Secret-Key",[2393,2399,2400],{},"The hook secret you configured. Retained for backwards compatibility.",[2378,2402,2403,2408],{},[2393,2404,2405],{},[525,2406,2407],{},"X-ChatThing-Signature",[2393,2409,2410,2413],{},[525,2411,2412],{},"sha256=\u003Chex>"," - HMAC-SHA256 of the exact bytes in the request body, keyed by your secret.",[2378,2415,2416,2420],{},[2393,2417,2418],{},[525,2419,1185],{},[2393,2421,2422],{},"A stable UUID that is the same across all retries of a given delivery. Use it to dedupe on your side.",[2378,2424,2425,2430],{},[2393,2426,2427],{},[525,2428,2429],{},"X-ChatThing-Event",[2393,2431,2432,2433,374,2436,374,2439,438],{},"The event name, e.g. ",[525,2434,2435],{},"conversation.started",[525,2437,2438],{},"conversation.escalated",[525,2440,2441],{},"sync.success",[2378,2443,2444,2449],{},[2393,2445,2446],{},[525,2447,2448],{},"X-ChatThing-Test",[2393,2450,2451,2452,2454,2455,2457],{},"Sent as ",[525,2453,1250],{}," when you click ",[348,2456,509],{}," in the setup UI. Absent on real events. Safe to ignore in prod.",[488,2459,2461],{"id":2460},"verifying-the-signature","Verifying the signature",[328,2463,2464,2465,2468,2469,2471],{},"Compute an HMAC-SHA256 of the exact bytes in the request body using your hook secret, hex-encode it, and prefix it with ",[525,2466,2467],{},"sha256=",". Compare that to the ",[525,2470,2407],{}," header using a constant-time comparison.",[927,2473,2474,2655],{},[750,2475,2478],{"className":963,"code":2476,"filename":2477,"language":965,"meta":755,"style":755},"import crypto from \"node:crypto\";\n\nfunction verifyChatThingSignature(rawBody, headerValue, secret) {\n  const expected =\n    \"sha256=\" +\n    crypto.createHmac(\"sha256\", secret).update(rawBody, \"utf8\").digest(\"hex\");\n  const a = Buffer.from(expected);\n  const b = Buffer.from(headerValue ?? \"\");\n  return a.length === b.length && crypto.timingSafeEqual(a, b);\n}\n","Node.js",[525,2479,2480,2496,2500,2527,2538,2546,2584,2601,2625,2651],{"__ignoreMap":755},[759,2481,2482,2484,2487,2490,2493],{"class":761,"line":48},[759,2483,1087],{"class":1086},[759,2485,2486],{"class":764}," crypto ",[759,2488,2489],{"class":1086},"from",[759,2491,2492],{"class":948}," \"node:crypto\"",[759,2494,2495],{"class":764},";\n",[759,2497,2498],{"class":761,"line":59},[759,2499,1096],{"emptyLinePlaceholder":1095},[759,2501,2502,2505,2508,2511,2514,2516,2519,2521,2524],{"class":761,"line":21},[759,2503,2504],{"class":768},"function",[759,2506,2507],{"class":941}," verifyChatThingSignature",[759,2509,2510],{"class":764},"(",[759,2512,2513],{"class":1012},"rawBody",[759,2515,374],{"class":764},[759,2517,2518],{"class":1012},"headerValue",[759,2520,374],{"class":764},[759,2522,2523],{"class":1012},"secret",[759,2525,2526],{"class":764},") {\n",[759,2528,2529,2532,2535],{"class":761,"line":26},[759,2530,2531],{"class":768},"  const",[759,2533,2534],{"class":764}," expected ",[759,2536,2537],{"class":1086},"=\n",[759,2539,2540,2543],{"class":761,"line":71},[759,2541,2542],{"class":948},"    \"sha256=\"",[759,2544,2545],{"class":1086}," +\n",[759,2547,2548,2551,2554,2556,2559,2562,2565,2568,2571,2573,2576,2578,2581],{"class":761,"line":31},[759,2549,2550],{"class":764},"    crypto.",[759,2552,2553],{"class":941},"createHmac",[759,2555,2510],{"class":764},[759,2557,2558],{"class":948},"\"sha256\"",[759,2560,2561],{"class":764},", secret).",[759,2563,2564],{"class":941},"update",[759,2566,2567],{"class":764},"(rawBody, ",[759,2569,2570],{"class":948},"\"utf8\"",[759,2572,665],{"class":764},[759,2574,2575],{"class":941},"digest",[759,2577,2510],{"class":764},[759,2579,2580],{"class":948},"\"hex\"",[759,2582,2583],{"class":764},");\n",[759,2585,2586,2588,2591,2593,2596,2598],{"class":761,"line":40},[759,2587,2531],{"class":768},[759,2589,2590],{"class":764}," a ",[759,2592,1104],{"class":1086},[759,2594,2595],{"class":764}," Buffer.",[759,2597,2489],{"class":941},[759,2599,2600],{"class":764},"(expected);\n",[759,2602,2603,2605,2608,2610,2612,2614,2617,2620,2623],{"class":761,"line":45},[759,2604,2531],{"class":768},[759,2606,2607],{"class":764}," b ",[759,2609,1104],{"class":1086},[759,2611,2595],{"class":764},[759,2613,2489],{"class":941},[759,2615,2616],{"class":764},"(headerValue ",[759,2618,2619],{"class":1086},"??",[759,2621,2622],{"class":948}," \"\"",[759,2624,2583],{"class":764},[759,2626,2627,2630,2633,2636,2639,2642,2645,2648],{"class":761,"line":88},[759,2628,2629],{"class":1086},"  return",[759,2631,2632],{"class":764}," a.length ",[759,2634,2635],{"class":1086},"===",[759,2637,2638],{"class":764}," b.length ",[759,2640,2641],{"class":1086},"&&",[759,2643,2644],{"class":764}," crypto.",[759,2646,2647],{"class":941},"timingSafeEqual",[759,2649,2650],{"class":764},"(a, b);\n",[759,2652,2653],{"class":761,"line":55},[759,2654,1167],{"class":764},[750,2656,2659],{"className":1077,"code":2657,"filename":2658,"language":1079,"meta":755,"style":755},"import hmac\nimport hashlib\n\ndef verify_chatthing_signature(raw_body: bytes, header_value: str, secret: str) -> bool:\n    expected = \"sha256=\" + hmac.new(\n        secret.encode(\"utf-8\"), raw_body, hashlib.sha256\n    ).hexdigest()\n    return hmac.compare_digest(expected, header_value or \"\")\n","Python",[525,2660,2661,2668,2675,2679,2724,2740,2751,2756],{"__ignoreMap":755},[759,2662,2663,2665],{"class":761,"line":48},[759,2664,1087],{"class":1086},[759,2666,2667],{"class":764}," hmac\n",[759,2669,2670,2672],{"class":761,"line":59},[759,2671,1087],{"class":1086},[759,2673,2674],{"class":764}," hashlib\n",[759,2676,2677],{"class":761,"line":21},[759,2678,1096],{"emptyLinePlaceholder":1095},[759,2680,2681,2684,2687,2689,2692,2694,2697,2699,2702,2704,2707,2709,2711,2713,2715,2718,2721],{"class":761,"line":26},[759,2682,2683],{"class":768},"def",[759,2685,2686],{"class":941}," verify_chatthing_signature",[759,2688,2510],{"class":764},[759,2690,2691],{"class":1012},"raw_body",[759,2693,772],{"class":764},[759,2695,2696],{"class":768},"bytes",[759,2698,374],{"class":764},[759,2700,2701],{"class":1012},"header_value",[759,2703,772],{"class":764},[759,2705,2706],{"class":768},"str",[759,2708,374],{"class":764},[759,2710,2523],{"class":1012},[759,2712,772],{"class":764},[759,2714,2706],{"class":768},[759,2716,2717],{"class":764},") -> ",[759,2719,2720],{"class":768},"bool",[759,2722,2723],{"class":764},":\n",[759,2725,2726,2729,2731,2734,2737],{"class":761,"line":71},[759,2727,2728],{"class":764},"    expected ",[759,2730,1104],{"class":1086},[759,2732,2733],{"class":948}," \"sha256=\"",[759,2735,2736],{"class":1086}," +",[759,2738,2739],{"class":764}," hmac.new(\n",[759,2741,2742,2745,2748],{"class":761,"line":31},[759,2743,2744],{"class":764},"        secret.encode(",[759,2746,2747],{"class":948},"\"utf-8\"",[759,2749,2750],{"class":764},"), raw_body, hashlib.sha256\n",[759,2752,2753],{"class":761,"line":40},[759,2754,2755],{"class":764},"    ).hexdigest()\n",[759,2757,2758,2761,2764,2767,2769],{"class":761,"line":45},[759,2759,2760],{"class":1086},"    return",[759,2762,2763],{"class":764}," hmac.compare_digest(expected, header_value ",[759,2765,2766],{"class":1086},"or",[759,2768,2622],{"class":948},[759,2770,998],{"class":764},[328,2772,2773,2774,2777],{},"Verify against the ",[348,2775,2776],{},"raw"," request body - parsing the body to JSON and re-serialising will change the bytes and invalidate the signature.",[488,2779,2781],{"id":2780},"retries-and-timeouts","Retries and timeouts",[328,2783,2784],{},"If your receiver is briefly unavailable, ChatThing retries delivery automatically:",[342,2786,2787,2794,2800],{},[345,2788,2789,2790,2793],{},"Up to ",[348,2791,2792],{},"5 attempts"," with exponential backoff (~30s → 1m → 2m → 4m → 8m).",[345,2795,2796,2797,2799],{},"A retry reuses the same ",[525,2798,1185],{},", so receivers that dedupe on the id will not double-process an event.",[345,2801,2802],{},"Requests time out after 10 seconds. A non-responsive receiver does not pin a worker.",[328,2804,2805,2806,2809],{},"Responses with a 3xx status are ",[348,2807,2808],{},"not followed"," - configure your webhook to point at the final URL directly.",[323,2811,2813],{"id":2812},"troubleshooting-tips","Troubleshooting & tips",[328,2815,2816,2819,2820,2822,2823,2825],{},[348,2817,2818],{},"My webhook isn't firing."," Double-check the ",[348,2821,450],{}," toggle on the webhook card or settings page. Disabled outgoing webhooks won't send live events (but the ",[348,2824,509],{}," button still works).",[328,2827,2828,2834,2835,2837],{},[348,2829,2830,2831,2833],{},"My receiver is getting ",[525,2832,804],{}," literally."," That means the placeholder didn't resolve at delivery time - usually a typo in the path. Pick variables from the sidebar rather than typing them, and watch the ",[348,2836,509],{}," result for the \"unresolved template tokens\" warning.",[328,2839,2840,645,2843,2846,2847,2849],{},[348,2841,2842],{},"I just want to smoke-test a webhook.",[661,2844,2363],{"href":2360,"rel":2845},[2362]," is a free receiver that gives you a one-off URL and shows every request it receives. Point an outgoing webhook at it, hit ",[348,2848,509],{},", and you'll see exactly what your server would get.",[323,2851,2853],{"id":2852},"need-something-else","Need something else?",[328,2855,2856,2857],{},"We're always looking to improve ChatThing, so if you need a webhook which isn't described above please email us: ",[661,2858,2860],{"href":2859},"mailto:support@chatthing.ai","support@chatthing.ai",[2862,2863,2864],"style",{},"html pre.shiki code .sHkqI, html code.shiki .sHkqI{--shiki-default:#A6E22E}html pre.shiki code .sCdxs, html code.shiki .sCdxs{--shiki-default:#F8F8F2}html pre.shiki code .s_Ekj, html code.shiki .s_Ekj{--shiki-default:#E6DB74}html pre.shiki code .sW0Xf, html code.shiki .sW0Xf{--shiki-default:#FD971F;--shiki-default-font-style:italic}html pre.shiki code .sOx1s, html code.shiki .sOx1s{--shiki-default:#66D9EF;--shiki-default-font-style:italic}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s8I7P, html code.shiki .s8I7P{--shiki-default:#F92672}html pre.shiki code .susgL, html code.shiki .susgL{--shiki-default:#CFCFC2}html pre.shiki code .s7s5_, html code.shiki .s7s5_{--shiki-default:#AE81FF}html pre.shiki code .sYf5A, html code.shiki .sYf5A{--shiki-default:#66D9EF}",{"title":755,"searchDepth":59,"depth":59,"links":2866},[2867,2868,2869,2870,2876,2882,2888,2898,2903,2904],{"id":325,"depth":59,"text":326},{"id":336,"depth":59,"text":337},{"id":397,"depth":59,"text":398},{"id":479,"depth":59,"text":480,"children":2871},[2872,2873,2874,2875],{"id":490,"depth":21,"text":491},{"id":519,"depth":21,"text":520},{"id":541,"depth":21,"text":542},{"id":558,"depth":21,"text":559},{"id":599,"depth":59,"text":600,"children":2877},[2878,2879,2880,2881],{"id":621,"depth":21,"text":606},{"id":656,"depth":21,"text":609},{"id":682,"depth":21,"text":613},{"id":832,"depth":21,"text":617},{"id":861,"depth":59,"text":862,"children":2883},[2884,2885,2886,2887],{"id":871,"depth":21,"text":872},{"id":881,"depth":21,"text":609},{"id":887,"depth":21,"text":888},{"id":916,"depth":21,"text":917},{"id":1170,"depth":59,"text":689,"children":2889},[2890,2891,2892,2893,2894,2895,2896,2897],{"id":1189,"depth":21,"text":423},{"id":1231,"depth":21,"text":1232},{"id":1435,"depth":21,"text":1436},{"id":1534,"depth":21,"text":1535},{"id":1544,"depth":21,"text":1545},{"id":1752,"depth":21,"text":1753},{"id":1944,"depth":21,"text":1945},{"id":2154,"depth":21,"text":2155},{"id":2354,"depth":59,"text":664,"children":2899},[2900,2901,2902],{"id":2367,"depth":21,"text":724},{"id":2460,"depth":21,"text":2461},{"id":2780,"depth":21,"text":2781},{"id":2812,"depth":59,"text":2813},{"id":2852,"depth":59,"text":2853},"Enable seamless integration between different platforms by sending data instantly when a specific event occurs.","md",null,{"prevPage":65,"nextPage":73},"\u002Fdocs\u002Fbots\u002Fwebhooks",{"title":68,"description":2905},"docs\u002Fbots\u002Fwebhooks","r-KDQuPUwICxlhxAE5tmQmqY_KgO6nsyWt3C5bbqngg",{"id":2914,"title":47,"body":2915,"description":755,"extension":2906,"longTitle":2907,"meta":2922,"navigation":1095,"path":2923,"position":48,"seo":2924,"stem":2925,"__hash__":2926},"docs\u002Fdocs\u002Fbots\u002F_index.md",{"type":320,"value":2916,"toc":2920},[2917],[2918,2919,47],"h1",{"id":53},{"title":755,"searchDepth":59,"depth":59,"links":2921},[],{},"\u002Fdocs\u002Fbots\u002F_index",{"title":47,"description":755},"docs\u002Fbots\u002F_index","LInSds9dB2V3BPa4s2Zj6NtChX_0uTxLY942NyFy688",{"prev":2928,"next":2929},{"title":64,"slug":65,"position":21,"directory":53},{"title":72,"slug":73,"position":71,"directory":53},1780738924887]