The trigger words worth avoiding, the structural triggers that matter more, and why word lists are the last mile of deliverability, not the main event.
By Joel Wylie, Founder · Last updated 7 August 2026
Cold email spam words are the phrases that pattern-match to decades of junk mail: no-cost claims like "free", money language like "make money", urgency like "act now", and guarantees like "risk-free". They matter, and we scan every email against a maintained list before it ships. But they are the last mile of deliverability, not the main event. Spam filtering in 2026 is mostly behavioural and structural, and a perfectly worded email from a burned domain still dies.
We run cold email campaigns for B2B clients every day, and every piece of copy passes a mandatory word-boundary scan against our internal trigger list before launch. This post shares the categories that scan checks, the replacements we actually use, and, more importantly, where spam words sit in the real hierarchy of what gets an email delivered.
The trigger words fall into a handful of recognisable categories, and every one of them exists because spammers wore the phrase out first. Filters learned the patterns from billions of junk emails, so when your copy uses the same vocabulary, it inherits the association. Here are the high-risk categories with curated examples and the replacement patterns we use in live campaigns.
| Category | Example triggers | What we use instead |
|---|---|---|
| No-cost claims | free, 100% free, free trial, free consultation, no cost, no obligation, no strings attached | "on us", "no charge", "on the house". Same meaning, none of the baggage. |
| Money and earnings | make money, extra cash, earn money, double your income, financial freedom, pure profit | The concrete outcome in plain words: what the prospect actually gets, stated specifically. |
| Urgency and pressure | act now, limited time, urgent, click below, don't delete, while supplies last, order now | No urgency at all. A cold email CTA should be a calm interest check, not a countdown clock. |
| Guarantees and superlatives | guaranteed, risk-free, promise, satisfaction guaranteed, best price, incredible deal, #1, miracle | Let named proof carry the claim. A real result beats an adjective every time. |
| Spam self-defence | this isn't spam, not junk, we hate spam, unsolicited, dear friend, congratulations | Nothing. If you have to say it isn't spam, the filter has already decided it is. |
| Marketing jargon | bonus, discount, clearance, special promotion, sign up free, exclusive deal, giveaway | Describe the actual thing in the plainest language a colleague would use. |
This is a curated cut, not the full internal list, which runs to a few hundred entries across these categories plus a long tail of legalese and compliance phrasing. The categories are the useful part. Once you can recognise the pattern, "you have been selected" and "expect to earn", you spot new variants without needing them written down.
No. Sender behaviour decides deliverability, and words are a tiebreaker. Modern filtering weighs your domain's sending history, how recipients engage with your mail, your volume patterns, and your authentication far more heavily than your vocabulary. A clean-worded email from a domain that has been blasting unengaged lists still goes to spam. A slightly clumsy email from a warmed domain with real engagement history usually lands fine.
This is the mistake we see most: teams treat the spam-word list as the whole deliverability strategy. They strip every flagged word, congratulate themselves, and keep sending high volume from two exhausted domains. The filter never cared about the words. It cared that nobody opens or replies to their mail. Fix the deliverability fundamentals first: infrastructure, warmup, volume discipline, engagement. Then use the word list to stop giving filters an easy extra reason.
Structure trips more filters than vocabulary does, and the biggest structural trigger is a link. A URL from a sender with no history at the recipient's domain is the classic spam shape: stranger arrives, stranger wants a click. Our copy scan flags any URL, email address, or domain-like pattern in a cold step, with zero exceptions, and we have written up the full reasoning in why links kill cold emails.
Beyond links, the structural triggers our scan checks are:
Notice what these have in common: every one of them is a departure from what a genuine one-to-one email looks like. That is the whole test. Filters are trained to separate personal correspondence from bulk marketing, so the winning move is to make your cold email structurally indistinguishable from a note a colleague would send.
Run a word-boundary scan of every subject line and body against your list before anything ships, and treat it as a blocking gate, not a suggestion. Word-boundary matters: you want to flag "free" without flagging "freelance". We run this scan as a mandatory step in our pre-launch QA, and nothing launches with unresolved flags.
Two rules make the scan actually work in practice:
Some flagged words are normal B2B vocabulary: offer, trial, deal, quote, score. A single "offer" in an email is low priority. Five trigger words stacked in one email is high priority. Treat the scan output as a ranked risk score rather than a binary pass or fail, and spend your rewriting effort where the density is. This also stops the scan flagging brand names that happen to look spammy, which real companies do have.
We learned this one the hard way. Early on, copy would pass the scan, go to the client for approval, come back with "small tweaks", and ship. One of those tweak rounds reintroduced the word "free" into a step that had been carefully written around it, and it went out that way. Since then the rule is absolute: the scan re-runs after every single edit pass, including and especially edits a client hands back. A client asking for "free" does not override the list. We swap it for a clean phrase and explain why.
Because it is the single most spammed word in the history of email, and because B2B copy reaches for it constantly. Free trial, free consultation, free audit, free gift: every one of those phrases sits on trigger lists, and every one of them has a clean equivalent. In our campaigns the no-cost lever is one of the strongest offers you can make, so we never drop the concept. We just never use the word. "On us", "no charge", and "on the house" say exactly the same thing and carry none of the filter history.
The same substitution logic applies across the table above. You are not weakening the copy by avoiding trigger words. You are usually strengthening it, because trigger words are tired words. "Incredible deal" and "act now" were worn smooth by spammers precisely because they are lazy phrases. The plain, specific alternative reads better to the prospect and scores better with the filter. That is a rare free win, or rather, a rare win at no charge.
Last, deliberately. Here is the order we fix things in when a campaign is landing in spam, and words are the final step, not the first:
Get the first four right and the word list becomes what it should be: a final polish that removes the last easy objections a filter could raise. Get them wrong and you can memorise every trigger list on the internet without moving your inbox placement at all. The full infrastructure picture is in our cold email deliverability guide, and the pre-send version of this whole discipline lives in our pre-launch checklist.
The highest-risk words are no-cost claims (free, no obligation), money language (make money, extra cash), urgency (act now, limited time, urgent), guarantees (guaranteed, risk-free, promise), and self-defence phrases (this isn't spam). Density matters more than any single word: one flagged word is low risk, several in one email is high risk.
Yes, but less than sender reputation and structure. Modern filtering is mostly behavioural: sending history, engagement, volume patterns. A clean-worded email from a burned domain still lands in spam. Treat the word list as the last mile of deliverability, after infrastructure and structure are right.
No. In our copy system, free is the single most flagged word, and we replace it every time, even when a client asks for it. We write the no-cost lever as on us, no charge, or on the house. Same meaning, none of the filter baggage the word free carries.
Anything about the shape of the email rather than its words: any URL, email address, or domain-like pattern in a cold step, stray HTML tags in what should be plain text, excessive punctuation, ALL-CAPS words or subject lines, coloured or mixed-size fonts, and misleading clickbait subject lines. A link is the biggest one.
Run a word-boundary scan of every subject line and body against a maintained trigger list before anything ships, and re-run it after every edit pass, including edits a client hands back. Rank findings by density rather than treating every hit equally, and flag rather than auto-rewrite, because context matters.
Technically yes, offer appears on trigger lists, alongside trial, deal, quote, and score. But these are normal B2B vocabulary, so a single use is low risk. The rule we apply: flag it, rank by density, and only rewrite when several flagged words stack up in the same email.
Want outbound like this run for you, end to end?
Book A Call
The operational rules we run on every client campaign, and the panic reflexes that quietly make deliverability worse.

No URLs, no email addresses, no domain names in cold copy. The two reasons, and what to do instead.

Six check categories, run as a hard gate before anything goes live. No checklist, no launch.