Start here
Migrate from Resend
Map Resend HTTP sends to SendHQ and account for the compatibility boundaries before cutover.
Compatibility boundary
SendHQ accepts the common Resend-style JSON fields for direct HTTP sends, but it is not a drop-in replacement for the Resend SDK. Point your own server-side HTTP adapter at /api/v1/emails; do not assume an SDK with a hard-coded Resend host can be reconfigured.
Field mapping
from, to, cc, bcc, subject, html, text, reply_to, and safe custom headers map directly. SendHQ also accepts message_class, hosted template references, draft_id, and reply/thread fields. Resend-specific React payloads, inline attachment arrays, tags, audiences, broadcasts, and scheduled-send fields are not accepted equivalents.
Attachments and templates
Upload attachments to a SendHQ draft, then send with draft_id. Hosted templates are SendHQ resources with published versions and typed data; migrate template IDs and rendering calls explicitly rather than copying a provider template identifier.
Retries
Generate one stable Idempotency-Key per logical send. Retry the identical JSON payload with that key. If a subject, body, recipient, header, or template data changes, use a new key; otherwise SendHQ returns 409. A replayed stored response includes Idempotent-Replayed: true.
Cutover checklist
- Verify every From domain and exact sender address you will use.
- Send controlled text and HTML messages to an owned inbox.
- Confirm provider acceptance separately from delivery events.
- Exercise
409,422,423,429, and5xxhandling. - Keep the previous provider adapter available until both transactional and lifecycle paths pass.