Resend action

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. 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. 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. 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. 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.

Stripe ships Slack and Mailchimp. Resend is the action that fills the gap for modern transactional email.

Outbound vs Zapier

OutboundZapier
Lives inside the Stripe Dashboard
Pricing modelFrom $19/mo flat$29.99/mo + per-task fees
Idempotent on Stripe invocation id
Inline HTML and template-id modeslimited
Setup time≈3 minutes15-25 minutes
Resend Tags supported for analyticstrue
Native in the Stripe Workflow builder

Frequently asked questions

Why not use Stripe's built-in Mailchimp action?+
Mailchimp is a marketing list tool. Stripe Workflows' Mailchimp action adds a contact to a list — fine for newsletters, wrong for transactional. Receipts, dunning, refund confirmations need a transactional provider like Resend with per-email templates, tags, and deliverability tuned for one-off sends.
Can I send to multiple recipients?+
Yes. The to field accepts a comma-separated list or a JSONata expression that returns an array. CC and BCC are separate fields. For mass marketing emails use Resend's batch API or a list provider — this action is for transactional sends triggered by a Stripe event.
What about attachments — can I attach the Stripe PDF receipt?+
Yes. Set the attachments field to a JSONata expression that resolves to Stripe's hosted_invoice_url or invoice_pdf — Outbound fetches the PDF, base64-encodes it, and includes it as a Resend attachment. Adds ~200ms to delivery but keeps everything in the workflow.
Does it count against my Resend monthly limit?+
Yes. Every send is one Resend email, counted in your Resend plan. Outbound's execution count and Resend's email count are independent — you'll see two numbers in two dashboards. Both are flat-tier so neither surprises you.
Can I disable retries for transactional emails I don't want re-sent?+
Yes. The action has a retry_policy field with options of default, once, or never. Default retries on Resend 5xx. Once retries a single time. Never sends exactly once and surfaces any error to the workflow without re-attempting.