Trigger Notification Workflows on Stripe Events
Build automated notification sequences for Stripe events. Handle payments, subscriptions, invoices, and trials with zero code.
{
"key": "integration.stripe.invoice.payment_failed",
"steps": [
{
"command": "broadcast",
"input": {
"action_url": "{{payload.data.object.hosted_invoice_url}}",
"content": "We couldn't process your payment of ${{payload.data.object.amount_due}}. Please update your payment method to avoid service interruption.",
"recipients": [
{
"external_id": "{{payload.data.object.customer}}"
}
],
"title": "Payment failed"
}
},
{
"command": "wait",
"input": {
"duration": 172800
}
},
{
"command": "broadcast",
"input": {
"content": "Invoice {{payload.data.object.number}} for customer {{payload.data.object.customer}} has been unpaid for 48 hours. Amount: ${{payload.data.object.amount_due}}. Manual intervention may be needed.",
"overrides": {
"providers": {
"email": {},
"slack": {}
}
},
"recipients": [
{
"external_id": "billing-team"
}
],
"title": "Payment still failing"
}
}
]
}Trusted by 1,000+ companies
Why Stripe + MagicBell Workflows
Respond to every Stripe event with the right notification at the right time.
Instant Triggers
Workflows execute automatically when Stripe webhooks arrive. No polling, no delays.
Event Data Access
Reference any Stripe webhook data in your notifications with liquid templates.
Smart Logic
Branch workflows based on plan type, amount, customer properties, or metadata.
Time Delays
Wait hours or days between notifications for dunning sequences and trial reminders.
Multi-Channel
Send to in-app, email, Slack, SMS, or push notifications from a single workflow.
Zero Code Setup
Configure workflows via API or dashboard. No backend changes required.
Real Stripe Workflow Examples
Copy these workflows to handle common Stripe events.
invoice.payment.failedStripe invoice.payment.failed Event Notification
Notify customers immediately when payment fails with a link to update their payment method. Escalate to the billing team after 48 hours if still unpaid.
{
"key": "integration.stripe.invoice.payment_failed",
"steps": [
{
"command": "broadcast",
"input": {
"action_url": "{{payload.data.object.hosted_invoice_url}}",
"content": "We couldn't process your payment of ${{payload.data.object.amount_due}}. Please update your payment method to avoid service interruption.",
"recipients": [
{
"external_id": "{{payload.data.object.customer}}"
}
],
"title": "Payment failed"
}
},
{
"command": "wait",
"input": {
"duration": 172800
}
},
{
"command": "broadcast",
"input": {
"content": "Invoice {{payload.data.object.number}} for customer {{payload.data.object.customer}} has been unpaid for 48 hours. Amount: ${{payload.data.object.amount_due}}. Manual intervention may be needed.",
"overrides": {
"providers": {
"email": {},
"slack": {}
}
},
"recipients": [
{
"external_id": "billing-team"
}
],
"title": "Payment still failing"
}
}
]
}customer.subscription.updatedStripe customer.subscription.updated Event Notification
Notify customer when their subscription plan changes.
{
"key": "integration.stripe.customer.subscription.updated",
"steps": [
{
"command": "broadcast",
"input": {
"content": "Your subscription has been updated. The changes will take effect on your next billing cycle.",
"recipients": [
{
"external_id": "{{payload.data.object.customer}}"
}
],
"title": "Subscription updated"
}
}
]
}charge.dispute.createdStripe charge.dispute.created Event Notification
Notify the finance team immediately when a dispute is filed so they can respond before the deadline.
{
"key": "integration.stripe.charge.dispute.created",
"steps": [
{
"command": "broadcast",
"input": {
"content": "A ${{payload.data.object.amount}} dispute has been filed. Reason: {{payload.data.object.reason}}. Evidence due by deadline. Dispute ID: {{payload.data.object.id}}",
"overrides": {
"providers": {
"email": {},
"slack": {}
}
},
"recipients": [
{
"external_id": "finance-team"
}
],
"title": "⚠️ New dispute filed"
}
}
]
}radar.early.fraud.warning.createdStripe radar.early.fraud.warning.created Event Notification
Notify the fraud team immediately when Stripe Radar detects potential fraud.
{
"key": "integration.stripe.radar.early_fraud_warning.created",
"steps": [
{
"command": "broadcast",
"input": {
"content": "Stripe Radar detected potential fraud. Type: {{payload.data.object.fraud_type}}. Charge ID: {{payload.data.object.charge}}. Immediate review required.",
"overrides": {
"providers": {
"email": {},
"slack": {}
}
},
"recipients": [
{
"external_id": "fraud-team"
}
],
"title": "🚨 Fraud warning"
}
}
]
}Connect Stripe to MagicBell
Forward Stripe webhooks to MagicBell to automatically trigger workflows.
How It Works
integration.stripe.charge.succeededhttps://api.magicbell.com/webhooks/stripe?project_id=YOUR_IDAll 200+ Stripe events are supportedEvent data available as {{data.*}} variablesWant to inspect Stripe webhook payloads before connecting? Use our free tool to test your Stripe webhooks online — generate a temporary URL, point Stripe at it, and see exactly what data arrives.
# Get your MagicBell webhook URL (alternatively, use the dashboard as shown below)
WEBHOOK_URL="https://api.magicbell.com/webhooks/stripe?project_id=YOUR_PROJECT_ID"
# Pass webhook URL to Stripe (alternatively, use the Stripe dashboard as shown below)
curl https://api.stripe.com/v1/webhook_endpoints \
-u sk_test_YOUR_STRIPE_KEY: \
-d "url=$WEBHOOK_URL" \
-d "enabled_events[]=*"
Browse Event Examples
View sample payloads and workflow configurations for 16 Stripe events.
To create a workflow for any Stripe event, use the key pattern: integration.stripe.{event_name}. All 200+ Stripe webhook events are supported.
charge.dispute.created Notify the finance team immediately when a dispute is filed so they can respond before the deadline.
charge.refunded Confirm refund to customer and notify the finance team.
checkout.session.completed Send order confirmation when checkout completes successfully.
checkout.session.expired Notify customers when their checkout session expires, then notify the sales team after 1 hour for follow-up.
customer.subscription.created Welcome new subscribers and notify the sales team about the new signup.
customer.subscription.deleted Confirm cancellation to customer and notify the customer success team for potential win-back.
customer.subscription.updated Notify customer when their subscription plan changes.
invoice.overdue Send overdue notice to customer and escalate to collections team.
invoice.payment.failed Notify customers immediately when payment fails with a link to update their payment method. Escalate to the billing team after 48 hours if still unpaid.
invoice.payment.succeeded Send invoice payment confirmation with a link to view or download the invoice.
invoice.upcoming Give customers advance notice of an upcoming invoice so they can ensure their payment method is up to date.
payment.intent.payment.failed Notify customer when payment intent fails and prompt retry.
payment.intent.succeeded Confirm successful payment to customer.
payout.failed Notify finance team immediately when a payout fails so they can resolve the issue.
payout.paid Notify the finance team when a payout has been deposited to the bank account.
radar.early.fraud.warning.created Notify the fraud team immediately when Stripe Radar detects potential fraud.
Notify Users Across All Channels
Map workflow-triggered broadcasts to notifications across multiple channels. Reach users wherever they are.
Explore More Workflows
Learn about workflow fundamentals, commands, and integrations with other platforms.
GitHub
CI/CD, PR reviews, and issue workflows
Stripe Webhook Resources
Learn more about Stripe webhooks and how to implement them effectively.

