A Subscriber Marked You as Spam: How to Get Back to the Inbox
A click on “Report spam” costs a sender far more than an unsubscribe. An unsubscribe loses you one person. A spam complaint damages your domain's reputation and starts pulling everyone else's mail into the spam folder too.
If your open rate is sliding for no obvious reason and a red complaint-rate bar just appeared in Postmaster Tools, you're already in this situation. Here's how to get out of it.
What happens when a subscriber clicks “Spam”
The mechanics are simple. Someone sees your message in their inbox, doesn't recognize the sender (or recognizes you but is tired of the frequency), and clicks “Report spam.” The mailbox provider logs it as a complaint. The message moves to spam and the complaint is added to your sending domain's statistics.
One complaint by itself means nothing. What providers watch is the share of complaints among messages that reached the inbox. Google asks senders to keep it under 0.1%, fewer than one complaint per thousand messages, and never to reach 0.3%. Past that point it cascades: mail lands in spam, open rate drops, the provider gets another signal that your messages are unwanted. A closed loop.
Yahoo publishes a 0.3% ceiling for every sender. Microsoft's SNDS FAQ calls a complaint rate under 0.3% a good bar for an IP. Mail.ru scales its limit with volume: 1.1% for up to 10,000 messages a month, 0.3% above 50 million. Google, for its part, warns that a lower spam rate takes a while to show up in how your mail gets filtered.
FBL: how to find out who is complaining
FBL stands for Feedback Loop. It's the mechanism through which mailbox providers report complaints back to the sender. Not every provider supports it, and not every ESP configures it automatically. Without FBL you're flying blind: complaints accumulate and you have no idea.
Where to set up FBL:
- Gmail. Postmaster Tools shows spam rate per domain. Gmail also runs its own feedback loop, built differently from the classic kind. You add a Feedback-ID header carrying campaign identifiers, sign the message with DKIM, and the Feedback Loop dashboard reports the complaint share for each identifier. Individual addresses never leave Google.
- Yahoo / AOL. The Complaint Feedback Loop lives in Sender Hub and only covers DKIM-signed mail. You enroll the d= domain, and every complaint comes back as an ARF report so you can drop that recipient from future sends.
- Microsoft (Outlook, Hotmail). SNDS gives you data on the IPs you control, and the Junk Mail Reporting Program inside it sends a report whenever a user junks one of your messages.
- Mail.ru. Mail.ru Postmaster has per-domain statistics, spam marks included, plus FBL reports that show which subscribers flagged the message.
The report format is ARF, defined in RFC 5965. Each report is an email in three parts: a human-readable note, machine-readable fields, and a copy of the original message. Providers may redact the recipient address from that copy for privacy reasons. RFC 6449 suggests the same trick senders use for bounces with VERP: embed your own subscriber identifier in the message somewhere a provider is unlikely to strip it. Then a complaint still maps to a contact when the address is gone.
ESPs usually enroll your domain and suppress complainants for you. Yahoo's FAQ says as much and tells senders to confirm the enrollment with their provider. If you run your own SMTP server, FBL needs manual setup. Without it, complainants keep receiving your messages and keep filing complaints.
A practical rule: if you can see a complaint rate in Postmaster Tools but don't know who is complaining, FBL is only partially configured. Sort out Yahoo, Microsoft and Mail.ru first, since they report each complaint. Gmail won't give you names, but the aggregate view and the Feedback-ID breakdown are enough for monitoring.
Complaint addresses: what to do with them
A complaint address belongs to a subscriber who hit “Spam” or “Junk” on at least one of your messages. You learn it from an FBL report or from your ESP's stats. Gmail doesn't hand out such a list at all.
There is exactly one rule. The address goes on your suppression list right away, automatically, with no “one last send” first. That person has already told their mailbox provider they don't want your mail, and the next message can easily bring a second complaint. Unsubscribes are neutral for reputation. A complaint reads differently: either there was no consent, or the mail annoyed someone enough that they went to their provider instead of your unsubscribe link.
The expensive mistake happens during a migration. Switching ESPs or moving to your own SMTP? Export the suppression list and load it into the new system before the first send. Skip that, and everyone who ever complained hears from you on day one.
uChecker can't see the complaint history of an address; that data stays with mailbox providers. You or your ESP keep the complainant list. Address verification handles the neighboring problem (dead mailboxes, dead domains, disposable addresses), which hurts the same reputation.
Why subscribers complain (even ones who opted in themselves)
The uncomfortable truth: people click “Spam” not because you're actually a spammer. They click it because it's easier than hunting for an unsubscribe link. Or because they forgot they ever signed up. Or because they're simply fed up.
They don't remember subscribing
The subscription happened six months ago. The first message only arrived now. No memory of the context, so the email feels unsolicited.
Too frequent
Three messages a week when the person expected one a month. Fatigue builds and at some point, instead of unsubscribing, they hit Spam.
Unsubscribe link is buried
Tiny gray text in the footer, a double-confirmation flow, a login requirement. Every barrier raises the probability of a spam complaint.
Content doesn't match expectations
They signed up for useful content and get nothing but promotions. The gap between what was promised and what arrives is a common complaint driver.
There's another scenario: the person never subscribed at all. The address entered your database through scraping, a purchased list, or an automatic CRM import without consent. Those contacts complain at an extremely high rate. If your list contains addresses that never went through an opt-in, that's a ticking bomb.
What complaint rate is and how it's calculated
Complaint rate (Postmaster Tools calls it spam rate) is the share of your messages that recipients reported as spam. The denominator is narrower than most people assume. It isn't your list size, and it isn't every delivered message either. Google divides complaints by messages that landed in the inbox of active recipients, and only counts DKIM-authenticated mail. Yahoo also works from inbox-delivered mail and reminds senders of that when they compute the rate from their own CFL reports.
Say 10,000 messages reached the inbox and 30 people complained. That's 0.3%, right at the red line. Unsubscribes stay out of the formula: 2,000 of them on the same campaign wouldn't move the number at all.
The formula has an odd side effect, and the Postmaster Tools help spells it out. Once Gmail is filtering most of your mail to spam, hardly anyone sees it in the inbox, so hardly anyone complains, and the rate looks low. A low spam rate next to a poor domain reputation is a warning, then.
What complaint rate is acceptable
Below 0.1%: normal
Fewer than one complaint per 1,000 inbox-delivered messages. This is the level Google tells senders to hold.
0.1% to 0.3%: yellow zone
Google says rates above 0.1% already hurt inbox delivery for bulk senders. The longer the rate stays here, the more of your future mail goes to spam.
0.3% and above: red zone
You're in breach of Yahoo's requirement for all senders. Google stops offering delivery mitigation and won't resume until spam rate stays under 0.3% for seven days in a row.
Postmaster Tools recalculates spam rate daily, so a single bad campaign shows up on the chart right away, however clean things looked before. After you fix the cause, Google says to allow up to seven days for the rate to get back within limits, and spam classification catches up later still.
Other providers give you less to go on. Yahoo states its ceiling but points senders to CFL reports for tracking complaints, and Microsoft shows a complaint rate in SNDS only for IPs you've proven are yours. On an ESP's shared IP you won't see it, so you're reading indirect signals: rejections that mention reputation, rising soft bounces, falling opens (Apple Mail Privacy Protection skews them) and falling clicks.
Step-by-step plan: how to get back to the inbox
If your complaint rate is already in the red zone, work through these steps in order. Skipping steps is like patching holes while the ship is sinking.
Stop and look at the data
Open Google Postmaster Tools. Look at spam rate day by day, say over the last 7 and 30 days, and find exactly when the spike started, then match it against your sends: which campaign caused the jump? Which segment? If your mail carries a Feedback-ID, the Feedback Loop dashboard narrows it down for you. If you run multiple streams (marketing, transactional, triggered), figure out which one is generating the problem.
Without a diagnosis you're guessing. The data will point you to the specific source.
Cut the list to active subscribers only
For the recovery period, send only to people who opened or clicked recently. Pick the window to match how often you mail, for example 30 to 60 days. It's a hard filter and the list will shrink noticeably; volume can wait. Active subscribers open, click, and don't complain.
Anyone who has gone quiet for a long time: exclude them for now and bring them back after reputation recovers. Google's own guidance suggests considering unsubscribing recipients who don't open or read your messages.
Validate the list
While you're fighting complaints, you don't need invalid addresses making things worse in parallel. Run the remaining list through a validator and remove dead addresses. Role-based addresses like info@ and sales@ are better set aside until you recover. Every bounce and every trap hit is another hit on a reputation that's already damaged.
In uChecker you upload a .txt file or paste the list. The report sorts addresses into valid, invalid and unknown. Each invalid address comes with a reason: a syntax error (domains on the stop list, disposable ones included, land here too) or an SMTP reject, which covers nonexistent domains. Catch-all and suspicious domains go to unknown. Role addresses and traps aren't flagged separately. Mail only the valid ones.
Make unsubscribing as easy as possible
This sounds counterintuitive: why make it easier to leave if you want to keep subscribers? Because an unsubscribe is harmless to your reputation, while a spam complaint is destructive. If someone wants out, let them leave through the unsubscribe link, not the Spam button.
Concrete steps:
- - Add both List-Unsubscribe and List-Unsubscribe-Post (RFC 8058) so Gmail can offer one-click unsubscribe in its own interface
- - Put the unsubscribe link near the top of the email, not only in the footer
- - Remove intermediate pages: click “Unsubscribe” and it's done, no login, no survey
Since February 2024, Gmail has required one-click unsubscribe from anyone sending more than 5,000 messages a day to its users, and Yahoo requires it from bulk senders. Yahoo requires unsubscribes to be honored within two days; Google recommends 48 hours. Miss that, and you have a deliverability problem with or without complaints.
Reduce frequency and reconsider content
During recovery, send less. If you were sending three times a week, drop to once. Every additional message sent while reputation is low raises the chance of fresh complaints.
Content is worth reconsidering too. If your recent sends were pure promotion (“sale,” “offer,” “today only”), switch to something genuinely useful: articles, guides, case studies.
Re-warm gradually
After cleaning the list and pulling back frequency, start building volume again the same way you would with a new domain. Begin with your most loyal subscribers, the ones who opened your last few messages. Then widen the circle, and widen it again. Each expansion only happens if spam rate stays below 0.1%.
Providers don't publish recovery timelines. Google only says that a better spam rate takes time to reach spam classification. One rushed mass send and you're back at square one.
Set up monitoring so it doesn't happen again
When the complaint rate returns to normal, don't relax. Set an alert well below 0.1% so you hear about a rise before the rate hits Google's line. Suppress complainants automatically through FBL. Run validation before every large send.
How to stay out of spam going forward
Recovery drags on; prevention costs less. Here is what helps.
Double opt-in. Confirmed subscriptions cut out mistyped addresses, bots, and people who won't remember signing up a week later. Google itself recommends confirming each address before subscribing it.
Welcome series. Send the first message right after signup, while people still remember where they left their address. Remind them who you are, what you'll send, and how often.
Preference center. Let subscribers choose how often they hear from you and what kind of content they want. Some want a weekly digest, others only sale notifications. A preference center reduces both unsubscribes and complaints.
Regular validation. Addresses go stale: people change jobs, abandon mailboxes, let domains expire. Run the list through a validator before big sends and after long breaks.
Sunset policy. Subscriber hasn't opened in a long while? Send a couple of messages with a direct question: do you still want to hear from us? No response means removal from the active list. Google recommends asking your whole list this from time to time. How often is up to you; once a quarter is a reasonable start.
Special case: flagged as spam by corporate mail filters
B2B mail sometimes ends up in spam not because subscribers complained but because of corporate gateway filters. Barracuda, Mimecast, Proofpoint: large companies run their own gateways with their own rules, and Postmaster Tools won't show you what they decided.
A different set of actions helps here. Check your domain against blacklists (MXToolbox, MultiRBL). If your domain or IP is listed, submit a delisting request: every blacklist has its own procedure, usually a form on their site. Verify that SPF, DKIM, and DMARC are correctly configured. If you send from a shared IP, someone else's behavior may have gotten you listed.
For B2B sends, list validation is especially critical. Corporate addresses often tie to domains that change during reorganizations, contractor switches, or hosting migrations. An address that worked in January may not exist in March.
The short version
The sequence is short: diagnose through Postmaster Tools, clean the list, simplify unsubscribe, reduce frequency, re-warm gradually. Then set up monitoring so you don't end up back at the same point.
Start with what takes five minutes: check your complaint rate in Postmaster Tools and run your list through a validator.
Sources
- Google: Email sender guidelines
- Google: Email sender guidelines FAQ (spam rate, mitigation)
- Google Postmaster Tools: dashboards and spam rate
- Gmail: Feedback Loop and the Feedback-ID header
- Yahoo Sender Hub: sender requirements
- Yahoo Sender Hub: Complaint Feedback Loop
- Microsoft: SNDS and Junk Mail Reporting Program
- Microsoft SNDS: FAQ (complaint rate)
- Mail.ru Postmaster
- Mail.ru: technical requirements for bulk mail (complaint limits)
- RFC 5965: An Extensible Format for Email Feedback Reports (ARF)
- RFC 6449: Complaint Feedback Loop Operational Recommendations
- RFC 8058: One-click unsubscribe
Check your list in uChecker and remove invalid addresses before they damage your reputation.
Check your list for freeMark Avrilov · Author
Published Updated
