Stripe + Brevo Integration

Stripe + Brevo

Connect Stripe’s payment data to Brevo’s engagement layer. Every payment event, subscription created, payment failed, refund issued, becomes a trigger for targeted messaging.

MCP Servers Used

ServerPackageAuthPurpose
Stripe MCP@stripe/mcpAPI keyPayments, subscriptions, customers, invoices, products, knowledge base
Brevo MCPmcp.brevo.com/v1/brevo/mcpTokenContacts, email, SMS, WhatsApp, campaigns, event tracking

Setup

Step 1: Connect Both MCP Servers

{
"mcpServers": {
"stripe": {
"command": "npx",
"args": ["-y", "@stripe/mcp"],
"env": {
"STRIPE_SECRET_KEY": "sk_live_your-stripe-key"
}
},
"brevo": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.brevo.com/v1/brevo/mcp",
"--header",
"Authorization: Bearer ${BREVO_MCP_TOKEN}"
],
"env": {
"BREVO_MCP_TOKEN": "your-brevo-mcp-token"
}
}
}
}

Step 2: Verify

> Show me my Stripe subscriptions created this week
> List my Brevo email templates

Use Case 1: Payment Event Campaign Agent

Map Stripe events to Brevo engagement:

---
name: stripe-payment-campaigns
description: Trigger Brevo campaigns from Stripe payment events
version: 1.0.0
temperature: 0.2
tools:
- stripe
- brevo_contacts
- brevo_email_campaign_management
- brevo_templates
- brevo_sms_campaigns
triggers:
- event: payment_intent.succeeded
- event: invoice.payment_failed
- event: customer.subscription.created
- event: customer.subscription.deleted
- event: charge.refunded
---
# Payment Event Campaign Agent
Listen for Stripe payment events and trigger the appropriate
Brevo engagement campaign.
## Event-to-Campaign Mapping
| Stripe Event | Brevo Action | Timing |
|-------------|-------------|--------|
| `payment_intent.succeeded` | Send receipt + thank you email | Immediate |
| `invoice.payment_failed` | Send payment failed email + SMS | Immediate |
| `invoice.payment_failed` (2nd attempt) | Send urgent SMS with update link | +24h |
| `customer.subscription.created` | Welcome sequence (3 emails over 7 days) | Immediate |
| `customer.subscription.updated` | Plan change confirmation email | Immediate |
| `customer.subscription.deleted` | Cancellation survey + win-back sequence | Immediate + 7 days |
| `charge.refunded` | Refund confirmation + feedback request | Immediate |
| `invoice.upcoming` | Renewal reminder with usage summary | 3 days before |
## Failed Payment Recovery
Critical revenue recovery flow:
1. **Attempt 1 fails**: Email with "Update payment method" CTA
2. **+24 hours**: SMS with direct link to billing portal
3. **+72 hours**: Email from founder: "We don't want to lose you"
4. **+7 days (final)**: Last chance email with grace period deadline
## Rules
- ALWAYS sync Stripe customer email to Brevo before sending
- NEVER expose full payment details in emails (last 4 digits only)
- Track events: stripe_payment_email_sent, stripe_recovery_success
- For failed payments, stop sequence immediately if payment succeeds

Use Case 2: Subscription Lifecycle Agent

Manage the full subscription journey:

---
name: stripe-subscription-lifecycle
description: Manage subscription engagement from signup through renewal
version: 1.0.0
temperature: 0.3
tools:
- stripe
- brevo_contacts
- brevo_email_campaign_management
- brevo_segments
- brevo_templates
triggers:
- schedule: "0 8 * * *"
---
# Subscription Lifecycle Agent
Daily check of subscription states to drive engagement:
## Daily Tasks
1. **New subscriptions (last 24h)**
- Create/update Brevo contact with plan details
- Add to plan-specific segment
- Trigger onboarding sequence
2. **Renewals coming (next 7 days)**
- Send renewal reminder with usage summary
- For annual plans: send "year in review" email
3. **Trials expiring (next 3 days)**
- Send trial-to-paid conversion email
- SMS reminder on last day
4. **Recently churned (last 7 days)**
- Add to win-back segment
- Schedule win-back sequence (day 7, 14, 30)
## Brevo Attributes from Stripe
| Stripe Data | Brevo Attribute |
|------------|-----------------|
| subscription.plan.name | PLAN_NAME |
| subscription.current_period_end | RENEWAL_DATE |
| subscription.status | SUBSCRIPTION_STATUS |
| customer.currency | CURRENCY |
| invoice.amount_paid (sum) | LIFETIME_REVENUE |
| subscription.created | SUBSCRIPTION_START |
## Rules
- ALWAYS use customer's currency when displaying amounts
- Segment by plan tier for differentiated messaging
- Track MRR impact of each campaign for ROI reporting

Example: Real-Time Orchestration

You: "I see we had 5 failed payments today. Check which ones are
subscription customers and start the recovery sequence."
Agentx: Checking Stripe for failed payments today...
[Uses stripe MCP to list recent failed invoices]
Found 5 failed payments:
- 3 are subscription customers (monthly plans)
- 2 are one-time payments
For the 3 subscription customers:
[Uses brevo_contacts to verify contacts exist]
[Uses brevo_email_campaign_management to send payment failed email]
[Uses brevo_sms_campaigns to queue SMS follow-ups for +24h]
Recovery sequence started for 3 customers:
- [email protected], Pro plan ($49/mo), email sent
- [email protected], Business plan ($99/mo), email sent
- [email protected], Pro plan ($49/mo), email sent
- SMS follow-ups scheduled for tomorrow if not resolved
For the 2 one-time payments:
[Uses brevo_email_campaign_management to send payment retry email]
- Simple retry emails sent

Next Steps

Request early access

Share your first name and an email address or phone number. We will follow up with Tajo access details.

automatic detection
AI Assistant

Hi! Ask me anything about the docs.