Skip to content

fix: notify Slack on webhook and billing failures#1793

Merged
bokelley merged 2 commits intomainfrom
bokelley/fix-webhook-delivery
Apr 1, 2026
Merged

fix: notify Slack on webhook and billing failures#1793
bokelley merged 2 commits intomainfrom
bokelley/fix-webhook-delivery

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

@bokelley bokelley commented Apr 1, 2026

Summary

  • Added notifySystemError calls to all webhook handlers (WorkOS, Stripe, Luma, Resend, Zoom) for signature failures, missing secrets, and handler crashes
  • Added notifySystemError to critical Stripe billing paths: customer creation, invoice creation (5 failure modes), checkout sessions, and product creation
  • Triggered by WorkOS email reporting failed webhook deliveries — we had no Slack visibility into these failures

Sources

Source Covers
workos-webhook Handler errors, missing WORKOS_WEBHOOK_SECRET
workos-webhook-sig Signature verification failures
stripe-webhook Stripe event handler errors
stripe-webhook-sig Stripe signature verification failures
stripe-customer Customer creation failures
stripe-invoice Invoice creation failures (5 error paths)
stripe-checkout Checkout session failures
stripe-product Product creation failures
luma-webhook Luma event handler errors
resend-inbound-webhook Inbound email processing errors
resend-tracking-webhook Email tracking event errors
zoom-webhook Zoom event handler errors, missing secret

Test plan

  • Deploy and verify no immediate Slack noise (notifications are throttled at 5min per source)
  • Check WorkOS dashboard to confirm retried events are now succeeding
  • Trigger a test webhook failure to confirm Slack notification fires

🤖 Generated with Claude Code

bokelley and others added 2 commits April 1, 2026 10:10
All webhook handlers (WorkOS, Stripe, Luma, Resend, Zoom) and critical
Stripe billing operations now send errors to the Slack error channel via
notifySystemError. This ensures we're alerted on signature failures,
handler crashes, and revenue-blocking billing errors instead of only
finding them in logs or WorkOS retry emails.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The test mock for logger.js was missing the `logger` named export
(only had `createLogger`), causing vitest to fail on transitive imports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@bokelley bokelley merged commit 1fcbdba into main Apr 1, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant