[{"data":1,"prerenderedAt":362},["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":355,"_id":356,"_source":357,"_file":358,"_stem":359,"_extension":360,"sitemap":361},"/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, tracks delivery rate and latency per bucket, and lets you inspect, retry or replay any delivery.","feature","/images/bucket_health.png",{"type":13,"children":14,"toc":342},"root",[15,26,38,45,50,55,61,66,101,108,127,133,140,145,151,159,173,179,214,220,263,269,327],{"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,243,253],{"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],{"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.",{"type":16,"tag":71,"props":244,"children":245},{},[246,251],{"type":16,"tag":30,"props":247,"children":248},{},[249],{"type":34,"value":250},"Incident recovery.",{"type":34,"value":252}," After an outage, recover and replay everything that failed instead of reconciling by hand.",{"type":16,"tag":71,"props":254,"children":255},{},[256,261],{"type":16,"tag":30,"props":257,"children":258},{},[259],{"type":34,"value":260},"Capacity and latency.",{"type":34,"value":262}," Watch average and peak latency per bucket to spot a slow endpoint before it becomes a backlog.",{"type":16,"tag":39,"props":264,"children":266},{"id":265},"part-of-a-complete-webhook-gateway",[267],{"type":34,"value":268},"Part of a complete webhook gateway",{"type":16,"tag":17,"props":270,"children":271},{},[272,274,280,282,286,288,294,295,301,303,309,311,317,319,325],{"type":34,"value":273},"Delivery logs are the observability layer of Webhook Relay's ",{"type":16,"tag":206,"props":275,"children":277},{"href":276},"/webhook-gateway",[278],{"type":34,"value":279},"webhook gateway",{"type":34,"value":281}," — the same platform that gives you ",{"type":16,"tag":206,"props":283,"children":284},{"href":208},[285],{"type":34,"value":211},{"type":34,"value":287},", ",{"type":16,"tag":206,"props":289,"children":291},{"href":290},"/features/throttling",[292],{"type":34,"value":293},"throttling",{"type":34,"value":287},{"type":16,"tag":206,"props":296,"children":298},{"href":297},"/features/webhook-multiple-destinations",[299],{"type":34,"value":300},"fan-out to multiple destinations",{"type":34,"value":302}," and ",{"type":16,"tag":206,"props":304,"children":306},{"href":305},"/features/webhook-to-internal-server",[307],{"type":34,"value":308},"delivery to internal services",{"type":34,"value":310},". For a tamper-evident record of ",{"type":16,"tag":312,"props":313,"children":314},"em",{},[315],{"type":34,"value":316},"configuration",{"type":34,"value":318}," changes — who edited a bucket, output or forwarding rule — see ",{"type":16,"tag":206,"props":320,"children":322},{"href":321},"/features/audit-logs",[323],{"type":34,"value":324},"audit logs",{"type":34,"value":326},".",{"type":16,"tag":17,"props":328,"children":329},{},[330,332,340],{"type":34,"value":331},"Ready to stop guessing whether your webhooks arrived? ",{"type":16,"tag":206,"props":333,"children":337},{"href":334,"rel":335},"https://my.webhookrelay.com/register",[336],"nofollow",[338],{"type":34,"value":339},"Create a free account",{"type":34,"value":341}," and watch your first delivery land in real time.",{"title":7,"searchDepth":343,"depth":343,"links":344},3,[345,347,353,354],{"id":41,"depth":346,"text":44},2,{"id":57,"depth":346,"text":60,"children":348},[349,350,351,352],{"id":104,"depth":343,"text":107},{"id":129,"depth":343,"text":132},{"id":147,"depth":343,"text":150},{"id":175,"depth":343,"text":178},{"id":216,"depth":346,"text":219},{"id":265,"depth":346,"text":268},"markdown","content:features:webhook-logs.md","content","features/webhook-logs.md","features/webhook-logs","md",{"loc":4},1784407253586]