Deliverability
Sending email isn’t enough. Inboxing is.
Mailbox providers (Gmail, Outlook, Yahoo, Apple Mail, etc.) decide whether your message lands in inbox, junk, or gets refused based on a stack of signals — domain authentication, sender reputation, content patterns, recipient engagement.
This page is the field guide.
The 90% rule
Most deliverability problems come from one of three causes:
- Authentication is broken — SPF/DKIM/DMARC misconfigured → provider can’t verify the sender → marks as spam.
- List quality is bad — too many bounces (sending to dead addresses) or too many complaints (recipients didn’t expect the email).
- Content tripped a spam filter — links in the body to blocklisted domains, misleading subject lines, missing plaintext alternative.
Get authentication right + send to opt-in lists + don’t write spammy copy and you’ll inbox.
SPF / DKIM / DMARC
The three DNS-level authentication mechanisms every modern inbox provider expects.
SPF (Sender Policy Framework)
A TXT record on your domain that lists IPs / providers authorized to send mail “from” your domain. We give you:
TXT yourcompany.com "v=spf1 include:_spf.mail.splashifypro.com ~all"The include: mechanism delegates SPF lookup to our published
record, so when our IPs change you don’t have to update yours.
DKIM (DomainKeys Identified Mail)
A cryptographic signature in the email header that lets the receiver verify the message wasn’t tampered with in transit. We publish the public key under our domain and you publish a CNAME that points at it:
CNAME splashify._domainkey.yourcompany.com splashify._domainkey.mail.splashifypro.comThis way you don’t manage private keys + we can rotate the key periodically without coordinating with every customer.
DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC sits on top of SPF + DKIM. It tells the receiver what to do with unauthenticated mail claiming to be from your domain:
TXT _dmarc.yourcompany.com "v=DMARC1; p=quarantine; rua=mailto:dmarc@splashifypro.com"| Policy | Behaviour |
|---|---|
p=none | Monitor only — receivers report but don’t act |
p=quarantine | Send to spam (recommended) |
p=reject | Refuse outright (strongest, but risky if any legitimate sender isn’t authenticated) |
The rua= address receives aggregate reports. We provide a public
endpoint at dmarc@splashifypro.com so you don’t need to set up
your own.
Verify all three pass
curl https://apis.splashifypro.com/api/v1/partner/email/identities/DOMAIN/yourcompany.com \
-H "Authorization: Bearer $SPLASHIFY_API_KEY"Response includes per-record pass: true/false:
{
"dns_records": {
"spf": { "pass": true, "found": "v=spf1 include:_spf.mail.splashifypro.com ~all" },
"dkim": { "pass": true, "found": "CNAME splashify._domainkey.mail.splashifypro.com" },
"dmarc": { "pass": true, "found": "v=DMARC1; p=quarantine; rua=mailto:..." }
}
}List hygiene
Bounces and complaints are the #2 cause of deliverability decline.
Acquire opt-in addresses only
Single opt-in (email entered on a form, no confirmation step) is the minimum. Double opt-in (form + confirmation email + click the link) is the gold standard — drops bounce rates ~10x.
Don’t:
- Buy lists
- Scrape websites
- Import a list of “all my contacts” from a co-founder’s old job
- Email people who gave you their card at a conference (without saying “we’ll add you to our newsletter”)
Bounce + complaint handling
Both are auto-managed by the suppression list. Hard bounces and complaints get added immediately, and we never attempt to send to suppressed addresses.
Sync to your application:
Bouncewebhook event → mark useremail_bounced=truein your DBComplaintwebhook event → mark useremail_complained=truein your DB
Skip these users from any future outbound — your suppression list is mirrored at our level, but having it locally lets you also skip them from marketing campaigns + product onboarding flows.
Engagement-based pruning
Mailbox providers weight engagement heavily. If a recipient hasn’t opened or clicked any of your emails in 6 months, sending to them hurts your reputation. Drop them from active campaigns until they re-engage (e.g. via a “we miss you” prompt).
Content best practices
| Do | Don’t |
|---|---|
Plain From: (hello@yourcompany.com) | Display-name-only fakery (Hello <pretend@gmail.com>) |
Clear subject (no RE: / FWD: if not actually a reply) | All-caps, all-emojis, money symbols |
| Both HTML + plaintext body | HTML only — spam filters penalize |
| Unsubscribe link in marketing email | Marketing email without unsubscribe (illegal in most jurisdictions) |
| Image alt text | Image-only emails (heavy spam signal) |
| Concise body | 50% link / 50% text ratio |
We auto-generate plaintext alternative from your HTML if you don’t provide one. We also auto-inject the unsubscribe link if your template doesn’t include one (CAN-SPAM compliance).
Sender reputation
We track reputation at the account level. Bounce rate + complaint rate over rolling 14 days. Above-threshold rates trigger automatic warnings + eventual auto-pause.
The platform’s sending infrastructure is well-warmed and has good standing across major mailbox providers. You inherit that reputation when you start sending — but bad behaviour from your account hurts the broader platform reputation, which is why we’re strict about list quality.
Subdomain strategy
For organisations sending high volume of mixed mail types, use subdomains to isolate reputation:
| Domain | Use |
|---|---|
mail.acme.com | Transactional (signup, receipts, password reset) |
news.acme.com | Marketing campaigns / newsletters |
notify.acme.com | App notifications (high frequency, low engagement) |
Each gets its own verified identity. Bounces / complaints on
news.acme.com don’t drag down mail.acme.com’s reputation.