Docs › Migrate from Resend

Migrate from Resend

Mailhuset and Resend are close cousins (same shape of API, same domain-auth model), so switching is quick.

1. Verify your sending domain

Add your domain under Domains and publish the SPF/DKIM records (same idea as Resend's domain verification). See Verify a sending domain. Run both providers in parallel while you cut over.

Sending through Resend's SMTP service rather than its API? Then you can skip step 2: point your app's SMTP settings at smtp.mailhuset.com (port 587 with STARTTLS) with an SMTP credential, and no code changes. SMTP is included on paid plans.

2. Swap the client

The request bodies are nearly identical. Differences to know:

ResendMailhuset
POST /emails, Authorization: Bearer re_…POST /v1/email, Authorization: Bearer mh_…
from, to, subject, html, textsame field names
mh.emails.send({...}) (SDK)mh.emails.send({...}), same shape
import { Mailhuset } from "mailhuset";
const mh = new Mailhuset(process.env.MAILHUSET_API_KEY);

await mh.emails.send({
  from: "Acme <hello@yourdomain.com>",
  to: "a@example.com",
  subject: "Hi",
  html: "<p>Hello</p>",
});

If you used Resend's SDK, our Node & Python SDKs expose the same emails.send / get / list surface, so most code changes are just the import and the key.

3. Templates, webhooks, audiences

4. Cut over

Verify sends and events in Activity, then move traffic over: ramp gradually rather than switching all volume at once, to keep your domain reputation healthy (deliverability).

Need a hand? Email support@mailhuset.com.


Need help? Email support@mailhuset.com.