## TL;DR
Webhook silence is invisible because nothing errors: the events simply never come. The subscription may have been deleted, the endpoint may be failing its health checks, or the provider paused delivery after earlier failures. Verify the subscription at the provider, read its delivery log, and rebuild with a daily reconciliation that compares provider-side cancellations against agent-seen cancellations.

```text
webhook for cancellation events never arrived: agent failed to notice churn signals for a week
```

## Use this when
- No cancellation events processed for days while cancellations occurred
- The provider's subscription or endpoint changed recently
- Earlier delivery failures may have paused the subscription

## Not for this skill when
- Events arrive but the agent's handler rejects them, a processing bug
- The provider had a documented outage and is replaying events

## Steps
1. List the webhook subscriptions at the provider and confirm this one exists, is active, and points at the current endpoint. Verify: the subscription's state and URL are verified at the source
2. Read the provider's delivery log for the silent window: attempts, responses, and pauses. Verify: the delivery failure pattern is established
3. Fix the endpoint or subscription cause and request a replay of the missed window if the provider supports it. Verify: missed cancellation events are recovered or explicitly listed as unrecoverable
4. Add a daily reconciliation job comparing provider cancellation counts to agent-processed counts. Verify: any future delivery gap alerts within a day
5. Add a lightweight polling fallback for cancellations that activates when webhooks go quiet. Verify: detection degrades to polling instead of to blindness

## Variant phrasings
### cancellation webhooks stopped arriving
A related phrasing for the same underlying problem.
### webhook subscription silently paused
A related phrasing for the same underlying problem.
### missed churn signals for a week
A related phrasing for the same underlying problem.

Compatibility: Compatibility: webhook providers (Stripe, Chargebee, CRM webhooks) with agent event consumers, current versions.

## Why it happens
Push systems fail silently by design: the absence of events is not itself an event. Reconciliation against the provider's own counts is the only way to notice, which is why mature webhook consumers always pair push with a periodic pull-based audit.

## Edge cases / pitfalls
- Providers often pause subscriptions after repeated 5xx responses from your endpoint. The delivery log usually shows the original failures that caused the pause.
- Replayed events arrive out of order and duplicated. Handlers must be idempotent on the provider's event id.
- Reconciliation counts must use the same event definition on both sides, or timezone and type differences create false alarms.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_OTYFJ_gJdlCPSPLugGkQBg
