
TL;DR
Promotions is not spam, but it cuts reply rate by 40-60% because recipients never open it. Here's what Gmail's classifier actually scores and the fixes that move cold emails to Primary.
Why Your Cold Emails Are Landing in Promotions
Gmail's Promotions tab is not the spam folder, emails there are technically delivered. The problem is that recipients open the Promotions tab roughly 20% as often as Primary, so reply rate collapses by 40-60% even when your infrastructure is clean.
Gmail routes a cold email to Promotions when its machine-learned classifier sees three or more of these signals together:
- 1Bulk-sender markup in headers (List-Unsubscribe, Precedence: bulk, List-ID, Feedback-ID).
- 2Promotional content structure in the body (HTML tables, multiple links, CTA buttons, images, signature with logo).
- 3Low one-to-one engagement pattern (no prior reply thread, no personal salutation, identical body across recipients).
Promotions is a content + structure problem, not a reputation problem. Authentication can pass perfectly and Postmaster Tools can show High domain reputation while every message still lands in Promotions. The fix is mechanical: remove the promotional signals and add conversational signals. The rest of this guide walks through each one in priority order.
How Gmail's Tab Classifier Actually Scores
Gmail runs every inbound message through a tab classifier before delivery. Google has not published the full feature list, but the observable behavior across thousands of cold email tests narrows it to these signals:
| Signal | Weight Toward Promotions | Why | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| List-Unsubscribe header | Strong | The canonical "this is a mailing list" marker. Required for bulk senders >5000/day but used by classifier at all volumes. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Precedence: bulk header | Strong | Legacy bulk-sender flag. Some ESPs still inject it by default. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTML |