[{"data":1,"prerenderedAt":380},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fwebhooks":3,"docs-section-null":379},{"id":4,"title":5,"body":6,"description":368,"extension":369,"meta":370,"navigation":371,"order":372,"path":373,"section":372,"seo":374,"stem":377,"__hash__":378},"docs\u002Fdocs\u002Fwebhooks\u002Findex.md","Webhooks",{"type":7,"value":8,"toc":361},"minimark",[9,13,21,26,66,70,77,194,259,266,270,276,282,286,293,297,349,357],[10,11,12],"p",{},"A webhook is an address of yours that hears about things as they happen: a new message from a form, someone joining your email list, a booking, a paid order. Use it to put them in a spreadsheet, a chat channel, a CRM or a tool like Zapier or Make, without anyone typing them in again.",[10,14,15,16,20],{},"Webhooks come with the Business plan. Owners make them in ",[17,18,19],"strong",{},"Dashboard › Webhooks",", up to 5 for each business.",[22,23,25],"h2",{"id":24},"make-one","Make one",[27,28,29,40,48,55],"ol",{},[30,31,32,33,35,36,39],"li",{},"Open ",[17,34,5],{}," in your dashboard and press ",[17,37,38],{},"Add a webhook",".",[30,41,42,43,47],{},"Paste the address (it must start with ",[44,45,46],"code",{},"https:\u002F\u002F"," and be reachable from the internet), and tick what it should hear about.",[30,49,50,51,54],{},"Copy the ",[17,52,53],{},"signing secret"," it shows. It's shown once, and we only keep it sealed, so save it where your receiving tool can read it.",[30,56,57,58,61,62,65],{},"Press ",[17,59,60],{},"Send a test",". Your address gets a ",[44,63,64],{},"webhook.test"," event, and the page says what it answered.",[22,67,69],{"id":68},"what-a-request-looks-like","What a request looks like",[10,71,72,73,76],{},"Every request is a ",[44,74,75],{},"POST"," with a JSON body that describes one event:",[78,79,84],"pre",{"className":80,"code":81,"language":82,"meta":83,"style":83},"language-json shiki shiki-themes github-light github-dark","{\n  \"id\": \"6f1c2c54-2b8e-4a3c-9a39-5d0e0c5b2a11\",\n  \"type\": \"lead.created\",\n  \"created\": \"2026-11-02T14:05:00.000Z\",\n  \"business\": { \"id\": \"ckx1...\", \"name\": \"Clay Co\" },\n  \"data\": { \"...\": \"the event's own fields\" }\n}\n","json","",[44,85,86,95,112,125,138,169,188],{"__ignoreMap":83},[87,88,91],"span",{"class":89,"line":90},"line",1,[87,92,94],{"class":93},"sVt8B","{\n",[87,96,98,102,105,109],{"class":89,"line":97},2,[87,99,101],{"class":100},"sj4cs","  \"id\"",[87,103,104],{"class":93},": ",[87,106,108],{"class":107},"sZZnC","\"6f1c2c54-2b8e-4a3c-9a39-5d0e0c5b2a11\"",[87,110,111],{"class":93},",\n",[87,113,115,118,120,123],{"class":89,"line":114},3,[87,116,117],{"class":100},"  \"type\"",[87,119,104],{"class":93},[87,121,122],{"class":107},"\"lead.created\"",[87,124,111],{"class":93},[87,126,128,131,133,136],{"class":89,"line":127},4,[87,129,130],{"class":100},"  \"created\"",[87,132,104],{"class":93},[87,134,135],{"class":107},"\"2026-11-02T14:05:00.000Z\"",[87,137,111],{"class":93},[87,139,141,144,147,150,152,155,158,161,163,166],{"class":89,"line":140},5,[87,142,143],{"class":100},"  \"business\"",[87,145,146],{"class":93},": { ",[87,148,149],{"class":100},"\"id\"",[87,151,104],{"class":93},[87,153,154],{"class":107},"\"ckx1...\"",[87,156,157],{"class":93},", ",[87,159,160],{"class":100},"\"name\"",[87,162,104],{"class":93},[87,164,165],{"class":107},"\"Clay Co\"",[87,167,168],{"class":93}," },\n",[87,170,172,175,177,180,182,185],{"class":89,"line":171},6,[87,173,174],{"class":100},"  \"data\"",[87,176,146],{"class":93},[87,178,179],{"class":100},"\"...\"",[87,181,104],{"class":93},[87,183,184],{"class":107},"\"the event's own fields\"",[87,186,187],{"class":93}," }\n",[87,189,191],{"class":89,"line":190},7,[87,192,193],{"class":93},"}\n",[195,196,197,210],"table",{},[198,199,200],"thead",{},[201,202,203,207],"tr",{},[204,205,206],"th",{},"Header",[204,208,209],{},"What it holds",[211,212,213,232,246],"tbody",{},[201,214,215,221],{},[216,217,218],"td",{},[44,219,220],{},"Webhook-Signature",[216,222,223,226,227,39],{},[44,224,225],{},"t=\u003Cunix seconds>,v1=\u003Csignature>",". See ",[228,229,231],"a",{"href":230},"\u002Fdocs\u002Fwebhooks\u002Fsignatures","Check the signature",[201,233,234,239],{},[216,235,236],{},[44,237,238],{},"Webhook-Id",[216,240,241,242,245],{},"The same as ",[44,243,244],{},"id"," in the body. It stays the same on every try, so you can ignore one you've already handled.",[201,247,248,253],{},[216,249,250],{},[44,251,252],{},"Webhook-Event",[216,254,241,255,258],{},[44,256,257],{},"type"," in the body.",[10,260,261,262,265],{},"Answer with any ",[44,263,264],{},"2xx"," status as soon as you've received it, and do the real work afterward. Anything else, a redirect included, counts as a failure. We don't follow redirects.",[22,267,269],{"id":268},"if-your-address-is-down","If your address is down",[10,271,272,273,275],{},"We try again at growing gaps (1 minute, 5 minutes, 30 minutes, 2 hours, then 6 hours), and give up on an event after 6 tries. After 20 failures in a row, across events, we stop sending to that address and email the business's owners. Nothing is sent while it's stopped, and events from that time aren't sent later. Turn it back on in ",[17,274,5],{}," once it's working.",[10,277,278,279,281],{},"A request can arrive more than once, for example when your address answered after we stopped waiting (5 seconds). Use ",[44,280,238],{}," to ignore a repeat.",[22,283,285],{"id":284},"what-we-keep","What we keep",[10,287,288,289,292],{},"We keep what we sent for 30 days, so you can see ",[17,290,291],{},"Recent deliveries",", and then delete it. Each one holds people's names and contact details, so it's sent only where an owner chose to send it.",[22,294,296],{"id":295},"limits","Limits",[195,298,299,307],{},[198,300,301],{},[201,302,303,305],{},[204,304],{},[204,306],{},[211,308,309,317,325,333,341],{},[201,310,311,314],{},[216,312,313],{},"Webhooks for one business",[216,315,316],{},"5",[201,318,319,322],{},[216,320,321],{},"We wait for an answer",[216,323,324],{},"5 seconds",[201,326,327,330],{},[216,328,329],{},"Tries for one event",[216,331,332],{},"6",[201,334,335,338],{},[216,336,337],{},"Failures in a row before it's stopped",[216,339,340],{},"20",[201,342,343,346],{},[216,344,345],{},"How long what we sent is kept",[216,347,348],{},"30 days",[10,350,351,352,356],{},"Read ",[228,353,355],{"href":354},"\u002Fdocs\u002Fwebhooks\u002Fevents","Events"," for what each one carries.",[358,359,360],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":83,"searchDepth":97,"depth":97,"links":362},[363,364,365,366,367],{"id":24,"depth":97,"text":25},{"id":68,"depth":97,"text":69},{"id":268,"depth":97,"text":269},{"id":284,"depth":97,"text":285},{"id":295,"depth":97,"text":296},"[object Object]","md",{},true,null,"\u002Fdocs\u002Fwebhooks",{"title":5,"description":375},{"Send what happens in your business to your own address":376,"section":5,"order":90},"new messages, subscribers, bookings and orders.","docs\u002Fwebhooks\u002Findex","sdPSVrbH7kzkxwF6VWkRdmVSsuZrEJYUGwWgutlQVQw",[],1793740287602]