All articles

Gmail Spam Rate Over 0.3%: How to Find Which Emails Did It

Guides·September 11, 2026·By The SendHustle Team·12 min read

Postmaster Tools gives you one number for an entire domain, and that is exactly why the number is so hard to act on. A Gmail spam rate over 0.3% tells you that yesterday enough Gmail users hit "Report spam" to put you past Google's published limit. It does not tell you whether it was the campaign that went out at 10am, the weekly digest, or the password resets that trickle out all day.

Most advice you will find skips straight to the fix: freeze sending, prune the list, check your DNS records, warm back up. That is the right ladder to climb, but climbing it before you know which stream complained means you throttle your receipts to punish a campaign, and you learn nothing you can use next month. So do the attribution first. You can do it with your own send logs and the numbers already on the dashboard, and it takes about twenty minutes.

What Postmaster counts before it reports a Gmail spam rate over 0.3%

The spam rate is narrower than most people assume, and the shape of it matters for the arithmetic later.

The numerator is manual complaints: a Gmail user opened their inbox, saw your message, and pressed the button. Filtering decisions Google made on its own are not in there. The denominator is not everything you sent either. It is the mail that actually reached Gmail inboxes for the users Google counts, which means messages that were filtered into the spam folder before anyone saw them are excluded from both halves. Suped's breakdown of the V2 dashboard is the clearest write-up of this I have found.

Three consequences worth holding onto:

  • It is personal Gmail only. Recipients on Google Workspace domains do not feed this number, so a B2B list can be almost invisible here while a consumer-heavy list is fully exposed.
  • A shrinking denominator inflates the rate. If filtering tightens and less of your mail reaches inboxes, the same number of complaints divided by fewer inboxed messages produces a higher percentage. The rate can climb on a day your raw complaint count fell.
  • It is a daily figure, reported per verified domain, and it lags. Iterable's guide describes the dashboards as retrospective and updating roughly every 24 hours. You are always reading about a send that already happened.

The two lines Google draws, from its email sender guidelines:

Daily spam rate Where you stand
Below 0.10% Google's recommended ceiling. Normal operating range.
0.10% to 0.30% Above the recommendation, below the stated limit. Something changed. Find out what.
Above 0.30% Past the published threshold. Treat it as an incident, not a metric.

One more thing about visibility: Google publishes no minimum volume for the dashboard, but in practice you need hundreds of messages a day to personal Gmail addresses before the lines are consistent, and under about a hundred a day you may see nothing at all (Suped has collected what senders actually observe). The 5,000-a-day figure you have seen quoted is the bulk sender compliance line, not the reporting line.

Why one stream can drag the whole domain over the line

Everything signed by the same domain pools into one percentage. Receipts, password resets, shipping notifications, the monthly newsletter, a product announcement: one number.

Those streams do not behave alike. A transactional message the recipient just triggered gets complained about almost never, and it usually carries the volume. A campaign gets complained about at a rate one or two orders of magnitude higher, and it usually carries far less volume. The big quiet stream dilutes the small noisy one, which sounds reassuring until you work out how little noise it takes.

Take a domain that puts 40,000 messages into Gmail inboxes on a given day. A 7,000-message campaign complained about at 2% produces 140 reports. Divided across all 40,000, that is 0.35 percentage points added to the domain rate from that campaign alone. A stream that is 17% of your volume just decided the number for the other 83%.

This is why the blanket freeze is so expensive. Stopping everything stops the receipts too, and the receipts were never the problem.

The attribution procedure: narrowing 0.41% to one campaign

Step 1: line up the spam-rate days against your send log

Pull the daily spam rate for the last 30 days out of Postmaster and put it next to a list of what you sent each day and how much. Mark every day a campaign went out.

Most of the time the picture resolves right here. If the three days above 0.10% are the three days you sent campaigns, and the other 27 sit flat, you already know the family of mail responsible. If the elevated days are spread evenly across campaign and non-campaign days, the problem is in your always-on mail, and that is a different investigation: usually a new signup flow, a form without confirmation, or an automation that started firing to a segment it should not touch.

Remember the lag. Line the send date up against the reporting date carefully before you conclude the shapes do not match.

Step 2: establish the quiet-day baseline

Average the spam rate across the days with no campaign. That is your always-on mail's rate, near enough. For most senders with genuinely opted-in lists this sits somewhere under 0.05%.

Step 3: do the subtraction that names the stream

Complaints are counts, not percentages, so convert back to counts before you do anything else. The formula:

stream rate = (spike rate x spike volume - baseline rate x baseline volume) / stream volume

Worked through, with made-up numbers to show the mechanics:

Input Value
Gmail inbox volume on the spike day 40,000
Domain spam rate that day 0.41%
Implied complaints that day 164
Quiet-day Gmail inbox volume 33,000
Quiet-day spam rate 0.04%
Implied complaints from always-on mail 13
Campaign volume that day 7,000

164 minus 13 leaves 151 complaints that the campaign has to account for. 151 divided by 7,000 is 2.16% for that one send. Your domain looks like a 0.41% problem; you actually have a 2.16% campaign and a healthy transactional stream.

