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.trial.will.endStripe Trial Ending Event Notification
Remind customers that their trial is ending soon and prompt them to add a payment method.
{
"key": "integration.stripe.customer.subscription.trial_will_end",
"steps": [
{
"command": "broadcast",
"input": {
"content": "Your free trial is ending in 3 days. Add a payment method to continue enjoying all features without interruption.",
"recipients": [
{
"external_id": "{{payload.data.object.customer}}"
}
],
"title": "Your trial ends soon"
}
}
]
}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.*}} variables# 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 21 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.failed Notify customers when their payment fails and prompt them to update their payment method.
charge.refunded Confirm refund to customer and notify the finance team.
charge.succeeded Send a payment confirmation to the customer with a receipt link.
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.created Notify the sales team when a new customer is created in Stripe.
customer.source.expiring Remind customers to update their payment method before it expires to avoid service interruption.
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.trial.will.end Remind customers that their trial is ending soon and prompt them to add a payment method.
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.
