Deliverability Guide

Email Deliverability: The Complete Guide for Developers (2026)

Why your emails end up in spam, how inbox providers actually score senders, and the exact steps to reach the inbox consistently — from DNS authentication to list hygiene and IP warming.

15 min read·Updated March 2026

TL;DR — the five pillars of deliverability

Authentication (SPF + DKIM + DMARC), sender reputation, content quality, list hygiene, and bounce/complaint handling. Skip any one of them and you'll have deliverability problems. Get all five right and the inbox is the default.

Email deliverability is the measure of how often your emails actually reach the inbox — not just whether they're accepted by the receiving mail server. An email can be "delivered" (not bounced) and still land in spam. True deliverability is about inbox placement.

The challenge is that inbox providers like Gmail, Outlook, and Apple Mail never publish their exact spam-scoring algorithms. What they do publish — and enforce — are authentication standards, sender reputation signals, and content guidelines. This guide covers all of them.

1. How inbox providers decide where your email goes

Every major inbox provider runs incoming email through a scoring pipeline before placing it in the inbox, spam folder, or rejecting it outright. The exact weights differ, but the signal categories are consistent across Gmail, Outlook, and Yahoo.

Authentication signals

Does the message pass SPF, DKIM, and DMARC? Failure here is an immediate red flag — and with Gmail's 2024 bulk sender requirements, it's a hard rejection for high-volume senders.

Sender reputation

How have other emails from this IP and domain behaved? High spam complaint rates, many unknowns, and sudden volume spikes all hurt reputation score.

Engagement history

Do recipients open, click, and reply? Gmail in particular uses engagement as a strong positive signal. Low engagement over time can push you to spam.

Content analysis

Spam-trigger words, suspicious links, poor text-to-HTML ratio, and missing unsubscribe links are all content signals that increase spam scoring.

The important thing to understand: these signals are cumulative and historical. One bad campaign doesn't destroy your deliverability, but sustained poor signals — high complaint rates, no engagement — will drag your domain and IP reputation down over weeks. Rebuilding takes time.

2. Email authentication: SPF, DKIM, DMARC

Authentication is the foundation. Before inbox providers even look at reputation or content, they check whether you're legitimately who you claim to be. The three protocols that handle this are SPF, DKIM, and DMARC.

Quick summary

  • SPFA DNS TXT record listing which servers are allowed to send email from your domain. Checking happens at the envelope level (the MAIL FROM domain, not the visible From header).
  • DKIMA cryptographic signature in the email headers, verifiable against a public key in your DNS. Proves the email wasn't tampered with in transit and that it originated from your infrastructure.
  • DMARCA policy record that ties SPF and DKIM together. It tells receivers what to do when authentication fails — none (just monitor), quarantine (spam), or reject (block). It also sends aggregate reports back to you.

For a minimal SPF record, you're declaring which sending services are authorized. If you're using tinysend plus Google Workspace:

# DNS TXT record at yourdomain.com

v=spf1 include:_spf.tinysend.co include:_spf.google.com ~all

A minimal DMARC record to start monitoring (not yet enforcing):

# DNS TXT record at _dmarc.yourdomain.com

v=DMARC1; p=none; rua=mailto:[email protected]

Once you've reviewed DMARC reports for a few weeks and confirmed legitimate traffic is authenticating correctly, move to enforcement:

# Enforcement — reject unauthenticated mail

v=DMARC1; p=reject; rua=mailto:[email protected]; pct=100

Go deeper

For exact DNS record formats, DKIM key generation, BIMI setup, and a full troubleshooting section, see the DKIM, SPF, and DMARC: Complete Email Authentication Setup Guide.

3. Sender reputation: IPs, domains, and engagement

Authentication proves you are who you say you are. Reputation is the track record of how the emails from that identity have behaved. Inbox providers maintain reputation scores at two levels:

IP reputation

The sending IP's history of spam complaints, bounce rates, and blacklist appearances. When you start with a new IP — whether from a new ESP or a dedicated IP you've provisioned — it has no reputation at all. That's actually worse than having a good reputation. Mail from new, unknown IPs is treated with suspicion.

Shared IPs (used by most email services by default) mean your inbox placement is partially affected by other senders on the same IP pool. Reputable ESPs actively manage shared IPs and remove bad actors, but it's still a dependency you don't fully control.

Domain reputation

Gmail has shifted heavily toward domain reputation since around 2022. Your sending domain (the domain in the DKIM signature and From header) accumulates its own reputation score independent of the sending IP. This is good news — you can move between ESPs without losing your domain reputation, as long as you bring your DKIM-signing domain with you.

The three factors that most influence domain reputation:

  • Spam complaint rate — Gmail's threshold is <0.10% for warnings, <0.30% for delivery problems. Yahoo is similar. This is measured via feedback loops (FBLs) that ESPs register for.
  • Engagement rate — Opens, clicks, and forwards signal that recipients want your email. Low engagement over time tells inbox providers your emails aren't valued.
  • Consistency — Sudden volume spikes (10x your normal send volume overnight) trigger spam filters even if content is clean. Consistent sending volume builds trust.

