Transaktionel email
Sådan skifter du fra SendGrid
Flyt transaktionel email uden at tabe en eneste kvittering: suppression-grupper over først, parallel domæne-autentificering, v3 mail/send-diffen og event-webhook-remapping.
En halv dags kode; DNS + en forsigtig cutover sætter tempoet (cirka en uge)
| SendGrid | WeZend |
|---|---|
| POST /v3/mail/send | POST /v1/messages/send (channel: email) |
| API key (Bearer) | X-API-Key-header |
| Domain authentication | Email-domæner + live DNS-verify |
| Dynamic templates ({{handlebars}}) | Skabeloner + variabler |
| Suppression groups + global suppressions | Suppressionsliste + præference-emner |
| Event Webhook | Leverings-webhooks (signerede) |
| Marketing Campaigns | Kampagner + journeys |
Indsatsen, sagt ligeud
Transaktionel email er nådesløs: en tabt password-nulstilling er en supportsag, en tabt kvittering er et juridisk problem. Så denne guide er bygget om ét princip — begge leverandører forbliver fuldt operationelle, indtil WeZend har leveret jeres rigtige trafik i dage, ikke minutter.
Trin 1 — Suppressioner og bounces først
Eksportér SendGrids suppressionsdata: globale afmeldinger, afmeldinger pr. gruppe, bounces, spamrapporter og ugyldige adresser (alt kan downloades under Suppressions i SendGrid-konsollen, eller via deres API). Importér det hele i WeZend (Målgruppe → Suppressioner, POST /v1/account/unsubscribes/api/import). Bouncede og klagende adresser må aldrig genforsøges fra en frisk platform — det er sådan, nye domæner bliver brændt af.
Bruger I suppression-grupper (nyhedsbrev vs. produktnyt), så genskab dem som præferencecenter-emner — samme koncept, og abonnenterne styrer dem på én hostet side.
Trin 2 — Autentificér jeres domæne parallelt
Tilføj jeres domæne under Indstillinger → Email-domæner. WeZends DKIM-selector sameksisterer med SendGrids — I fjerner ikke SendGrids DNS-records endnu. Begge platforme står fuldt autentificeret side om side, og det er dét, der gør en gradvis, reversibel cutover mulig. Live DNS-checkeren bekræfter hver record.
Trin 3 — Kode-diffen
SendGrid:
await fetch("https://api.sendgrid.com/v3/mail/send", {
method: "POST",
headers: { Authorization: `Bearer ${SENDGRID_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
personalizations: [{ to: [{ email: "anna@example.com" }], dynamic_template_data: { name: "Anna" } }],
from: { email: "receipts@mail.acme.com" },
template_id: "d-abc123",
}),
});
WeZend — fladere body, samme idé:
await fetch("https://api.wezend.com/v1/messages/send", {
method: "POST",
headers: { "X-API-Key": process.env.WEZEND_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
to: "anna@example.com",
channel: "email",
sender: "receipts@mail.acme.com",
template_id: "tpl_kvittering",
variables: { name: "Anna" },
category: "transactional",
webhook_url: "https://api.yourapp.com/email-events",
}),
});
Portér jeres dynamic templates først: kopiér hver skabelons HTML ind i en WeZend-skabelon — Handlebars-{{name}}-syntaksen følger næsten uændret med (conditionals bliver til skabelon-defaults eller separate skabeloner; de fleste transaktionelle skabeloner bruger ingen).
Trin 4 — Remap Event Webhooken
SendGrids Event Webhook-events mapper til WeZends leverings-webhooks: processed→queued, delivered→delivered, bounce/dropped→failed (årsag vedhæftet), open→opened, click→clicked, spamreport→complaint, unsubscribe→unsubscribed. Verificér X-WeZend-Signature-headeren i stedet for SendGrids signed-webhook-ECDSA — webhook-doc'en har tjekket på fem linjer. Bounces og klager føder desuden suppressionslisten automatisk, så jeres eget bogholderi kan skrumpe.
Trin 5 — Cut over pr. mailstrøm
Migrér én strøm ad gangen, lavest risiko først: interne notifikationer → brugervendte men genoprettelige (digests) → kritiske (kvitteringer, password-nulstillinger). Sammenlign ved hvert trin leverings- og bounce-rater i deliverability-rapporten mod jeres SendGrid-baseline. Transaktionel volumen varmer meget hurtigere op end marketingvolumen — modtagerne forventer og åbner disse mails — så en uges faseopdelt cutover er typisk nok.
Hold SendGrid i live en hel uge efter 100% cutover, fjern så deres DNS-records og luk.
Bruger I også Marketing Campaigns
Følg Mailchimp-playbooken for marketing-siden: kontakter i den sikre rækkefølge, kampagner som kampagner, automatiseringer som journeys. Den behagelige overraskelse: transaktionelt og marketing deler derefter én suppressionsliste, ét domæne-omdømme og én saldo.
Go-live-tjekliste
- Alle SendGrid-suppressioner eksporteret (globale, grupper, bounces, spamrapporter) og importeret
- Suppression-grupper genskabt som præferencecenter-emner
- Domæne autentificeret i WeZend — SendGrids DNS-records ikke fjernet
- Dynamic templates porteret; variabler render med defaults
- Event-webhook-forbruger remappet og signatur-verificeret
- Strømme flyttet med lavest risiko først, rater sammenlignet pr. trin
- SendGrid holdt i live en uge efter 100%, derefter DNS ryddet op
Ofte stillede spørgsmål om skiftet fra SendGrid
Understøtter I dedikerede IP'er ligesom SendGrid?
For de fleste afsendere slår velplejet delt infrastruktur plus jeres eget autentificerede domæne en forsømt dedikeret IP — det er domæne-omdømmet, indbakkeudbyderne vægter højest. Berettiger jeres volumen reelt dedikeret afsendelsesinfrastruktur, så kontakt os, og vi sætter det op som del af onboardingen.
Vores kvitteringer må ikke fejle i bare en time. Er det realistisk?
Ja — det er præcis dét, cutover strøm-for-strøm med begge domæner autentificeret parallelt er til. Der findes intet øjeblik, hvor den gamle vej er slukket og den nye ubevist: du flytter en strøm, ser den levere, og flytter så den næste. Rollback er en konfigurationsændring, ikke en DNS-ventetid.
Kom gratis i gang på minutter
- Intet kreditkort
- EU-datalagring
- 6 kanaler, ét API
- GDPR indbygget
Én platform. Hver eneste kundeinteraktion.
Erstat dit kludetæppe af messaging-API'er, CDP og automatiseringsværktøjer med én engagement-platform bygget til skala.
Intet kreditkort · EU-datalagring · 99,99 % oppetids-SLA