Send Stripe emails with Resend, fully branded
Branded transactional emails, custom dunning, onboarding sequences — fired from Stripe Workflows, delivered by Resend. The integration Stripe will not ship.
Free trial · From $19/mo · No credit card required
The problem
Out of the box, Stripe Workflows ships a Slack action and a Mailchimp action. That's it for email. If you want to send stripe emails with resend — your actual transactional provider with your actual templates and your actual domain auth — you're back to webhooks, a hosted handler, and the same retry headaches as everything else. Resend is what indie devs and modern SaaS use. Mailchimp is not what dunning looks like in 2026.
The Resend action closes the gap. You connect a Resend API key, pick a template id or write inline HTML with JSONata, set From / Reply-To / Tags, and the email fires on any Stripe event you can build a workflow on. Failed payment three days in a row? Send the third-attempt dunning email with a recover link. New subscription? Send the welcome. Refund? Send the confirmation with the refund timeline. Idempotent. Branded. No middleman.
How send stripe emails with resend works
- 1
Add a Resend API key
Generate a restricted API key in Resend with send permission, paste it into the action config. Outbound stores it encrypted per account. One key works across as many workflows as you want. - 2
Pick a template or write inline HTML
Reference an existing Resend template by id and pass variables, or write inline HTML directly in the action with JSONata-templated fields. From, Reply-To, Tags, and CC/BCC are all configurable. - 3
Wire it to a Stripe event
Add the Resend step to any workflow. invoice.paid for receipts, invoice.payment_failed for dunning, customer.subscription.created for welcomes. The Stripe event provides all the templating data. - 4
Track deliveries in two places
The Outbound execution log shows which Stripe invocation triggered which Resend send. Resend's own dashboard shows open / click / bounce. Combine them to debug delivery without leaving either tool.
{
"trigger": "invoice.payment_failed",
"action": "outbound.resend",
"config": {
"api_key": "${RESEND_API_KEY}",
"from": "billing@acme.com",
"to": "{{customer.email}}",
"reply_to": "support@acme.com",
"subject": "Payment issue on your Acme subscription",
"template_id": "tmpl_dunning_attempt_{{attempt_count}}",
"variables": {
"customer_name": "{{customer.name}}",
"amount": "{{invoice.amount_due / 100}}",
"update_url": "{{hosted_invoice_url}}"
},
"tags": [{"name": "category", "value": "dunning"}]
}
}Example workflow configuration
Screenshot of the Resend action panel in the Stripe Workflow builder. Shows an API key input with masked characters, From and Reply-To fields, a template id picker pulling templates from the connected Resend account, a variables grid, and a tags section. A connection-healthy indicator shows the Resend account is reachable.
Outbound vs Zapier
| Outbound | Zapier | |
|---|---|---|
| Lives inside the Stripe Dashboard | — | |
| Pricing model | From $19/mo flat | $29.99/mo + per-task fees |
| Idempotent on Stripe invocation id | — | |
| Inline HTML and template-id modes | limited | |
| Setup time | ≈3 minutes | 15-25 minutes |
| Resend Tags supported for analytics | true | |
| Native in the Stripe Workflow builder | — |
Frequently asked questions
Why not use Stripe's built-in Mailchimp action?+
Can I send to multiple recipients?+
What about attachments — can I attach the Stripe PDF receipt?+
Does it count against my Resend monthly limit?+
Can I disable retries for transactional emails I don't want re-sent?+
Related integrations
Stripe to your own Postgres
Pair Resend with a Postgres write so every transactional email is logged against the customer record.
Create Linear issues from Stripe
Failed payment hits the customer with a Resend email and your team with a Linear issue.
Trigger Stripe from any HTTPS POST
Coming with Inbound: a button in a Resend email could one day re-trigger a workflow.