Theme

Resend setup

A bare pipe: Resend delivers, and Mimeo does everything else. Fast to set up, and the option with the fullest reporting.

On a fresh Mimeo, the setup wizard walks you through all of this in order — provider prep, the API key, webhooks, senders, domains. This page is the full Resend reference, and where to look when you change something later.

What you need

Resend verifies whole domains only — there's no per-address concept — so a verified domain covers every address on it, and that's the list Mimeo checks the from address against before every send. The other half of the setup is connecting the same domain in Mimeo under Settings → Domains & senders, which puts the links inside your email on your domain too; see Sending domains & senders.

Setting it up

  1. Verify your sending domain in Resend, and wait for its DNS to check out.
  2. In Mimeo: Settings → Provider, select Resend. Paste the API key and your webhook secret, then Save & connect.
  3. Press Verify connection. It reports which domains are verified, and refreshes the verified list that send-time domain enforcement reads.
  4. Connect your sending domain and add your senders under Settings → Domains & sendersthe walkthrough.
  5. Set up webhooks (below). Without them, suppression only ever comes from your own Mimeo.

Credentials are encrypted in your Mimeo's database. Never in a config file, never in an environment variable — so switching providers is a Settings change rather than a deploy.

Webhooks

Resend has no suppression read API at all — no endpoint to ask "who have you suppressed". Webhooks are the only way a Resend-side bounce or complaint reaches your Mimeo, so set them up.

  1. Resend dashboard → Webhooks → Add endpoint.
  2. Point it at https://your-mimeo.com/webhooks/email/resendSettings → Provider → Resend shows this exact URL with a copy button.
  3. Subscribe to email.delivered, email.bounced, email.complained and email.suppressed.
  4. Copy the signing secret (whsec_…) into Settings → Provider → Resend → Credentials → Webhook secret.

Every request is checked against that signature. Without the secret configured, webhooks are refused — a signature is a much stronger claim than a shared secret, and there's no reason to accept less from a provider that offers it.

Leave open and click tracking off

Resend can track opens and clicks per domain. Don't turn it on. Tracking is Mimeo's — one dataset, with bot filtering, tied to the exact send — and two sets of numbers that disagree is worse than one.

What Resend does, and what Mimeo does

ResendYour Mimeo
Delivers the messageDecides who gets it and when
Reports delivery, bounces and complaintsOwns the suppression list and checks it before every send
Compiles the HTML, from your own layouts
Tracks opens and clicks
Sets the RFC 8058 unsubscribe headers, and hosts the one-click target
Paces the sending

No bulk pipeline — which is fine

Resend has no broadcast API, so Mimeo can't hand a broadcast off to it. Broadcasts fan out through the ordinary paced queue instead. That's the better path anyway: guards apply, send windows apply, tracking applies, and every broadcast gets a full report.

Accepted isn't delivered

Resend silently drops mail to addresses it has suppressed region-wide, and still answers success-shaped. So a send recorded as accepted may not have gone anywhere. The email.delivered webhook is what turns acceptance into delivery in the send log — another reason to set webhooks up.

No unsubscribe push

An unsubscribe in Mimeo isn't mirrored to Resend, because Resend has no API for it. It doesn't need to be: the standing suppression guard stops the send before Resend ever hears about it.

Switching to Resend from another provider

It's a Settings change. Pick the new provider, enter its credentials, verify, save. Your people, suppression list, flows, sequences, emails and history all stay exactly where they are — none of it was ever the provider's.

Worth knowing: your local suppression list won't have been mirrored into Resend, and doesn't need to be. Your Mimeo checks its own list before every send.

See also: Sending providers · Resend API notes