SendGrid → Quathos Mailer

Migrate from SendGrid: swap the base URL and the key.

Point your existing code at us — the /v3/mail/send payload you already send is accepted as-is. Bring your suppression list and templates with a read-only key, and you can be sending the same afternoon.

No credit card — 200 emails/day free for 100 days.

1

Point your code at us

Swap the base URL and the token. Our /v3/mail/send compatibility endpoint accepts the payload you already build — no rewrite.

2

Bring your suppression list

Paste a read-only API key from your old account. We import bounces, complaints, unsubscribes and blocks — the part that protects your reputation.

3

Bring your templates

Handlebars renders as-is — {{#if}}, {{#each}}, {{this.x}} and friends. Anything outside that subset arrives as a draft, never published half-converted.

One thing stays manual: your sender

Domain reputation doesn’t transfer between providers, so this step is never automatic — anywhere. Verify your sending domain in Quathos Mailer (SPF, DKIM, DMARC), guided record by record, before your first live send.

Drop-in compatible

Two lines. That’s the migration.

Your integration already builds this request. Point it here and keep going.

same request body, two lines
- https://api.sendgrid.com/v3/mail/send+ https://api.qsendyx.com/v3/mail/send - Authorization: Bearer SG.••••••••••••+ Authorization: Bearer qmx_live_••••••••

Same 202 response, the same error envelope, the same header names. What we don’t honor field-by-field is rejected with a 4xx that says what to do instead — never accepted and silently dropped.

From zero to sent in three steps

1

Point your code at us

Swap the base URL and the token. Our /v3/mail/send compatibility endpoint accepts the payload you already build — no rewrite.

2

Bring your suppression list

Paste a read-only API key from your old account. We import bounces, complaints, unsubscribes and blocks — the part that protects your reputation.

3

Bring your templates

Handlebars renders as-is — {{#if}}, {{#each}}, {{this.x}} and friends. Anything outside that subset arrives as a draft, never published half-converted.

Field by field

Nothing is silently dropped

Most of your payload just works. What doesn’t is rejected with a 4xx that tells you what to do instead — never accepted and ignored.

Honored

personalizations dynamic_template_data → variables categories → tags custom_args → metadata tracking_settings (click/open) send_at scheduling

Rejected — with a reason

cc / bcc attachments asm (unsubscribe groups) mail_settings.bypass_*

The same rule — 4xx over silent drop — applies to every field we don’t list here.

Read the full field-by-field matrix in the docs →

Before you switch

Questions that always come up

Do I need to rewrite my integration?

In most cases, no. Our /v3/mail/send compatibility endpoint accepts the payload you already build — same headers, same fields for what’s honored. Migrating is often just pointing the base URL and the token at us.

What happens to my suppression list and sender reputation?

Your suppression list — bounces, complaints, unsubscribes, blocks — is exactly what protects the reputation you’re moving. Import it with a read-only key before your first live send, so day one doesn’t mean emailing everyone who already unsubscribed.

My templates use Handlebars — do they need to be rewritten?

No — {{#if}}, {{#each}}, {{this.x}} and the common Handlebars constructs render as-is. Anything outside that subset imports as a draft with the reason, so nothing publishes half-converted.

Do I need to re-verify my sending domain?

Yes — domain authentication (SPF, DKIM, DMARC) is tied to reputation and doesn’t transfer between providers. It’s the one step that isn’t automatic, and it’s guided record by record in the dashboard.

Your migration fits in an afternoon

Start free — 200 emails a day for 100 days. No credit card, no sales call.

Start migrating