Mailfully logo

Why emails go to spam

Work through the four causes of inbox placement failure in order: authentication, list quality, content, and sending reputation.

Receiving providers decide placement. Check these in order: authentication, list quality, content, reputation.

Start with authentication

DKIM signs mail for your sending domain, and SPF authorizes the MAIL FROM subdomain that sits beneath it. Domain verification is what confirms both records actually resolve. A domain with status verified already has both configured, which is the floor every sender starts from before anything else on this page can matter. See Verify a domain and Publishing your DNS records for the records involved.

Then list quality

Hard bounces and spam complaints are the strongest negative signal a receiving network reads, and on Mailfully they are also an account-survival issue, separate from how any single provider treats your mail. Two thresholds decide it:

MetricThresholdDefinition
Complaint rate0.07%Spam complaints ÷ delivered emails
Bounce rate4%Hard (permanent) bounces ÷ accepted emails

Crossing either one first throttles sending (429 daily_quota_exceeded), and higher rates pause the account (403 forbidden). See Policies for the full ladder. Soft bounces do not count toward the bounce rate; only permanent failures do.

These numbers are stricter than the 0.3% Gmail complaint figure further down this page, and the two measure different things. Mailfully's thresholds decide whether your account keeps sending at all. Gmail's decides whether Gmail keeps trusting your domain. Mailfully's is the one that binds first. See Policies, Why an address was suppressed, and Suppressions.

Content comes third

Gmail's filters weigh the sending IP, the domain and its subdomains, whether a bulk sender is authenticated, and what recipients report. Check three things in your messages:

  • Send a plain-text part alongside the HTML.
  • Use link domains that match your From domain.
  • Don't use URL shorteners.

Google's sender guidelines also say the display name should identify the sender, without emoji or non-standard characters that imitate graphics. See Google's overview of Gmail's spam filters and Email sender guidelines.

Reputation comes last

Reputation accumulates from the first three over time rather than from any single message. See IP pools and Warming up a new domain for how that accumulation works and how to manage it deliberately.

Measure instead of guessing

GET /v1/analytics/external-reputation returns Gmail's own view of your sending domains: the latest Gmail Postmaster spam-rate observation, per verified domain. See Analytics for the full endpoint.

Google publishes 0.3% as the complaint-rate ceiling it enforces through Postmaster Tools. The field the endpoint returns, gmailSpamRate, is a fraction, so the two ceilings on this page line up like this:

CeilingAs a percentageAs the fraction the API returns
Google's Postmaster ceiling0.3%0.003
Mailfully's complaint-rate threshold0.07%0.0007

A sample response:

{
  "data": {
    "domains": [
      { "domain": "mail.acme.com", "gmailSpamRate": 0.0002, "observedAt": "2026-07-06T09:00:00.000Z" }
    ],
    "worstGmailSpamRate": 0.0002
  }
}

gmailSpamRate: 0.0002 reads as 0.02%, inside both Mailfully's 0.07% threshold and Google's 0.3% ceiling. An empty domains list means Google has no data for you yet.

What Mailfully does for you

ResponsibilityPlatformYou
DKIM signing and SPF for the MAIL FROM subdomainYes
Automatic suppression of hard bounces and complaintsYes
Warm-up pool placement for new accountsYes
Publishing the DMARC recordYes
Keeping the list opt-in and currentYes
Writing content that passes the three checks aboveYes