Live · Stripe + Shopify · Self-hosted by SideLabs

Stop losing provider events to deploys and handler failures.

A drop-in inbox between Stripe or Shopify and your handler. Verifies signatures, stores raw payloads and headers, retries failures with backoff, and lets you replay any event from a dashboard — without changing a line of your handler code.

Receive · Verify · Store · Forward · Retry · Replay
events · 24h: 12,418 · delivered: 12,415 · retried: 3 · replayed: 3
How it works04 STEPS · NO HANDLER REWRITE
Step 01

Replace your provider webhook URL

Point Stripe or Shopify at our ingest URL. Keep your existing endpoint code untouched — the URL swap is the only change in your stack.

# Stripe or Shopify → Webhooks → Edit endpoint
https://inbox.sidelabs.dev/ingest/stripe/src_acme_stripe
Step 02

We verify and store the raw event

The provider signature is checked against your signing secret. Full payload + headers retained for the entire retention window — append-only, ClickHouse-backed.

POST /ingest/stripe/src_acme_stripe   200 OK
# stored: evt_1Q2nWxKa9Rm6PzQy   verified: true
Step 03

We forward to your handler

Same payload, same provider headers. Your handler can't tell the difference. We add only an X-Inbox-Event-Id for traceability.

→ POST https://api.acme.com/stripe-webhook
  Stripe-Signature: t=1735689600,v1=...
  → 200 OK   (84ms)
Step 04

If it fails, we retry — then you replay

Exponential backoff (1m → 5m → 15m → 1h → 4h, up to 5 attempts). Anything still failing is one click away in the dashboard. Per-event auto-retry pause via the API.

attempt 1   504 GATEWAY_TIMEOUT
attempt 2   5XX (retrying in 5m)
attempt 3   200 OK   (delivered)
Architecture fig.01
Provider stripe / shopify WEBHOOK INBOX verify store queue forward sig ✓ · raw kept · 30d retention THE SAFETY NET /webhooks/stripe your handler POST forward retry on failure
Features06 · WHAT IT DOES
F.01 SIG

Signature verification

Stripe and Shopify signatures are verified before forwarding. Failed signatures land in a separate bucket — never silently forwarded to your handler.

F.02

Replay any event

Single event replay re-fires through your forwarder with the original payload and provider headers intact. Original timestamp preserved.

F.03 FAIL

Failures isolated, not dropped

Events that exhaust retries stay marked failed and queryable from the dashboard. Inspect the failure, fix the handler, replay when ready. Per-event auto-retry pause via API.

F.04

Search the payload

Filter by event id, type, status, source, or time window. Fast at 100M+ events — ClickHouse-backed, partitioned by month.

F.05 30d

Retention you can use

30 days on Pro, 90 days on Business. Raw events and delivery attempts both — not the 3-day debugger window you get from a forwarding tunnel.

F.06 ✕ SDK

Drop-in, no SDK

URL swap. Your handler keeps its route, signature check, and framework. Leave anytime by pointing the provider back at yourself — your data goes with you.

CompareHONESTLY · WHERE IT FITS
vs. SQS + Lambda + Postgres

You can build it. The bill is your time.

DIY this and you'll get there. Plus a year of maintenance, on-call, and the next migration.
Webhook Inbox DIY (SQS / Lambda / PG)
Time to working setup5 minutes2–5 days
Provider signature verificationBuilt-in, before storageYou write it in the handler
Replay UIOne click per eventSQS re-drive + hope you saved the body
Per-event retry pausePATCH /api/events/<id>/retryBuild a flag table + worker logic
30-day searchable archiveClickHouse, includedCloudWatch + JSON.stringify diving
Cost at 1M events / moFlat $99 (Business)≈$40–80 infra + your time
Vendor lock-inURL swap, leave anytimeNone (it's yours)
PricingNO HIDDEN PER-EVENT FEES · CANCEL ANY TIME
01 — Free
$0/ month

Try the recovery inbox against a single Stripe or Shopify source. No card.

  • 1 source, 1 destination
  • Up to 1,000 events / month
  • 7-day raw-event retention
  • Manual replay from dashboard
  • Auto retry with exponential backoff
Start free →
03 — Business
$99/ month

For teams whose billing pipeline depends on every event landing.

  • 25 sources
  • Up to 1,000,000 events / month
  • 90-day raw-event retention
  • Priority retry queue
  • Audit log export (CSV/JSON)
  • SLA + private Slack channel
Start free →

Need to run the inbox inside your own VPC? Email support@sidelabs.dev for self-hosted pricing.

Connect a providerFIVE MINUTES · NO HANDLER CHANGES

You give us a provider signing secret and your existing handler URL. We give you an ingest URL to paste into Stripe or Shopify. From that moment, every provider event is captured, verified, and forwarded — and any failure is one click away in the inbox.

Full instructions, including how we verify signatures and what headers we forward, live in the setup guide.

Stripe guide Shopify guide
# 1. Create your source in Webhook Inbox
curl -X POST https://inbox.sidelabs.dev/api/sources \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "id": "src_acme_stripe",
    "signing_secret": "whsec_...",
    "destination_url": "https://api.acme.com/stripe-webhook",
    "timeout_ms": 10000
  }'

# 2. In Stripe or Shopify → Webhooks → Add endpoint:
#    https://inbox.sidelabs.dev/ingest/stripe/src_acme_stripe

# 3. Copy the provider signing secret and save via the same POST.

# Done. Failed deliveries land here:
open https://inbox.sidelabs.dev/app/
5 minutes to working

Stop hoping the next deploy doesn't cost you an order.

Point Stripe or Shopify at our ingest URL. We'll catch what your handler drops.