1
4 Comments

Every check passed and Gmail still put my domain in spam. Here's what got it out.

In August, mail from my own domain (call it mydomain.example) was landing in Gmail's spam folder no matter how I sent it. SPF, DKIM and DMARC all passed. No blocklist had it. It stayed there anyway.

It's back in the inbox now. Here's what happened, and what I think got it out.

How bad it was

The address is the one I've used with my readers for years. Up to the end of 2024, around half of what I sent from it got opened. Then I sent nothing for most of 2025, came back in December with a few thousand promotional emails in a row, and in April moved the domain's mail to Google Workspace.

By May, opens from Gmail users were at 5.9%. By August, 0.2%.

The number that told me it wasn't the content: I sent the same message to the same 1,783 people from a different address I own, and 30.7% of them opened it. Same list, same week, same words. Only the sender changed.

What I ruled out

I sent a plain two word test to a Gmail account four different ways: straight from Workspace, through SocketLabs, through my old host's mail server, and through the Gmail API. All four went to spam. Every one of them passed authentication.

I also stripped out tracking links, in case something in them looked like a trap. Still spam.

Postmaster Tools showed nothing, which I first read as good news. It isn't. For a domain that sends as little as mine does, Google just doesn't show you the data.

What I actually found

When I moved the mail to Workspace, one thing didn't move with it. A warm-up tool I'd connected months earlier was still logged into the old mail server and still sending around 40 emails a day from my address. The receiving half of the warm-up couldn't do anything anymore, because incoming mail now went to Google. So every day my domain kept sending mail that nothing on the other end was engaging with.

The two things I changed

First, I switched the warm-up off and reconnected everything to Google.

Second, and I think this is the one that mattered, I gave people a reason to reply. I was already planning a small birthday giveaway for my readers. I set it up so that signing up sent you a confirmation email from that address, and your entry only counted once you replied to it. The announcement said it might land in spam and asked people to check. The next day I sent a reminder, from my other address, to everyone who hadn't replied yet.

So real people went into their spam folders, found my mail, and wrote back to it. A lot of them.

What happened

I had a test sending to a Gmail account every morning. It came back spam every day through August 31st. On September 1st it came back inbox, and it's stayed there since.

I can't tell you which of the two changes did it. They happened a day apart. My guess is the replies, but I didn't run it cleanly enough to prove that.

If your authentication is perfect and you're still in spam, has anyone found something that works faster than getting people to write back?

on September 21, 2026
  1. 1

    Curious how long it took before you saw the first real results?

    1. 1

      About ten days. The warm-up came off on August 21st and the giveaway went out on the 22nd. The morning test kept landing in spam every day through the 31st, then went to the inbox on September 1st and has stayed there since. Nothing gradual about it, it just flipped one morning.

  2. 1

    This is a useful reminder that SPF/DKIM/DMARC only prove identity, not reputation or engagement. Since the warm-up change and the reply-driven recovery were a day apart, I’d isolate them with two small Gmail-only cohorts: same content, one with the warm-up on and one off, then compare inbox placement and replies over several sends. I’d also track spam complaints, not just opens, since open data can be noisy. The reader-reply signal is especially interesting—did placement improve before or after the replies started?

    1. 1

      After, and not right after. Replies started on the 22nd, the reminder went out on the 23rd, and placement didn't move until September 1st.

      I didn't split it into two groups, because the cause was clear: a warm-up still sending from a server nobody was reading anymore. Once I'd found that, there wasn't anything left I needed a test to tell me.