All posts

Do Spam Trigger Words Still Matter? What Filters Actually Score

··7 min read

Mostly no. Individual "trigger words" like free or guarantee carry little weight in modern filtering. Rule-based filters such as SpamAssassin score whole phrases at a few points each, and large providers like Gmail lean on machine learning, sender reputation and recipient complaints. Your links, your domain's reputation and how recipients react matter far more than vocabulary.

That is the short answer. The useful part is seeing the actual numbers, because one open-source filter publishes them.

Where the trigger word idea comes from

The idea comes from rule-based filters, which really did add points for specific phrases, and still can. Apache SpamAssassin is the best-known example and, unusually, it publishes its rules and default scores. Each rule that matches adds its score; if the total reaches the threshold, the message is marked as spam.

The threshold is required_score, which the SpamAssassin 4.0 configuration docs give as 5 by default, adding that "5.0 is the default setting, and is quite aggressive" and that an ISP "should probably set the default to be more conservative, like 8.0 or 10.0".

So the question is not "is this word banned?" but "how many points does it add, and how close am I to 5?"

What phrase rules actually score

Phrase rules typically add between about 0.5 and 3 points, and their weight drops when a filter has learned from real mail. These are from SpamAssassin's published rule list for the 3.3 series. Each rule has four default scores, for four setups: rules only, with network tests, with Bayes learning, and with both.

Rule What it matches Rules only + Network + Bayes + Bayes and network
MONEY_BACK "Money back guarantee" 2.910 2.486 0.601 1.232
GUARANTEED_100_PERCENT "One hundred percent guaranteed" 2.699 2.699 2.480 2.699
FREE_QUOTE_INSTANT "Free express or no-obligation quote" 2.700 2.699 2.699 1.297
DEAR_FRIEND "Dear Friend? That's not very dear!" 2.683 2.604 1.801 2.577
SUBJ_ALL_CAPS Subject is all capitals 0.518 1.625 1.197 1.506

Two things stand out.

First, the rules match phrases and patterns, not single words. There is no rule here that fires on the word "free" by itself. The famous lists of hundreds of forbidden words are mostly not how this filter works.

Second, look at MONEY_BACK: 2.910 points with rules alone, 0.601 once Bayes learning is on. When the filter has a learned model of what spam and legitimate mail look like at that site, the hand-written phrase rule matters less. The project also warns that "these are the scores for the current stable release of SpamAssassin; they may be different from the ones you're running", and the configuration docs explain that any administrator can change a rule's score or set it to 0 to disable it. There is no fixed, universal word penalty.

What reputation and link rules score

Rules that look up your sending IP or your URLs on blocklists score as high as phrase rules or higher, and they are about who you are, not what you wrote. From the same list:

Rule What it matches + Bayes and network
RCVD_IN_PBL Received via a relay in Spamhaus PBL 3.335
URIBL_BLACK Contains a URL listed in the URIBL blacklist 1.725
BAYES_99 Bayes spam probability is 99 to 100% 3.5
BAYES_00 Bayes spam probability is 0 to 1% -1.9
SPOOF_COM2OTH URI contains ".com" in the middle 2.723
MIME_HTML_ONLY Message only has text/html MIME parts 0.723

A worked comparison

Using the "Bayes and network" scores and the default threshold of 5:

  • Message A is clean on infrastructure but uses two classic phrases, "money back guarantee" and "Dear Friend": 1.232 + 2.577 = 3.809. Below 5, delivered.
  • Message B has bland wording, but it is relayed through an IP listed on the Spamhaus PBL and links to a domain on the URIBL blacklist: 3.335 + 1.725 = 5.06. Over 5, spam.

The message with the "spammy" words passes. The polite message from a poor source with a listed link fails. That is a simplified sum (real messages trigger many rules, some negative) but it shows where the weight sits.

How Gmail and Microsoft filter today

Large providers use learned models and recipient feedback, and publish no word list at all. Google described in 2019 how it added TensorFlow models to Gmail's filtering and was "now blocking around 100 million additional spam messages every day". The examples it gave were not words: "image-based messages, emails with hidden embedded content, and messages from newly created domains". It also noted that "What one person considers spam another person might consider an important message", which is why per-user feedback matters.

Google's sender guidelines focus on behaviour and honesty, not vocabulary:

  • "Don't use HTML and CSS to hide content in your messages."
  • Links "should be visible and easy to understand. Recipients should know what to expect when they click a link."
  • Subject, headers and display names "shouldn't be misleading", including not starting subjects with "Re:" or "Fwd:" unless the message really is a reply or forward.
  • Keep the user-reported spam rate below 0.3%, and ideally below 0.1%.