Two cautions on the inputs. Use Gmail inbox volume, not total sends. If your platform reports delivered counts by domain, take the Gmail slice; if it does not, multiply delivered by the Gmail share of that list and accept the approximation, because a 10% error in the denominator will not change which stream is guilty. And scale the baseline volume to the spike day rather than using last week's total as-is, since the baseline gives you a rate, and the rate is what you are reusing.

Step 4: confirm with a second signal before you act

The arithmetic gives you a suspect. Confirm it before you go rewriting your send strategy:

  • Per-campaign complaint counts from your sending platform. If you have a feedback loop configured, complaints come back attributed to the send that caused them, which is the direct answer the domain-level rate cannot give you.
  • Unsubscribe rate on the same send. Complaints and unsubscribes usually move together. A send with an unsubscribe rate several times your normal one is almost always the send.
  • The hold-out. Skip next week's campaign and watch the number. If the rate falls back to baseline the following day, the attribution was right. This is slow, but it is the only test with no assumptions in it.

Reading domain reputation and IP reputation against each other

Postmaster reports reputation in four tiers, Bad, Low, Medium and High, on separate dashboards for your domain and your sending IPs. Read them as a pair, because the disagreement is the diagnostic.

Domain IP What it points at
Low or Bad Low or Bad Your own mail. Dedicated IP senders should expect the two to track each other closely.
Fine Low or Bad Shared IP. Someone else on that pool is the problem, and it is a conversation with your provider, not a change to your list.
Low or Bad Fine Your content, lists or consent. Moving to a new IP will not help, and reputation does not reset with the move.

Reputation moves slower than the spam rate. Expect the rate to recover first and the tier to follow over days.

The remediation ladder, in the order that actually moves the number

Now that you know which stream did it, work in this order:

  1. Pause the offending stream only. Leave the transactional mail running. It is diluting the number in your favour, and stopping it makes the percentage worse, not better.
  2. Cut the segment, not the list. Find what was different about that send's audience: the oldest cohort, a batch from one import, a segment that had not been mailed in months. Suppress that slice specifically.
  3. Make leaving easy and fast. Put a working one-click unsubscribe header on every bulk message. The mechanism is RFC 8058, and Google expects bulk senders to process those requests within two days. Every person who unsubscribes instead of complaining is a complaint you did not get.
  4. Then check authentication. SPF, DKIM and DMARC all need to be right, and they are the first thing every other article tells you to fix. But if they were already passing before the spike, fixing nothing there will move nothing. Authentication governs whether you are eligible to be delivered; it does not govern whether people want your mail.
  5. Resume small, to the engaged end. Restart the paused stream at a fraction of its volume, aimed at recipients who opened or clicked recently.
  6. Give it a week before you judge. The daily rate reacts within a day or two, but the compliance view uses rolling averages and can take up to seven days to catch up. Do not declare it fixed on the strength of one good day, and do not stack three more changes on top while you wait, because then you will not know which one worked.

Splitting your streams so the next spike names itself

Everything above is reconstruction work you had to do because the data arrived pooled. You can avoid the reconstruction next time.

Send marketing from one subdomain and transactional mail from another, then verify each subdomain in Postmaster Tools as its own property. From that point each stream draws its own spam-rate line, and the question this whole article answers gets answered by looking at two charts instead of doing algebra.

Three honest caveats. A subdomain is not a reputation reset; it inherits from the parent and it starts with no history of its own, which is its own kind of risk. Some Postmaster views, notably compliance status, still report at the primary domain level. And a subdomain you stand up in the middle of an incident is the worst possible time to introduce a new sending identity, so set the split up while the numbers are healthy and boring.

If you are running campaigns and transactional mail through the same platform, check whether it will let you configure a separate sending domain per stream. That single configuration change is what turns a domain-wide mystery into a one-chart answer.

Frequently asked questions

How does Google calculate the Gmail spam rate?

It divides manual spam reports by the messages that actually reached Gmail inboxes for the users Google counts, on a daily basis and per verified domain. Mail that was filtered to the spam folder before anyone saw it is excluded from both the numerator and the denominator, and only personal Gmail recipients are counted.

Why does my spam rate look bad when my complaint count has not changed?

Because the denominator can move on its own. If filtering tightens and fewer of your messages reach inboxes, the same number of complaints is divided by a smaller number and the percentage rises. Always convert the rate back into a complaint count before you conclude that people suddenly started complaining more.

How long does it take for a Gmail spam rate over 0.3% to come back down?

The daily spam-rate line usually reacts within a day or two of the offending stream stopping, but reputation tiers and the compliance view lag further because they use rolling averages. Give any fix a full week before you judge whether it worked, and avoid stacking several changes on top of each other while you wait.

Will fixing SPF, DKIM and DMARC lower my spam rate?

Only if they were broken. Authentication decides whether your mail is eligible to be delivered at all; it has no bearing on whether recipients want it. If your records were already passing before the spike, the complaints came from your list or your content and re-checking DNS will not move the number.

Should I move my marketing email to a subdomain after a spike?

Long term yes, because a separate verified subdomain gives each stream its own spam-rate line and makes the next spike attributable without any arithmetic. But a subdomain is not a reputation reset and it inherits from the parent, so stand it up while your numbers are healthy rather than in the middle of an incident.

Send your next campaign from Gmail

SendHustle brings mail merge, follow-ups, and tracking right into the inbox you already use.

Start free