Trigger Notification Workflows on Stripe Events

Build automated notification sequences for Stripe events. Handle payments, subscriptions, invoices, and trials with zero code.

Payment Failure Dunning Workflow
{
  "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

StacksiGitBookPitchEllipsusWinampSifted
Stripe + MagicBell

Why Stripe + MagicBell Workflows

Respond to every Stripe event with the right notification at the right time.

Instant Triggers

Instant Triggers

Workflows execute automatically when Stripe webhooks arrive. No polling, no delays.

Event Data

Event Data Access

Reference any Stripe webhook data in your notifications with liquid templates.

Smart Logic

Smart Logic

Branch workflows based on plan type, amount, customer properties, or metadata.

Time Delays

Time Delays

Wait hours or days between notifications for dunning sequences and trial reminders.

Multi-Channel

Multi-Channel

Send to in-app, email, Slack, SMS, or push notifications from a single workflow.

Zero Code

Zero Code Setup

Configure workflows via API or dashboard. No backend changes required.

Example Workflows

Real Stripe Workflow Examples

Copy these workflows to handle common Stripe events.

Stripe
invoice.payment.failed

Stripe 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"
      }
    }
  ]
}
View event details and payload
Stripe
customer.subscription.trial.will.end

Stripe 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"
      }
    }
  ]
}
View event details and payload
Stripe
charge.dispute.created

Stripe 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"
      }
    }
  ]
}
View event details and payload
Stripe
radar.early.fraud.warning.created

Stripe 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"
      }
    }
  ]
}
View event details and payload
Setup

Connect Stripe to MagicBell

Forward Stripe webhooks to MagicBell to automatically trigger workflows.

How It Works

1.
Create workflows in MagicBell with Stripe event keys
integration.stripe.charge.succeeded
2.
Configure Stripe webhook endpoint
https://api.magicbell.com/webhooks/stripe?project_id=YOUR_ID
3.
Select which events to forward (or use * for all)
All 200+ Stripe events are supported
4.
Workflows execute automatically when events arrive
Event data available as {{data.*}} variables
Create Stripe Webhook
# 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"
Alternative to CLI: Create Stripe webhook in MagicBell Dashboard
MagicBell Stripe provider page
Pass Webhook URL to Stripe
# 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[]=*"
Create Event Destination in Stripe Dashboard
Stripe event destination configuration screen showing event selection and account options
All Events

Browse Event Examples

View sample payloads and workflow configurations for 21 Stripe events.

💡
Event Naming Convention

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.

Multi-Channel Delivery

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 logo

GitHub

CI/CD, PR reviews, and issue workflows

View All Workflows
Resources

Stripe Webhook Resources

Learn more about Stripe webhooks and how to implement them effectively.