Microsoft is similar. Its bulk complaint level for bulk mail is graded on how many complaints a sender generates, from "few complaints" (1 to 3) to "a high number of complaints" (8 and 9). Microsoft's SCL documentation now says the old spam confidence score "no longer holds the same meaning in cloud organizations", and that "Spam filtering makes those decisions using categorization and other signals".

Microsoft does offer a word-based option, and it is instructive. Its Advanced Spam Filter settings include Sensitive words, described as a Microsoft-maintained list "associated with potentially offensive messages", not sales language. Every ASF setting is off by default, and Microsoft calls enabling them "an aggressive approach to spam filtering".

Content signals that do still matter

Wording is a weak signal; links, structure and deception are strong ones. These are the content properties that show up in filter rules and provider docs:

Signal Where it is documented What to do
Linked domain on a blocklist SpamAssassin URIBL_* rules; Spamhaus DBL looks up "domains appearing in the mail headers and body e.g., URLs" Link only to domains you control or trust; check yours with the blacklist checker
Public link shorteners Spamhaus DBL has a dedicated return code for an "abused spammed redirector domain" Use full links on your own domain
Link text that doesn't match the destination Google: recipients "should know what to expect when they click" Make the visible URL and the real one agree
Numeric-IP URLs, odd ports, image links to remote sites Microsoft ASF options (off by default, but some admins turn them on) Avoid all three
Mostly image, little text SpamAssassin HTML_IMAGE_RATIO_*; Google cites "image-based messages" Send mostly text
HTML with no plain-text part SpamAssassin MIME_HTML_ONLY Include a text/plain alternative
Hidden text Google guideline; SpamAssassin HTML_FONT_LOW_CONTRAST Never hide content
Fake "Re:" or "Fwd:" Google sender guidelines Only use them on real replies

For cold email in particular, the simplest version is: plain text or very light HTML, one link at most, no tracking-heavy templates, and a subject line that describes the email.

What actually decides inbox or spam

Your reputation, built from authentication, list quality and recipient reactions, does most of the work. In rough order of what to fix first:

  1. Authentication. SPF, DKIM and DMARC passing and aligned. Check with the deliverability audit.
  2. Bounces. Mailing dead addresses tells providers you don't know your recipients. Verify the list first; why cold emails bounce covers the causes.
  3. Complaints. Every "Report spam" counts against you. Relevance and an easy unsubscribe reduce them.
  4. Links and domains. Keep your sending and linked domains off blocklists.
  5. Volume and history. New domains sending large volumes look like compromised accounts. See how many cold emails per inbox per day.
  6. Wording. Last, and mostly about not sounding deceptive.

If mail is already landing in spam, the headers tell you why far better than a word list. Why your emails go to spam in Gmail walks through reading them.

The takeaway

Stop rewriting "free" as "fr33". It makes the message read as evasive to the person you are writing to, and the word was never the problem. Spend the time on what filters demonstrably weigh: a clean sending reputation, authenticated mail, a verified list, few honest links, and messages your recipients don't report. Run your domain through the free blacklist check before worrying about your vocabulary.

Common questions

Will using the word 'free' send my email to spam?

Not on its own. Rule-based filters like SpamAssassin score specific spammy phrases rather than single common words, and each rule adds a small number of points against a threshold. Large mailbox providers such as Gmail rely mainly on machine learning, sender reputation and recipient feedback, so one word is very unlikely to decide placement.

What matters more than spam trigger words?

Sender reputation, authentication, complaint rate and the links in your message. A domain or URL on a blocklist, a sending IP with a poor reputation, or recipients pressing 'Report spam' will hurt delivery far more than wording. Google asks bulk senders to keep their user-reported spam rate below 0.3%.

Do spam word checker tools work?

They check one narrow thing: whether your text matches a list of phrases. They cannot see your sending reputation, whether your links are listed, or how recipients have reacted to your past mail, which is what large providers weigh most. A clean score from a word checker does not mean the message will reach the inbox.

Do images and links affect spam filtering?

Yes, more than words do. SpamAssassin has rules for image-heavy HTML with little text and for URLs listed on blocklists, Microsoft offers optional filters for image links and numeric-IP URLs, and Spamhaus checks domains found in message bodies. Use few links, on domains you control, with visible and accurate link text.

Verify unlimited addresses for $29.99/month

Real SMTP mailbox checks. No credits, no per-email fees.

Get Started