[{"data":1,"prerenderedAt":272},["ShallowReactive",2],{"navigation_docs":3,"-webhooks-overview":104,"-webhooks-overview-surround":267},[4,26,32,45,70,87],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Getting Started","\u002Fgetting-started","1.getting-started",[9,13,17,21],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F2.authentication",{"title":18,"path":19,"stem":20},"Campaign setup","\u002Fgetting-started\u002Fcampaigns","1.getting-started\u002F3.campaigns",{"title":22,"path":23,"stem":24},"AI agent skills","\u002Fgetting-started\u002Fai-agent-skills","1.getting-started\u002F4.ai-agent-skills",false,{"title":27,"path":28,"stem":29,"children":30},"Templates","\u002Ftemplates","2.templates\u002Findex",[31],{"title":27,"path":28,"stem":29},{"title":33,"path":34,"stem":35,"children":36,"page":25},"Campaigns","\u002Fcampaigns","3.campaigns",[37,41],{"title":38,"path":39,"stem":40},"Create campaign","\u002Fcampaigns\u002Fcreate-campaign","3.campaigns\u002F1.create-campaign",{"title":42,"path":43,"stem":44},"Fetch campaign","\u002Fcampaigns\u002Ffetch-campaign","3.campaigns\u002F2.fetch-campaign",{"title":46,"path":47,"stem":48,"children":49,"page":25},"Recipients","\u002Frecipients","4.recipients",[50,54,58,62,66],{"title":51,"path":52,"stem":53},"Create recipients","\u002Frecipients\u002Fcreate-recipients","4.recipients\u002F1.create-recipients",{"title":55,"path":56,"stem":57},"Fetch recipient","\u002Frecipients\u002Ffetch-recipient","4.recipients\u002F2.fetch-recipient",{"title":59,"path":60,"stem":61},"Fetch recipient preview","\u002Frecipients\u002Ffetch-recipient-preview","4.recipients\u002F3.fetch-recipient-preview",{"title":63,"path":64,"stem":65},"Create HTML recipient","\u002Frecipients\u002Fcreate-html-recipient","4.recipients\u002F4.create-html-recipient",{"title":67,"path":68,"stem":69},"PNG API","\u002Frecipients\u002Fpng-api","4.recipients\u002F5.png-api",{"title":71,"path":72,"stem":73,"children":74,"page":25},"Partner Workflows","\u002Fpartner-workflows","5.partner-workflows",[75,79,83],{"title":76,"path":77,"stem":78},"Create partner team","\u002Fpartner-workflows\u002Fcreate-partner-team","5.partner-workflows\u002F1.create-partner-team",{"title":80,"path":81,"stem":82},"Account status","\u002Fpartner-workflows\u002Faccount-status","5.partner-workflows\u002F2.account-status",{"title":84,"path":85,"stem":86},"Checkout recipients","\u002Fpartner-workflows\u002Fcheckout-recipients","5.partner-workflows\u002F3.checkout-recipients",{"title":88,"path":89,"stem":90,"children":91,"page":25},"Webhooks","\u002Fwebhooks","6.webhooks",[92,96,100],{"title":93,"path":94,"stem":95},"Overview","\u002Fwebhooks\u002Foverview","6.webhooks\u002F0.overview",{"title":97,"path":98,"stem":99},"Manage subscriptions","\u002Fwebhooks\u002Fmanage-subscriptions","6.webhooks\u002F1.manage-subscriptions",{"title":101,"path":102,"stem":103},"QR scan events","\u002Fwebhooks\u002Fqr-code-scans","6.webhooks\u002F2.qr-code-scans",{"id":105,"title":93,"body":106,"description":260,"extension":261,"links":262,"meta":263,"navigation":264,"path":94,"seo":265,"stem":95,"__hash__":266},"docs\u002F6.webhooks\u002F0.overview.md",{"type":107,"value":108,"toc":252},"minimark",[109,113,116,147,158,163,185,188,192,228,232,235,239],[110,111,112],"p",{},"Use webhooks when your integration needs to react to Scribeless events without polling the API.",[110,114,115],{},"Scribeless currently supports one webhook event:",[117,118,119,132],"table",{},[120,121,122],"thead",{},[123,124,125,129],"tr",{},[126,127,128],"th",{},"Event",[126,130,131],{},"When it fires",[133,134,135],"tbody",{},[123,136,137,144],{},[138,139,140],"td",{},[141,142,143],"code",{},"qr_code.scanned",[138,145,146],{},"After Scribeless records a scan for a generated Smart QR code.",[110,148,149,150,153,154,157],{},"Webhook management endpoints use the same ",[141,151,152],{},"X-API-Key"," authentication as the rest of the Scribeless API. Webhook deliveries are sent as signed HTTPS ",[141,155,156],{},"POST"," requests to the URL you subscribe.",[159,160,162],"h2",{"id":161},"how-it-works","How it works",[164,165,166,173,176,179,182],"ol",{},[167,168,169,170,172],"li",{},"Create a webhook subscription for ",[141,171,143],{},".",[167,174,175],{},"Store the signing secret returned by Scribeless.",[167,177,178],{},"Add Smart QR placeholders to your HTML recipient or template.",[167,180,181],{},"Verify incoming webhook signatures with the raw request body.",[167,183,184],{},"Process each event idempotently.",[110,186,187],{},"The person scanning the QR code is redirected to the QR destination even if webhook delivery fails.",[159,189,191],{"id":190},"pages","Pages",[117,193,194,204],{},[120,195,196],{},[123,197,198,201],{},[126,199,200],{},"Page",[126,202,203],{},"Use it for",[133,205,206,216],{},[123,207,208,213],{},[138,209,210],{},[211,212,97],"a",{"href":98},[138,214,215],{},"Create, list, pause, update, and delete webhook subscriptions.",[123,217,218,222],{},[138,219,220],{},[211,221,101],{"href":102},[138,223,224,225,227],{},"Understand the ",[141,226,143],{}," payload, delivery headers, and signature verification.",[159,229,231],{"id":230},"url-requirements","URL requirements",[110,233,234],{},"Webhook URLs must use HTTPS and resolve to a public IP address. Localhost, private network, and link-local addresses are rejected.",[159,236,238],{"id":237},"related-docs","Related docs",[240,241,242,246],"ul",{},[167,243,244],{},[211,245,63],{"href":64},[167,247,248],{},[211,249,251],{"href":250},"\u002Frecipients\u002Fcreate-html-recipient#smart-qr-placeholders","Smart QR placeholders",{"title":253,"searchDepth":254,"depth":254,"links":255},"",2,[256,257,258,259],{"id":161,"depth":254,"text":162},{"id":190,"depth":254,"text":191},{"id":230,"depth":254,"text":231},{"id":237,"depth":254,"text":238},"Receive signed Scribeless events in your own systems.","md",null,{},true,{"title":93,"description":260},"kwz6ctwV8eWq7o7uGVSaDgDZO9z8624Wu57LIGd-6yQ",[268,270],{"title":84,"path":85,"stem":86,"description":269,"children":-1},"Complete checkout for approved partner one-time campaign recipients.",{"title":97,"path":98,"stem":99,"description":271,"children":-1},"Create and manage Scribeless webhook subscriptions.",1780671949414]