Watchdogs

Nothing failed. Nothing arrived. That's the outage.

Your servers are green. Your logs are clean. And Shopify stopped sending orders/create two days ago because someone rotated a secret. The most expensive webhook failures produce no error anywhere. They are absences, and absences don't page anyone. A Watchdog does.

The failure mode

Why nobody catches this today

Your monitoring stack watches things that happen. This failure is a thing that doesn't.

Providers disable endpoints silently. WooCommerce and Shopify auto-drop webhook subscriptions after repeated failures. Secrets rotate, DNS changes, a deploy eats a route, and the sender either retries into the void or simply stops. Uptime monitors can't see it: your endpoint is up; it's the traffic that died. Cron monitors watch jobs you run; nobody watches the deliveries you receive.

The teams that do catch it catch it late: a month-end reconciliation, a customer email, a dashboard that's been flat for a week.

01 · EXPECT

Declare the rhythm

"invoice.paid arrives at least daily." Set it yourself, or let the vault propose it from the history it already holds. A grace window absorbs normal jitter.

02 · WATCH

The vault keeps score

Every capture feeds the watchdog. While webhooks arrive on cadence, it stays quiet; you'll see the green light, not hear from it.

03 · ALARM

Silence raises the flag

Miss the window and the light goes amber: an alert with the last-seen time, the expected cadence, and the capture history to debug against, because the vault kept everything up to the silence.

Built on the vault, not bolted on

This is why Watchdogs live here and not in a generic monitor: detection needs history. The vault already holds every delivery, so a new watchdog starts from that history, knows what "normal" looks like from day one, and hands you the actual requests either side of the gap when you investigate.

Starts from the history it already holds

A watchdog runs on the vault's own history: enable one and it already knows what normal looks like, because every capture that came before is on the shelf beneath it. No warm-up period, no blind first week.

  • 3 watchdogs on Solo, 20 on Pro, 100 on Team
  • Email alerts the moment a window is missed
  • At-least-every-N intervals with grace windows
The vault underneath →
montue wedthu frisat sun ▲ 26h silent, alert invoice.paid · expected daily

One panel, built from what actually arrives

Pick the endpoint, name the event and say how often it should arrive. The panel shows the payloads the endpoint already holds: click a value such as invoice.paid and it becomes the criterion, so the watchdog counts only the event you care about. Not sure of the rhythm? Propose from history reads the gaps between stored captures and suggests an interval and grace.

  • Criteria on body, headers or query: equals, contains, exists and more
  • All of these, or any of these
  • A sender that is already late alerts straight away
The New watchdog panel: the Stripe payments endpoint, the name Invoices paid, expected at least every 6 hours with 30 minutes grace, a criterion body.type equals invoice.paid, and the endpoint's captured payload below it.

the create panel, shown with sample Stripe events

Give every sender a watchdog.

Every capture feeds the alarm that guards it. Watchdogs start on Solo, from $5.