4. IP and domain warming

Whether you're on a new dedicated IP or starting to send from a new domain, you need to build reputation gradually. Inbox providers treat new senders cautiously — they haven't seen your traffic before, so they're conservative with inbox placement until you establish a track record.

The warming principle: start with small volumes to your most-engaged recipients, then increase volume week over week. Your most engaged recipients will open, click, and not mark as spam — which generates the positive signals that build reputation.

Typical warming schedule for a new dedicated IP

WeekDaily volumeSegment
Week 1200–500/dayMost engaged (opened in last 30 days)
Week 21,000–2,000/dayEngaged (opened in last 90 days)
Week 35,000–10,000/dayActive subscribers (last 6 months)
Week 420,000–50,000/dayFull subscriber list (suppress non-openers)
Week 5+Full volumeNormal sending cadence

For domain warming (new sending domain, shared IPs), the same principle applies but with shorter timeframes — 2–3 weeks is often enough if you're sending clean, engaged traffic.

Key warning signs during warming: bounce rate above 5%, spam complaint rate above 0.1%, or inbox providers starting to defer your messages (temporarily rejecting with a 4xx code). If you see these, pause and investigate before continuing to ramp.

5. List hygiene: the hidden deliverability killer

Bad list hygiene is responsible for more deliverability problems than almost any other factor, and it's one of the least obvious. The issue is simple: every email you send to an address that doesn't exist, hasn't engaged in years, or is a spam trap hurts your reputation.

Hard bounces

A hard bounce means the address is permanently invalid — the domain doesn't exist, the mailbox doesn't exist, or the server has permanently rejected the message. You must suppress hard-bounced addresses immediately. Continuing to send to them signals to inbox providers that you're not maintaining your list.

# Pseudocode — suppress hard bounces in your webhook handler

// tinysend sends a webhook when a bounce is recorded
POST /webhooks/email

{
  "event": "bounce",
  "type": "hard",           // vs "soft"
  "email": "[email protected]",
  "reason": "Mailbox does not exist",
  "timestamp": "2026-03-15T14:23:00Z"
}

// Your handler should immediately:
// 1. Mark this address as suppressed in your database
// 2. Never send to it again unless manually re-validated
await db.users.update({
  where: { email: event.email },
  data: { emailStatus: 'hard_bounced', suppressedAt: new Date() }
})

Soft bounces

Soft bounces are temporary failures — mailbox full, server temporarily unavailable. Most ESPs retry soft bounces automatically. But an address that soft-bounces consistently over 3–5 attempts should be treated as a hard bounce and suppressed.

Spam traps

Spam traps are email addresses maintained by inbox providers and anti-spam organizations to catch senders with poor list hygiene. There are two types:

  • Pristine trapsAddresses that have never signed up for anything. If you're sending to them, you're either scraping addresses or using purchased lists. High severity — even a few pristine trap hits can get you blacklisted.
  • Recycled trapsOld addresses that were once valid but have been inactive for years, then repurposed as traps. Hitting these signals that you're not pruning inactive subscribers. Lower severity, but still damaging.

Re-engagement and sunset policies

Subscribers who haven't opened any email in 6–12 months are a deliverability liability. You have two options: run a re-engagement campaign, or suppress them.

A re-engagement campaign is a short series (2–3 emails max) specifically to inactive subscribers, asking if they still want to hear from you. Subject lines like "Still interested?" or "We're cleaning our list — stay or go?" tend to work. Anyone who doesn't open or click after the re-engagement sequence should be permanently suppressed.

6. Bounce handling and complaint management

Handling bounces and complaints correctly is non-negotiable. Beyond list hygiene, it's also a compliance requirement under CAN-SPAM, GDPR, and similar regulations.

Feedback loops (FBLs)

When a Gmail or Yahoo user marks your email as spam, the provider sends a complaint notification back to the sending ESP via feedback loop. Your ESP aggregates these and should provide them to you via webhooks.

# Complaint webhook from tinysend

{
  "event": "complaint",
  "email": "[email protected]",
  "complaintType": "abuse",
  "timestamp": "2026-03-15T14:23:00Z"
}

// Suppress immediately — do not attempt to re-engage
await db.suppressions.create({
  data: {
    email: event.email,
    reason: 'spam_complaint',
    suppressedAt: new Date()
  }
})

One-click unsubscribe

Google and Yahoo's 2024 requirements mandated one-click unsubscribe for bulk senders. This is the List-Unsubscribe-Post header combined with a List-Unsubscribe mailto/URL header. When a user clicks "Unsubscribe" in Gmail's UI, Gmail sends a POST to the URL in that header — no redirect, no confirmation page.

# Headers required for one-click unsubscribe compliance

List-Unsubscribe: <https://yourdomain.com/unsubscribe?token=abc123>, <mailto:[email protected]?subject=unsubscribe>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

