Mirror DNS
Add Postscale verification, DKIM, return-path, and optional MX records while the old provider keeps sending.
Postscale keeps the modern developer experience and adds SMTP relay, full inbound routing rules, masked addresses, DMARC reporting, and migration-safe webhooks.
A direct map from Resend concepts to the Postscale API and operational model.
| Resend | Postscale | Migration note |
|---|---|---|
| emails.send | POST /v1/send | Map html/text to html_body/text_body and keep tags as Postscale tags. |
| emails.batch | POST /v1/send/batch | Batch sends remain independent per message with per-item results. |
| Receiving | Inbound Email API | Postscale delivers parsed inbound email via signed webhooks and stores messages for retrieval. |
| Templates | Postscale templates | Use template slugs or keep rendering React Email HTML in your app. |
| Webhooks | Postscale webhooks | Subscribe endpoint by endpoint and verify HMAC signatures. |
| Suppressions | Suppression API | Import hard-bounce and complaint suppressions before the first production send so provider memory carries over. |
Add Postscale verification, DKIM, return-path, and optional MX records while the old provider keeps sending.
Swap API credentials and normalize the send payload. Keep the old provider path behind a feature flag for rollback.
Preview and import suppression exports, move template HTML, then configure delivery, bounce, complaint, and inbound webhooks.
Start at 10 percent, watch bounces and complaints by ISP, then increase volume as warming limits allow.
Keep the application contract familiar while moving transport and credentials to Postscale.
import { Resend } from "resend";
const resend = new Resend(process.env.RESEND_API_KEY);
await resend.emails.send({
from: "Acme <alerts@example.com>",
to: ["user@example.com"],
subject: "Welcome",
html: "<p>Hello from Acme</p>",
tags: [{ name: "flow", value: "onboarding" }],
});await fetch("https://api.postscale.io/v1/send", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.POSTSCALE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "Acme <alerts@example.com>",
to: ["user@example.com"],
subject: "Welcome",
html_body: "<p>Hello from Acme</p>",
tags: ["onboarding"],
}),
});Teams usually move when they need SMTP relay, richer inbound routing, masked addresses, DMARC reporting, or EU/EEA-hosted primary service data in the same platform.
The flow maps directly, but Postscale can route through aliases and inbound rules before dispatching a signed webhook.
Yes. Render HTML in your app exactly as before, or move templates into Postscale when you want template preview and API-managed reuse.
Export available suppression rows, map hard bounces and spam complaints conservatively, and import them through /dashboard/suppressions before cutover.