## TL;DR

Piping invoice.payment_failed webhooks into a Slack channel gives the team real-time eyes on failed payments, but raw events are noise: enrich the alert with customer name, plan, amount, attempt count, and the portal recovery link before posting. Route high-value failures to a priority channel and everything else to a digest. Include the decline reason so the team knows whether it is worth a personal outreach. Alerting is for visibility; the automated dunning flow still does the actual recovery work.

## The query

```text
Stripe "invoice.payment_failed" to Slack: alerting playbook
```

## Use this when

- Real-time failed-payment visibility for the billing team
- Slack alerts for high-value invoice failures
- Enriching Stripe webhooks for team triage

## Not for

- Customer dunning emails (separate flow, customer-facing)
- Paging on-call for payment failures (payments rarely need a page)

## Steps

1. Create the webhook endpoint for invoice.payment_failed with signature verification.
   Expected output: Events arrive securely and deduplicated.
2. Enrich each event: customer name, MRR, amount, attempt number, decline code.
   Expected output: The alert is actionable at a glance.
3. Post to Slack with the recovery link and a suggested next step.
   Expected output: The team can act in one click.
4. Split routing: high-value or strategic accounts to a priority channel, rest to digest.
   Expected output: Signal stays high where it matters.
5. Add a resolve action or thread update when the invoice recovers.
   Expected output: The channel does not fill with stale failures.

## Variant phrasings

### Stripe invoice.payment_failed Slack alert

### Slack webhook failed invoice Stripe

### payment failure alerting playbook Stripe

## Root cause

Humans triage what automation cannot judge: whether a failed 50k invoice from a strategic account deserves a phone call. The webhook-to-Slack path exists to put that judgment in front of someone fast, while the dunning automation handles the routine cases.

## Edge cases

- Do not post full card or customer PII into Slack; link back to the dashboard
- Rate-limit the poster: retry storms can flood the channel during an outage

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_AN5eSBzl27KtN8-vrsRs-w
