Stripe’s Developers → Webhooks log tells you whether Stripe delivered a POST. It does not page you when invoice.payment_failed happens, and it is easy to ignore. AlertHub is the human monitor: Stripe POSTs the Event JSON to ingest, placeholders fill the title, and the dashboard keeps the row.
You do not host https://yourapp.com/stripe-webhooks. The endpoint is https://api.thealerthub.com/sendAlert with query templates — Stripe source. Ingest does not verify Stripe signatures. Delivery retries and HMAC belong in Stripe’s own log, or in Hookdeck in front of AlertHub if you need that plumbing.
Critical failed-charge recipes (amount, invoice id): failed Stripe payments. Subscription field paths: monitor subscriptions. Zapier instead of a Stripe endpoint: Stripe via Zapier. This post is monitoring the event stream.
Two URLs, two jobs
Stripe lets you register more than one endpoint. That matches AlertHub’s level rule: one URL cannot branch on type. Use two (same ah_key, different ah_level / ah_title) — same pattern as alert levels.
| Endpoint role | ah_level | Typical Stripe events | Where it goes |
|---|---|---|---|
| Monitor (log) | info | Whatever you select: payment_intent.succeeded, customer.subscription.updated, charge.refunded, … | Dashboard only |
| Page (money) | critical | invoice.payment_failed, payment_intent.payment_failed | Slack / Telegram / WhatsApp / … |
| Review (churn) | warning | customer.subscription.deleted | Channels, quieter than critical |
Monitor URL (event type in the title):
https://api.thealerthub.com/sendAlert?ah_key=YOUR_KEY&ah_source=Stripe&ah_title=Stripe:{{type}}
{{type}} is on the Stripe Event object. Nested money fields use dot paths such as {{data.object.amount}} — Webhook Builder.
Do not put full PAN or extra customer PII in titles. Amount, currency, and object id are enough on a lock screen.
Setup (once)
- Copy the secret from app.thealerthub.com. Build both URLs in the Webhook Builder (or paste the monitor template above).
- In Stripe: Developers → Webhooks → Add endpoint. Paste the info URL. Select the events you want in the feed (start narrow — “all events” will fill retention fast).
- Add a second endpoint with
ah_level=criticaland only the payment-failed events. Connect Telegram or Slack if those should leave the dashboard.
Test mode and live mode are separate webhook lists in Stripe. Use a separate AlertHub project for test, or you will mix sandbox noise into production history.
What you should see
Trigger a test event from Stripe (or a test-mode Checkout). Stripe’s endpoint detail shows the attempt. AlertHub shows a row titled Stripe:payment_intent.succeeded (or whatever type was). Info does not buzz the phone. Then fire invoice.payment_failed against the critical URL and confirm the channel ping.
If Stripe’s log shows 4xx/5xx to ingest, fix the URL (ah_key, required ah_title). AlertHub will not invent a row for a POST that never arrived.
Events worth selecting
Pick from Stripe’s list; AlertHub does not special-case types. Practical set:
- Monitor:
payment_intent.succeeded,invoice.paid,customer.subscription.updated - Page:
invoice.payment_failed,payment_intent.payment_failed - Review:
customer.subscription.deleted
You can add other Stripe types the same way (charge.dispute.created, and so on): the title is still Stripe:{{type}} unless you build a dedicated URL with a custom ah_title. Check Stripe’s docs for the exact field names on each data.object.
Ideas to squeeze more value
- Gotify / ntfy if Slack is the wrong pager — failed payments on Gotify.
- WooCommerce checkout is a WordPress hook, not this Stripe endpoint — WooCommerce orders. Same project, different
ah_source. - Retention. A verbose info monitor eats the plan window (7 / 90 / 365 days) — inbox.
- Rotate
ah_keyin Stripe, not in Slack. Destinations stay on Connections.
FAQ
Does this replace Stripe Radar or the Dashboard webhooks view?
No. Radar is fraud. Stripe’s webhook view is delivery. AlertHub is the operator feed and optional chat ping.
Can one URL be info for success and critical for failure?
Not without middleware. Two Stripe endpoints, or Zapier/Make filters, or Hookdeck transforms.
Will test-mode events page production?
They will if both point at the same project and the failed-payment URL is critical. Split projects.
Next steps
Add the info monitor endpoint with {{type}}, add the critical failed-payment endpoint from the existing guide, and send one test event of each.
Related: Stripe docs · placeholders · failed payments Stripe + WooCommerce