Deliverability
Get your emails into the inbox, not the spam folder. SPF, DKIM, DMARC, and content best practices.
Deliverability is the difference between an email arriving in the inbox and arriving in spam (or nowhere at all). EmailBuilder produces the template; your ESP and your domain authentication determine where it lands. This page covers what you need to set up.
Authenticate your domain
The three records every domain needs to send mail reliably:
SPF (Sender Policy Framework)
A TXT record on your domain listing who is allowed to send mail as you.
Example for SendGrid:
@ TXT "v=spf1 include:sendgrid.net ~all"
The exact include: value comes from your ESP. Most providers publish theirs in their setup docs.
One SPF record per domain. If you already have one (e.g. for Google Workspace), append additional providers to the same record — don't add a second one.
DKIM (DomainKeys Identified Mail)
DKIM adds a cryptographic signature to every outgoing message. Your ESP signs with a private key it holds; recipients verify against a public key you publish in DNS.
Setup is ESP-specific — every provider gives you DNS records to add:
- SendGrid: 3 CNAMEs (
em.yourdomain.com,s1._domainkey.yourdomain.com,s2._domainkey.yourdomain.com). - AWS SES: 3 CNAMEs from the SES verified-identity setup.
- Mailgun: 1 TXT + 1 CNAME per domain.
- Mailchimp: handled automatically for
*.mcsv.netsending; for custom domains, follow their Authenticated Domain wizard.
DKIM is required for inbox delivery at Gmail and other major providers. Without DKIM, your mail is flagged as unauthenticated. Most ESPs refuse to deliver without it.
DMARC
DMARC tells receiving servers what to do when SPF or DKIM fail. Start permissive and tighten over time:
_dmarc TXT "v=DMARC1; p=none; rua=mailto:[email protected]"
p=none only monitors. After a few weeks of clean reports, move to p=quarantine and eventually p=reject.
Required by Gmail and Yahoo as of 2024 for senders who send more than 5,000 messages/day to their users. Set it up regardless of volume.
Verify before you send a campaign
Before any campaign send:
- Generate a virtual preview. Click Generate Preview on the email — EmailBuilder renders it on 13 device profiles (iPhones, iPads, Android phones and tablets) and gives you screenshots of each. Catches layout issues at viewport sizes you don't have physical devices for. See Virtual previews.
- Send a test to yourself. Click Send Test in the editor — this delivers a real email to your inbox. Open it in Gmail, Outlook, Yahoo, and mobile. Verify rendering and that it lands in the inbox (not spam). Virtual previews show device layout; real test sends show client-specific rendering quirks.
- Check your authentication. Tools like MXToolbox SuperTool report SPF/DKIM/DMARC status for your domain.
- Run a preview through a checker. Tools like Mail Tester score your message and identify common issues (no plaintext part, spam-triggering words, broken HTML).
Avoid common content pitfalls
| Issue | Why it matters | Fix |
|---|---|---|
| All-image emails | Spam filters can't read intent; many clients block images by default. | Always include real text content. |
| Missing alt text | Hurts accessibility and looks broken when images are blocked. | Use the alt-text generator in the image format toolbar. |
| Very large emails (>100 KB HTML) | Gmail clips messages and shows "View entire message" — drops engagement. | Compress images. Move long body content to a linked web version. |
| URL shorteners | Many shorteners are blocklisted. | Use your own domain or your ESP's tracking domain. |
| Unsubscribe missing | Required by CAN-SPAM, GDPR, and Gmail/Yahoo's 2024 rules. | EmailBuilder's branding settings include unsubscribeLink — add it to your footer template. |
Manage your list
A clean list is the single biggest deliverability lever.
- Remove hard bounces. Most ESPs do this automatically — don't override that behaviour.
- Honor unsubscribes immediately. EmailBuilder doesn't auto-block previously unsubscribed addresses; your ESP does. Treat your ESP's suppression list as authoritative.
- Don't email people who haven't opted in. Cold lists tank your sender reputation. The fix is slow re-engagement of older subscribers, not buying lists.
- Re-engagement campaigns. If a recipient hasn't opened anything for 6+ months, send a "still want to hear from us?" — and remove non-responders.
Bounces and complaints
EmailBuilder receives bounce events from AWS SES via webhook and logs them, with hard bounces (permanent failures) added to a local suppression log. This log is observational — the local list isn't currently enforced at send time, so your ESP's suppression handling is what actually protects your sender reputation.
Practically: trust your ESP to drop bounces and complaints. EmailBuilder's bounce log is a backup record for debugging, not a delivery guard.
For SendGrid, the connection page surfaces suppression groups — assign sends to a group so unsubscribes flow into a category (e.g. "promotional" vs "transactional"). Recipients can opt out of one without losing all email from you.
When deliverability drops
Symptoms of trouble:
- Opens drop below your usual baseline.
- Sends bounce more than 2–5% (normal is < 1%).
- Recipients say "I never got it" and it's not in their spam folder either — likely blocked at the gateway.
Investigation:
- Check the send status in EmailBuilder. Did it dispatch successfully?
- Check the ESP's logs. Most ESPs have an Activity Feed showing per-recipient delivery/bounce/deferral.
- Pull DMARC reports. Aggregate reports go to the address in your
rua=tag — they show which receivers are rejecting and why. - Reduce volume and warm up. New sending domains need to start slow (a few hundred per day) and ramp up over weeks. A sudden volume spike from a fresh domain is the #1 trigger for greylisting.
Quick checklist
- SPF record on the sending domain
- DKIM CNAMEs from your ESP
- DMARC record (
p=noneat minimum) - From-address verified with the ESP
- Unsubscribe link in the footer
- Real plaintext content, not all images
- List is opted-in and recently active
- Test sends to Gmail + Outlook + Yahoo before campaigns