Add Postscale DNS records
Add Postscale verification, DKIM, return-path, and optional MX records while the old provider keeps sending.
Map sending calls, templates, receiving routes, and webhooks to Postscale before moving traffic.
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 suppressions before sending so blocked addresses remain excluded. |
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.
Compare the existing send request with its Postscale equivalent.
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"],
}),
});Both providers offer API/SMTP sending and receiving. Evaluate Postscale for its EU operator, EU/EEA-hosted primary service data, inbound routing rules, masked addresses, and DMARC reporting.
The workflow is similar, but payloads, routing, and signature verification differ. Configure accepting aliases or catch-all and inbound rules, then test your handler with Postscale events.
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.