[{"data":1,"prerenderedAt":73},["ShallowReactive",2],{"pseo:glossary:webhook":3,"highlight:glossary:webhook":67},{"definition":4,"explanation":5,"in_wapito":6,"official_note":9,"question":10,"related":11,"related_operations":34,"seo":51,"slug":65,"term":59,"tier":66,"updated":63,"url":60},"A webhook is an HTTP callback: instead of your code asking the API whether anything happened, the API posts the event to a URL you registered. Wapito uses webhooks for every inbound message, delivery receipt, group change, poll vote and session state change.","Polling does not work for WhatsApp. Messages arrive whenever someone types, and a poll loop is either too slow to be useful or so frequent that it burns your request allowance for nothing. A webhook flips the direction: you register an HTTPS endpoint, choose which events you want by exact name or by prefix, and Wapito delivers each one as a JSON body with a signature header. Three rules make a receiver reliable. Verify the signature against the raw bytes of the body before parsing, because any re-serialisation changes the hash and the check will fail for the wrong reason. Answer quickly with a 2xx and do the real work in a queue, because a slow endpoint is retried and a retried delivery becomes a duplicate. And make handlers idempotent by keying on the delivery id, since at-least-once delivery means you will eventually see the same event twice. Register several endpoints if different systems need different events; each one has its own filter and its own secret.",{"example":7,"field":8},"{\"event\": \"messages\", \"channel_id\": \"ch_123\", \"data\": {\"id\": \"true_441234567890@c.us_3EB0\"}}","X-Wapito-Signature","The Cloud API also delivers webhooks, verified with its own signature header, but only for the conversations and templates it manages - there are no group, community or status events to subscribe to.","What is a webhook?",{"features":12,"hub":13,"operations":14,"terms":24},[],"\u002Fglossary\u002F",[15,18,21],{"title":16,"url":17},"POST \u002Fwebhooks","\u002Fdocs\u002Fapi\u002Fwebhooks\u002Fcreate-webhook\u002F",{"title":19,"url":20},"POST \u002Fwebhooks\u002F{id}\u002Ftest","\u002Fdocs\u002Fapi\u002Fwebhooks\u002Ftest-webhook\u002F",{"title":22,"url":23},"GET \u002Fwebhooks","\u002Fdocs\u002Fapi\u002Fwebhooks\u002Flist-webhooks\u002F",[25,28,31],{"title":26,"url":27},"ACK","\u002Fglossary\u002Fack\u002F",{"title":29,"url":30},"Channel","\u002Fglossary\u002Fchannel\u002F",{"title":32,"url":33},"Presence","\u002Fglossary\u002Fpresence\u002F",[35,43,47],{"availability":36,"ban_risk":37,"method":38,"operationId":39,"path":40,"summary":41,"tag":42,"url":17},"ga","low","POST","createWebhook","\u002Fwebhooks","Create a webhook","webhooks",{"availability":36,"ban_risk":37,"method":38,"operationId":44,"path":45,"summary":46,"tag":42,"url":20},"testWebhook","\u002Fwebhooks\u002F{id}\u002Ftest","Send a test delivery",{"availability":36,"ban_risk":37,"method":48,"operationId":49,"path":40,"summary":50,"tag":42,"url":23},"GET","listWebhooks","List webhooks",{"breadcrumb":52,"canonical":61,"description":62,"h1":10,"lastmod":63,"title":64},[53,56,58],{"name":54,"url":55},"Home","\u002F",{"name":57,"url":13},"Glossary",{"name":59,"url":60},"Webhook","\u002Fglossary\u002Fwebhook\u002F","https:\u002F\u002Fwapito.com\u002Fglossary\u002Fwebhook\u002F","A webhook is an HTTP callback: instead of your code asking the API whether anything happened, the API posts the event to a URL you registered.","2026-09-15","What is a webhook? | Wapito Glossary","webhook","t9",[68],{"label":69,"id":70,"lang":70,"code":71,"html":72},"JSON","json","{\n  \"event\": \"messages\",\n  \"channel_id\": \"ch_123\",\n  \"data\": {\n    \"id\": \"true_441234567890@c.us_3EB0\"\n  }\n}","\u003Cpre class=\"shiki shiki-themes github-light-default github-dark-default\" style=\"background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#116329;--shiki-dark:#7EE787\">  \"event\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"messages\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#116329;--shiki-dark:#7EE787\">  \"channel_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"ch_123\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#116329;--shiki-dark:#7EE787\">  \"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#116329;--shiki-dark:#7EE787\">    \"id\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"true_441234567890@c.us_3EB0\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">  }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1790464916343]