The usual response to spam placement is to start rewriting the email. Remove the word "free", take out an exclamation mark, cut a link. This is almost always the least productive place to start, because content is the weakest of the signals a receiver uses and the one you have already optimised by instinct.

Work down this list in order. Stop when you find something.

1. Authentication

Check a real received message, not your configuration. Open the raw headers of a message that actually arrived and look for spf=pass, dkim=pass and dmarc=pass. A dashboard saying your records are valid is not the same as a receiver agreeing.

The common silent failure is SPF exceeding its 10 DNS lookup limit. It does not warn you, it just stops passing.

2. Are you actually the sender

If the from address is on a domain you do not control, or a shared domain belonging to your provider, your placement is partly determined by other people's behaviour. This is the single most common cause of "it worked last week and now it does not" with nothing changed on your side.

3. Reputation of the sending IP and domain

Check whether the sending IP is on a public blocklist. Most consumer ranges are permanently listed, so a home or office connection stays listed whatever else you fix, and the sending has to move elsewhere.

Treating a 5xx rejection at RCPT TO as a dead address deletes real contacts when you send from a residential IP. From a residential IP, that rejection is nearly always about your IP, not about whether the mailbox exists.

4. Recipient engagement

Receivers weight what recipients do with your mail far above what is in it. A list where nobody opens anything will drift to spam regardless of how clean the copy is. Segment out addresses that have not engaged in six months and stop mailing them. Your placement for everyone else improves.

5. Volume shape

Ramp volume gradually. Going from 500 a day to 50,000 overnight is the pattern of an account takeover, and it is treated like one.

6. Content, finally

Now look at the message. The things that still matter:

  • Link and text balance. A message that is one image and a link has nothing for a filter to read as legitimate.
  • Link domains. Receivers look at the domains your links point to, and link shorteners and domains unrelated to the sender both count against you. Tracked links on your own domain do not.
  • A plain text part. HTML-only multipart messages score worse. Send both.
  • Working unsubscribe. Covered in one-click unsubscribe.

Authentication and reputation decide placement far more than copy does. A sender with both in order is not sunk by a single word, and copy editing does not rescue a sender without them. The folklore items, individual trigger words, exclamation marks and the exact colour of your call to action button, matter much less than claimed.

Test before you send

Before a campaign, send the exact message to a seed address at each major provider and read the headers. It takes ten minutes, and it happens before any reputation damage is recorded, which debugging after the campaign cannot undo.