Blog

Why Mailchimp, Mailgun and SendGrid emails always land in Promotions or Spam

If you've ever sent a campaign through Mailchimp, Mailgun, SendGrid, or any other bulk email platform, you've probably noticed: your emails almost never land in the recipient's primary inbox. They end up in the Promotions tab - or worse, in Spam.

Most people assume it's a deliverability problem they can fix with better subject lines or cleaner lists. It's not. The problem is architectural - it's built into the very headers these platforms are required to send.

The mandatory headers that betray you

Since Google's 2024 bulk sender requirements (and Yahoo's matching rules), every platform that sends more than 5,000 emails per day must include specific headers in every message:

List-Unsubscribe - A header that provides a one-click unsubscribe mechanism. Required by Gmail for all bulk senders. The moment Gmail sees this header, it knows the email is a marketing message, not a personal one.

List-Unsubscribe-Post - The companion header that enables Gmail's one-click unsubscribe button. Together with List-Unsubscribe, these two headers are the clearest signal to Gmail that your email is a campaign.

Precedence: bulk - Many ESPs add this header automatically. It literally tells receiving servers: "this is bulk mail, treat it accordingly."

X-Mailer / X-SG-ID / X-MC-User - Platform-specific headers that identify the sending tool. SendGrid adds X-SG-EID and X-SG-ID. Mailchimp adds X-MC-User and X-Mailer: Mailchimp Transactional. Mailgun adds its own set. These are like a neon sign saying "BULK EMAIL PLATFORM."

How Gmail's Promotions tab actually works

Gmail's tab classification system is a machine learning model trained on millions of emails. But it's not magic - it uses very concrete signals:

Header signals (highest weight): The presence of List-Unsubscribe, bulk precedence headers, and known ESP identifiers is the strongest trigger for the Promotions tab. An email with List-Unsubscribe is a marketing email by definition - Gmail doesn't need to read the content to know this.

Sending infrastructure signals: Gmail knows the IP ranges of every major ESP. When your email arrives from a SendGrid IP block (168.245.x.x) or a Mailgun IP range, Gmail already has a prior expectation: this is a bulk sender. Even if you have a dedicated IP, the ASN (Autonomous System Number) of the IP block often belongs to the ESP.

Content structure signals: Marketing emails have characteristic HTML patterns - tracking pixels (1x1 transparent images), click-tracking redirects (links that go through the ESP's tracking domain before reaching the destination), template CSS structures, and responsive email markup. These patterns reinforce the classification.

The Spam scenario: incomplete or incorrect headers

Here's where it gets worse. If the required headers are present but malformed, or if authentication records are incomplete, the email doesn't just go to Promotions - it goes to Spam.

Common scenarios that trigger Spam instead of Promotions:

Broken List-Unsubscribe: If the unsubscribe URL returns a 404, or the mailto: address bounces, Gmail penalizes the sender. The header is there but doesn't work - that's worse than not having it, because it looks like you're trying to comply without actually complying.

SPF/DKIM alignment failure: When you send through Mailgun, the DKIM signature might be signed by mailgun.org, not your domain. If your DMARC policy expects alignment and it doesn't match, Gmail flags the email. Many senders set up SPF and DKIM but forget about DMARC alignment - the email passes SPF but fails DMARC, and goes to Spam.

Missing authentication: If SPF or DKIM is not set up at all, the email is almost guaranteed to go to Spam, regardless of content quality. This is non-negotiable since 2024.

Why you can't "trick" the system

Some senders try to work around this by removing List-Unsubscribe headers or stripping ESP identifiers. This is a terrible idea for two reasons:

First, Gmail requires List-Unsubscribe for senders above 5,000 emails/day. Removing it violates the requirement and leads to direct blocking - not just Spam placement, but outright rejection.

Second, even without the explicit headers, Gmail can still identify ESP-originated emails from the MIME structure, sending IP, DKIM domain, and content patterns. Removing headers doesn't remove the fingerprint - it just adds "non-compliant sender" to the list of signals.

The fundamental problem

The core issue is simple: bulk email platforms are designed to send bulk email, and Gmail is designed to detect bulk email. These two systems are in direct opposition. The platform must identify itself (for compliance and deliverability), and Gmail uses that identification to classify the message.

There is no configuration in Mailchimp, no setting in SendGrid, and no API parameter in Mailgun that makes your email look like a personal message. The platform's infrastructure, headers, and sending patterns will always identify it as what it is: a marketing campaign.

The only emails that consistently reach the primary inbox are those that are genuinely indistinguishable from personal, one-to-one communication - in their headers, their MIME structure, their sending patterns, and their infrastructure. Not just in their content.

Start delivering to inbox

Fill in the form and we will get back to you within 24 hours

Contact us