[{"data":1,"prerenderedAt":370},["ShallowReactive",2],{"content-query-rird78k8c1":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"layout":10,"cover":11,"body":12,"_type":363,"_id":364,"_source":365,"_file":366,"_stem":367,"_extension":368,"sitemap":369},"/features/webhook-logs","features",false,"","Webhook Logs & Delivery Monitoring","See every webhook delivery, latency and failure in one place. Webhook Relay logs each event with its status and response, and lets you retry any delivery.","feature","/images/bucket_health.png",{"type":13,"children":14,"toc":350},"root",[15,26,38,45,50,55,61,66,101,108,127,133,140,145,151,159,173,179,214,220,271,277,335],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":16,"tag":21,"props":22,"children":25},"img",{"alt":23,"src":24},"Account-wide webhook delivery health — requests, delivery rate, retries and latency per bucket","/images/account_delivery_health.png",[],{"type":16,"tag":17,"props":27,"children":28},{},[29,36],{"type":16,"tag":30,"props":31,"children":32},"strong",{},[33],{"type":34,"value":35},"text","You can't fix what you can't see.",{"type":34,"value":37}," Most webhook setups are a black box: an event either lands or it doesn't, and when something breaks you're left grepping application logs hoping the payload was written down somewhere. Webhook Relay records every delivery — request, response, status, latency and retry history — so the answer to \"did that webhook arrive, and if not, why?\" is always one click away.",{"type":16,"tag":39,"props":40,"children":42},"h2",{"id":41},"the-problem-webhooks-fail-silently",[43],{"type":34,"value":44},"The problem: webhooks fail silently",{"type":16,"tag":17,"props":46,"children":47},{},[48],{"type":34,"value":49},"A webhook that never arrives leaves no trace on your side. The sender thinks it delivered, your service never saw it, and nobody notices until a customer asks where their order confirmation went. Even when you do log incoming requests, you're missing half the story — the response your endpoint returned, how long it took, how many times it was retried, and whether the failure was a one-off blip or a bucket that's been failing all week.",{"type":16,"tag":17,"props":51,"children":52},{},[53],{"type":34,"value":54},"Building that visibility yourself means shipping structured logs, a metrics pipeline, dashboards and alerting — a project in its own right, just to answer basic questions about your own traffic.",{"type":16,"tag":39,"props":56,"children":58},{"id":57},"the-solution-every-delivery-logged-and-searchable",[59],{"type":34,"value":60},"The solution: every delivery, logged and searchable",{"type":16,"tag":17,"props":62,"children":63},{},[64],{"type":34,"value":65},"Webhook Relay captures every request the moment it arrives and every delivery attempt that follows. Nothing is a black box:",{"type":16,"tag":67,"props":68,"children":69},"ul",{},[70,81,91],{"type":16,"tag":71,"props":72,"children":73},"li",{},[74,79],{"type":16,"tag":30,"props":75,"children":76},{},[77],{"type":34,"value":78},"What was sent",{"type":34,"value":80}," — method, path, headers and full body.",{"type":16,"tag":71,"props":82,"children":83},{},[84,89],{"type":16,"tag":30,"props":85,"children":86},{},[87],{"type":34,"value":88},"What came back",{"type":34,"value":90}," — your endpoint's status code, response headers and body.",{"type":16,"tag":71,"props":92,"children":93},{},[94,99],{"type":16,"tag":30,"props":95,"children":96},{},[97],{"type":34,"value":98},"How it went",{"type":34,"value":100}," — delivered, retrying or failed, with latency and the number of attempts.",{"type":16,"tag":102,"props":103,"children":105},"h3",{"id":104},"account-wide-delivery-health",[106],{"type":34,"value":107},"Account-wide delivery health",{"type":16,"tag":17,"props":109,"children":110},{},[111,113,118,120,125],{"type":34,"value":112},"The ",{"type":16,"tag":30,"props":114,"children":115},{},[116],{"type":34,"value":117},"Usage",{"type":34,"value":119}," view rolls every bucket up into one picture: total requests, deliveries, overall success rate, and a per-bucket breakdown of requests, success rate, failures, retries and average latency. Buckets are ranked by failures, so the ones that need attention surface at the top — and a ",{"type":16,"tag":30,"props":121,"children":122},{},[123],{"type":34,"value":124},"failures-over-time",{"type":34,"value":126}," sparkline shows whether a problem is new or ongoing. Switch the window between 7 days, 30 days, 6 months and 12 months.",{"type":16,"tag":102,"props":128,"children":130},{"id":129},"per-bucket-monitoring",[131],{"type":34,"value":132},"Per-bucket monitoring",{"type":16,"tag":17,"props":134,"children":135},{},[136],{"type":16,"tag":21,"props":137,"children":139},{"alt":138,"src":11},"Per-bucket delivery rate, average latency and the full request log with status and response codes",[],{"type":16,"tag":17,"props":141,"children":142},{},[143],{"type":34,"value":144},"Open any bucket to see its delivery rate, average latency (including the peak day) and a live log of every request. Filter by time range, delivery status or output destination to zero in on exactly the deliveries you care about — for example, every failed delivery to your production endpoint in the last 24 hours.",{"type":16,"tag":102,"props":146,"children":148},{"id":147},"inspect-any-delivery",[149],{"type":34,"value":150},"Inspect any delivery",{"type":16,"tag":17,"props":152,"children":153},{},[154],{"type":16,"tag":21,"props":155,"children":158},{"alt":156,"src":157},"Full request and response detail for a single webhook delivery, including headers and body","/images/webhook_details.png",[],{"type":16,"tag":17,"props":160,"children":161},{},[162,164,171],{"type":34,"value":163},"Click any request to see the complete picture: the exact payload that came in, every header, and the full response your endpoint returned. It's the fastest way to debug a signature mismatch, a malformed body or an endpoint that's quietly returning a ",{"type":16,"tag":165,"props":166,"children":168},"code",{"className":167},[],[169],{"type":34,"value":170},"500",{"type":34,"value":172}," — no need to reproduce anything or add logging to your own service.",{"type":16,"tag":102,"props":174,"children":176},{"id":175},"retry-recover-and-replay",[177],{"type":34,"value":178},"Retry, recover and replay",{"type":16,"tag":17,"props":180,"children":181},{},[182,184,189,191,196,198,203,205,212],{"type":34,"value":183},"Observability isn't just for looking — it's for fixing. From the log you can ",{"type":16,"tag":30,"props":185,"children":186},{},[187],{"type":34,"value":188},"resend",{"type":34,"value":190}," any delivery, ",{"type":16,"tag":30,"props":192,"children":193},{},[194],{"type":34,"value":195},"recover failed",{"type":34,"value":197}," deliveries in bulk after an endpoint recovers, or ",{"type":16,"tag":30,"props":199,"children":200},{},[201],{"type":34,"value":202},"replay missing",{"type":34,"value":204}," events to backfill a destination that was down. Combined with ",{"type":16,"tag":206,"props":207,"children":209},"a",{"href":208},"/features/durable-retries",[210],{"type":34,"value":211},"durable retries",{"type":34,"value":213},", a delivery that failed while your service was deploying is already being retried automatically — and if you ever need to force one through by hand, it's one click.",{"type":16,"tag":39,"props":215,"children":217},{"id":216},"where-it-earns-its-keep",[218],{"type":34,"value":219},"Where it earns its keep",{"type":16,"tag":67,"props":221,"children":222},{},[223,233,251,261],{"type":16,"tag":71,"props":224,"children":225},{},[226,231],{"type":16,"tag":30,"props":227,"children":228},{},[229],{"type":34,"value":230},"Debugging integrations.",{"type":34,"value":232}," See the raw payload a provider actually sent, and the exact response you returned, without touching your own code.",{"type":16,"tag":71,"props":234,"children":235},{},[236,241,243,249],{"type":16,"tag":30,"props":237,"children":238},{},[239],{"type":34,"value":240},"Catching silent failures.",{"type":34,"value":242}," A bucket dropping from 99% to 60% success rate is obvious at a glance, long before a customer complains. Prefer a push? Wire ",{"type":16,"tag":206,"props":244,"children":246},{"href":245},"/features/alerts",[247],{"type":34,"value":248},"alerts",{"type":34,"value":250}," so incidents open when deliveries fail.",{"type":16,"tag":71,"props":252,"children":253},{},[254,259],{"type":16,"tag":30,"props":255,"children":256},{},[257],{"type":34,"value":258},"Incident recovery.",{"type":34,"value":260}," After an outage, recover and replay everything that failed instead of reconciling by hand.",{"type":16,"tag":71,"props":262,"children":263},{},[264,269],{"type":16,"tag":30,"props":265,"children":266},{},[267],{"type":34,"value":268},"Capacity and latency.",{"type":34,"value":270}," Watch average and peak latency per bucket to spot a slow endpoint before it becomes a backlog.",{"type":16,"tag":39,"props":272,"children":274},{"id":273},"part-of-a-complete-webhook-gateway",[275],{"type":34,"value":276},"Part of a complete webhook gateway",{"type":16,"tag":17,"props":278,"children":279},{},[280,282,288,290,294,296,302,303,309,311,317,319,325,327,333],{"type":34,"value":281},"Delivery logs are the observability layer of Webhook Relay's ",{"type":16,"tag":206,"props":283,"children":285},{"href":284},"/webhook-gateway",[286],{"type":34,"value":287},"webhook gateway",{"type":34,"value":289}," — the same platform that gives you ",{"type":16,"tag":206,"props":291,"children":292},{"href":208},[293],{"type":34,"value":211},{"type":34,"value":295},", ",{"type":16,"tag":206,"props":297,"children":299},{"href":298},"/features/throttling",[300],{"type":34,"value":301},"throttling",{"type":34,"value":295},{"type":16,"tag":206,"props":304,"children":306},{"href":305},"/features/webhook-multiple-destinations",[307],{"type":34,"value":308},"fan-out to multiple destinations",{"type":34,"value":310}," and ",{"type":16,"tag":206,"props":312,"children":314},{"href":313},"/features/webhook-to-internal-server",[315],{"type":34,"value":316},"delivery to internal services",{"type":34,"value":318},". For a tamper-evident record of ",{"type":16,"tag":320,"props":321,"children":322},"em",{},[323],{"type":34,"value":324},"configuration",{"type":34,"value":326}," changes — who edited a bucket, output or forwarding rule — see ",{"type":16,"tag":206,"props":328,"children":330},{"href":329},"/features/audit-logs",[331],{"type":34,"value":332},"audit logs",{"type":34,"value":334},".",{"type":16,"tag":17,"props":336,"children":337},{},[338,340,348],{"type":34,"value":339},"Ready to stop guessing whether your webhooks arrived? ",{"type":16,"tag":206,"props":341,"children":345},{"href":342,"rel":343},"https://my.webhookrelay.com/register",[344],"nofollow",[346],{"type":34,"value":347},"Create a free account",{"type":34,"value":349}," and watch your first delivery land in real time.",{"title":7,"searchDepth":351,"depth":351,"links":352},3,[353,355,361,362],{"id":41,"depth":354,"text":44},2,{"id":57,"depth":354,"text":60,"children":356},[357,358,359,360],{"id":104,"depth":351,"text":107},{"id":129,"depth":351,"text":132},{"id":147,"depth":351,"text":150},{"id":175,"depth":351,"text":178},{"id":216,"depth":354,"text":219},{"id":273,"depth":354,"text":276},"markdown","content:features:webhook-logs.md","content","features/webhook-logs.md","features/webhook-logs","md",{"loc":4},1786379757170]