Reference · built on requestOperator by FibricIT & reliability

Webhook Replay

Matches failed Stripe, Shopify, and GitHub webhook deliveries against receiver receipts and proposes a replay batch with no duplicates.

About

Every sender keeps its own delivery log, and every receiver keeps its own receipts. When an endpoint was down for an hour, the two disagree. Webhook Replay reads both. From Stripe it reads events with delivery_success false. From Shopify it reads the X-Shopify-Webhook-Id and X-Shopify-Event-Id on each delivery. From GitHub it reads each hook's deliveries with their status_code and redelivery flag. From Webhook Ingest it reads which delivery ids were accepted.

It matches by event id, drops anything the receiver already holds, and proposes one replay batch in the order the receiver needs. You approve the batch. Where a sender can redeliver, the operator calls that endpoint. Where it cannot, it proposes the fetch that recovers the object instead.

This is a reference listing. It documents what Fibric would read from Webhook Replay and what it could propose, based on the vendor's published interfaces. Fibric builds it under a managed deployment when you request it; selecting it here installs nothing.

Inputs

  • Stripe events through GET /v1/events with delivery_success false, going back up to 30 days, with each event's id, type, and created
  • Shopify webhook deliveries by X-Shopify-Webhook-Id, with X-Shopify-Event-Id linking deliveries that came from the same merchant action
  • GitHub hook deliveries through GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries, with guid, delivered_at, status_code, event, action, and redelivery
  • Delivery ids and content hashes that Webhook Ingest accepted, and the signature failures it rejected
  • Receiver outage windows, taken from the receipts that stopped and started again

Proposed actions

  • Target capability: propose redelivering a GitHub delivery through POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts, one attempt per missing guid
  • Target capability: propose a Stripe resend list by event id for the Dashboard or stripe events resend, plus object fetches for events past 30 days
  • Target capability: propose a reconciliation fetch from the Shopify Admin API for orders whose X-Shopify-Event-Id never reached the receiver
  • Target capability: propose re-registering a Shopify webhook subscription that Shopify deleted after repeated failures, with the topics it carried
  • Target capability: propose holding a replay while the receiver is still returning errors, with a retry time

Proposed actions are target capabilities. Every action runs propose-first and needs a validated deployment and the appropriate permissions.

What you can build

  • Recover an hour of Stripe events after an outage

    Events with delivery_success false are matched against Webhook Ingest receipts. Ones the receiver already accepted on a retry are dropped. The remaining event ids form one resend list, grouped by object, for approval.

    With Stripe, Webhook Ingest

  • Redeliver GitHub pull_request events a deploy dropped

    Hook deliveries with a 5xx status_code during the deploy window are listed by guid. The operator proposes one redelivery attempt per guid, in delivered_at order, and skips any guid already marked redelivery.

    With GitHub, Webhook Ingest

  • Rebuild Shopify orders after a subscription was deleted

    When a subscription vanishes after four hours of failures, the operator proposes re-registering it and a reconciliation fetch of orders updated in the gap, so the order feed carries on without a manual export.

    With Shopify, Webhook Ingest

Requirements

  • A Stripe restricted key that reads events, a Shopify custom app with webhook and order scopes, or a GitHub token with read:repo_hook and write:repo_hook
  • Webhook Ingest as the receiver, or a receiver log that records delivery ids, so the match has something to compare against
  • Signature secrets kept current in Webhook Ingest, since a replayed delivery is signed afresh by the sender
  • An agreed order for replays per event type, such as created before updated, where the receiver depends on it
Authentication
Reads delivery logs with the sender connectors' keys and receipts from Webhook Ingest's own records. It writes only the redelivery or subscription calls you approve.

Limits

  • Stripe does not guarantee event order and can send an event twice. The batch is deduplicated by event id; order is rebuilt from the objects.
  • Stripe retries for up to three days in live mode; Dashboard Resend works for 15 days. After 30 days only the object can be fetched.
  • Shopify retries 8 times over 4 hours, then deletes a subscription made through the Admin API. Deliveries lost after that have no sender log.
  • GitHub keeps deliveries available for redelivery for 3 days. Older misses are recovered by fetching the object, not by redelivery.

Access and pricing

Reference listing. Fibric builds the operator under a managed deployment when you request it. Your quote covers the build, capabilities, usage, and support.

Request Webhook Replay ↗

Questions and answers

What do I approve before anything is replayed?
One batch. It lists each event id or delivery guid, the sender, the failure status the sender logged, and whether the receiver already holds it. You can strike entries out, change the order, or hold the batch until the receiver is healthy.
How does it avoid duplicates?
It keys on the sender's own identifier: the Stripe event id, X-Shopify-Webhook-Id, or the GitHub delivery guid. Anything Webhook Ingest already accepted, on the first attempt or a retry, is excluded. A replay batch is applied once. Running it again produces nothing new.
What record is left?
A receipt per batch: the ids replayed, the ids skipped and why, the endpoint called, the sender's response per attempt, who approved, and when. Receipts stay attached to the outage window, so the next audit shows what was recovered.
Ask about Webhook Replay

Ask about the capabilities and requirements in this listing.

For project-specific requirements, contact Fibric.