Failing to process one-click unsubscribes within 2 days is a violation that can result in your emails being marked as spam by Gmail automatically, regardless of your complaint rate.

7. Content best practices

Content scoring is less deterministic than authentication — there's no single rule that always triggers spam. But there are patterns that reliably hurt deliverability.

Text-to-HTML ratio

Pure HTML emails with little actual text — big images, few words — score poorly. Aim for at least 60% text content. Avoid single-image emails entirely.

Subject line practices

All-caps, excessive punctuation ("FREE!!!"), and certain trigger words ("guaranteed", "winner", "click here") increase spam scoring. Write subject lines for humans — clarity and relevance beat tricks.

Link reputation

Links in your email pointing to domains with low reputation will affect your email's deliverability. Avoid URL shorteners (bit.ly etc.) in transactional email — use your own domain for tracking redirects.

Visible unsubscribe

For any marketing or newsletter email, a visible unsubscribe link is legally required (CAN-SPAM) and helps deliverability — it's better for a user to unsubscribe than to mark as spam. Put it in the footer, make it legible.

From name and address consistency

Changing your From name or address frequently is a red flag. Use a consistent From domain that matches your DKIM signing domain. Don't use [email protected] or other free email providers for sending transactional mail at scale.

HTML email structure

A few structural rules that matter for spam scoring:

  • Always include a plain-text alternative (multipart/alternative). Emails without a text part are often treated as spam.
  • Avoid JavaScript entirely. No mail client renders it, and its presence is a spam signal.
  • Use absolute URLs for images — relative paths don't work in email.
  • Limit external resource domains. Emails that load content from 10+ different domains look like phishing attempts.

8. Monitoring and debugging deliverability

You can't manage what you don't measure. These are the metrics and tools to track.

Key metrics to track

MetricHealthy rangeAction if outside range
Hard bounce rate<2%Audit list quality, check signup forms
Spam complaint rate<0.1%Review email frequency, improve segmentation
Open rate (marketing)>20%Prune inactive subscribers, improve subject lines
Open rate (transactional)>50%Investigate delivery problems, check spam folder
Deferral rate<1%Reputation issue — reduce volume, improve hygiene

Useful tools

  • Google Postmaster Tools — Free dashboard from Google showing your domain reputation, spam rate, and authentication success rate for mail sent to Gmail. If you're not using this, set it up today.
  • Microsoft SNDS / JMRP — Microsoft's equivalent for Outlook/Hotmail. Requires registration. Shows IP reputation and complaint data for Microsoft inboxes.
  • MXToolbox — Check if your IPs or domains are on any major blacklists. Also useful for verifying SPF/DKIM/DMARC records.
  • DMARC aggregate reports — Your DMARC rua address will receive XML reports from major inbox providers showing you which messages passed/failed authentication. Use a DMARC report reader (many free options exist) to parse them.
  • mail-tester.com — Send a test email to a unique address and get a deliverability score with specific issues flagged. Quick sanity check before a campaign.

Reading bounce codes

SMTP response codes tell you exactly what happened. The ones that matter for deliverability debugging:

# Common SMTP codes and what they mean

550 5.1.1   # User/mailbox does not exist → hard bounce, suppress immediately
550 5.7.1   # Message rejected due to policy → authentication or reputation issue
421 4.7.0   # Service temporarily unavailable → soft bounce, ESP will retry
452 4.2.2   # Mailbox full → soft bounce, retry later
421 4.7.28  # Gmail temporary block → reputation issue, reduce volume
550 5.7.350 # Outlook blocked → likely blacklisted, check SNDS

9. How tinysend handles deliverability for you

Deliverability infrastructure is genuinely complex to build and maintain. Here's what tinysend handles out of the box so you don't have to:

Automatic authentication

When you add a domain to tinysend, you get exact DNS records for SPF, DKIM (2048-bit keys), and DMARC. One-click verification confirms everything is set up correctly before you send. We sign all outgoing mail with your domain's DKIM key.

Bounce and complaint processing

Hard bounces are suppressed automatically — we maintain a suppression list per domain so you never accidentally send to a bad address twice. Complaint notifications from Gmail and Yahoo FBLs are processed in real time and forwarded to your webhook endpoint.

List-Unsubscribe headers

All emails sent through tinysend automatically include List-Unsubscribe and List-Unsubscribe-Post headers, keeping you compliant with Gmail and Yahoo's 2024 requirements without any extra configuration.

Dedicated IP option

High-volume senders can provision a dedicated IP through tinysend. We guide you through the warming process and alert you if your reputation signals degrade. For senders under 50,000 emails/day, shared infrastructure with clean IP pools is the better choice.

Delivery analytics

Per-email delivery status, bounce codes, and complaint events are available via webhook and the dashboard. Aggregate metrics like domain-level bounce rate and complaint rate help you catch deliverability problems before they compound.

Start with proper deliverability foundations

tinysend is built for developers who care about inbox placement. Get set up in under 5 minutes — API key, DNS records, first email sent.

Try tinysend free

Related guides