Switching guide
Moving from SendGrid to getread
Your SendGrid account keeps sending while you set things up, so there’s no rush. Here’s what comes with you, and how to move it one step at a time.
What comes with you
- Your domain. Authenticate it with getread alongside your SendGrid records.
- Your contacts and suppressions. Export them as CSV files and we’ll help you bring them in.
- Your templates. Paste the HTML from your dynamic templates into saved getread templates.
- Your webhooks. Point getread’s delivery events at an endpoint in your app.
One thing to know before you start: getread sends over an HTTPS API, and there’s no SMTP relay. If your app sends through smtp.sendgrid.net, you’ll swap that for one API request. There’s no SDK to install either. Any language that can make an HTTPS request can send with getread, so a few lines replace the SendGrid client library.
1. Verify your domain
Add your sending domain in getread. Domain setup walks you through DKIM, SPF and DMARC, shows the exact records for your domain and checks them for you.
- Your SendGrid records (the
s1._domainkeyands2._domainkeyCNAMEs, and theemsubdomain) can stay where they are. getread’s DKIM keys live under their own names, so both providers can sign your email at the same time. - A domain only ever has one DMARC record. If you already have one, keep your policy and add getread’s reporting address to its
rualist.
2. Bring your contacts
If you use Marketing Campaigns, export your contacts as a CSV from the Contacts area. Email, name and tags are what we bring over, and we’ll help you import them.
Campaigns only go to contacts with a recorded consent basis, which is how and when they agreed to hear from you. If you know how people joined your list, such as a signup form or a checkbox at checkout, bring that along too.
Export your suppressions as well: global unsubscribes, group unsubscribes, bounces and spam reports. That way, people who said no stay that way.
3. Rebuild or paste your templates
SendGrid dynamic templates use Handlebars. getread templates use simple variables in double braces, like {{first_name}} or {{order.number}}, filled in from the attributes you send.
- Copy the HTML from each dynamic template into a saved getread template. Plain variables usually carry over as they are.
- Variables don’t run logic, so
{{#if}}blocks and{{#each}}loops won’t work. Work those parts out in your app and pass the finished values, or render the whole email yourself and send it ashtml. - Would you rather keep templates in your code? Send
htmlandtextdirectly instead of atemplate_id.
4. Point your send call at getread
Create an API key in getread with permission to send. Then swap your call to SendGrid’s /v3/mail/send for one request to getread:
curl https://app.getread.com/api/v1/transactional/send \
-H "Authorization: Bearer $GETREAD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042-receipt" \
-d '{
"from_email": "[email protected]",
"from_name": "Your brand",
"to": "[email protected]",
"subject": "Your receipt",
"html": "<p>Thanks for your order, Maria.</p>",
"text": "Thanks for your order, Maria."
}'
The Idempotency-Key makes retries safe. Send the same key with the same request, and we return the original message instead of sending it twice.
Here’s how the fields line up:
SendGrid mail/send |
getread transactional/send |
|---|---|
personalizations[].to[].email |
to, one recipient per request |
from.email, from.name |
from_email, from_name |
subject |
subject |
content (text/html, text/plain) |
html, text |
reply_to.email |
reply_to |
template_id, dynamic_template_data |
template_id, attributes |
custom_args |
tags |
When you send a template_id, include the subject too. It can use the same variables as the template.
5. Reconnect your webhooks
SendGrid’s Event Webhook posts events like bounce, spamreport, open and click to one URL. In getread, add a webhook endpoint and choose the events you want, such as email.bounced, email.complained and email.opened, plus email.clicked for campaigns. getread doesn’t track clicks in transactional email. Each endpoint gets its own signing secret, so your handler can check that an event really came from getread.
Every event also shows up in Mailroom, so you can see what happened to any message without digging through logs.
6. Run both side by side, then switch
There’s no need to move everything at once. Start with one kind of email, maybe password resets, and watch it arrive in Mailroom. When you’re happy, move the rest. Keep your SendGrid account until everything has moved and the last webhooks have come in, then remove its DNS records whenever you like.
Want a hand with any of this? Talk to us, and a real person will help you plan the move.
Keep exploring
Questions about moving from SendGrid
Can I keep sending through SendGrid's SMTP relay settings?
smtp.sendgrid.net for one HTTPS request to the transactional send API. It’s usually a small change, and you get safe retries with an Idempotency-Key.Is there a getread library to replace the SendGrid SDK?
Will my Handlebars templates work?
{{first_name}} carry over. Conditions and loops don’t, so work those parts out in your app and pass the finished values, or send the rendered HTML.Do I have to move Marketing Campaigns and transactional email together?
What happens to my SendGrid suppressions?
Ready when you are.
Set up getread alongside SendGrid, and switch whenever it feels right.
[TRIAL TERMS]