Fix SendGrid emails going to spam

When SendGrid mail lands in spam, the defaults are usually to blame: sendgrid.net DKIM signing, ct.sendgrid.net link wrapping, and shared IPs all tie your reputation to a platform spammers have abused heavily for years. Domain authentication fixes both halves of DMARC at once on SendGrid (the em CNAME aligns SPF, the s1 and s2 CNAMEs align DKIM), which makes those three records the highest-leverage fix on this page. Below: the SendGrid-specific causes, including Microsoft's S3140 and S3150 blocks, and how to verify a fix with a real send.

Why SendGrid emails land in spam.

01

Your mail is still signed by sendgrid.net, not your domain

A new SendGrid account can start sending with nothing more than Single Sender Verification, which confirms you control a From address and nothing else. Mail goes out DKIM-signed by sendgrid.net, Gmail shows "via sendgrid.net" next to your name, and DMARC alignment fails. Since the February 2024 Google and Yahoo rules, anyone sending 5,000+ emails a day to Gmail needs aligned authentication, and SendGrid's own docs treat Single Sender Verification as a testing-stage option. Complete domain authentication under Settings > Sender Authentication, then confirm the DKIM d= domain on a live send.

02

Every tracked link resolves through ct.sendgrid.net

With click tracking on and no link branding, SendGrid rewrites every link through its default ct.sendgrid.net tracking domain, and that domain has a documented history of phishing abuse: attackers mask malicious URLs behind SendGrid tracking redirects, and corporate filters such as Microsoft Defender have flagged sendgrid.net links as malicious outright. A link domain that never matches your From domain, on a redirector with that history, is a strong spam signal. Set up link branding in Settings > Sender Authentication so tracked links resolve through a subdomain of your own domain.

03

Essentials accounts share IPs with SendGrid's abuse problem

On the Essentials plan every send leaves from shared IP pools; dedicated IPs only arrive with Pro and Premier. SendGrid groups senders of similar reputation, but you still ride infrastructure on the platform spammers and phishers favor, including documented waves of hijacked accounts pumping out phishing mail. You cannot pick your pool, so control what you can: domain authentication and link branding move the signals filters weigh most onto your own domain, and consistent engagement keeps you grouped with better senders.

04

Microsoft is blocking the sending IP: 550 5.7.1 with S3140 or S3150

Outlook.com, Hotmail, and Microsoft 365 reject with 550 5.7.1 errors carrying an S3140 or S3150 code when they put the sending IP on their block list; Microsoft publishes no separate meaning for the two codes. These rejections land in your Blocks list, not Bounces, and SendGrid has confirmed that many recent S3140/S3150 blocks hit reputable senders during Microsoft-side filtering changes. Check your IPs in Microsoft SNDS: green results plus piling blocks is a strong case to file a delisting and support request at olcsupport.office.com with your domains, IPs, and the exact bounce text.

05

A fresh dedicated IP went straight to full volume

Pro and Premier plans include a dedicated IP, and the switch is a common trigger for sudden spam placement: the new IP has zero history, so providers throttle or junk high volume from it. SendGrid's guidance is to warm it gradually over weeks, starting with your most engaged recipients. Use SendGrid's automated IP warmup when the IP is added, or follow a manual ramp schedule, and keep volume consistent afterward, because an IP that sends in bursts cools back down.

06

Suppression lists were cleared, purged, or ignored

SendGrid automatically suppresses hard bounces, spam reports, and unsubscribes, then silently drops future sends to those addresses. Two failure modes follow. Deleting entries (or enabling bounce purge) re-mails dead and complaining addresses, which is exactly the behavior that sinks IP and domain reputation. And because drops are silent, senders sometimes "fix" missing mail by clearing the lists; check the Activity Feed for Dropped events before touching them.

How SendGrid authenticates your mail.

Domain authentication on SendGrid fixes both halves of DMARC at once: the em CNAME moves the Return-Path so SPF aligns, and the s1/s2 CNAMEs move DKIM signing onto your domain. That is more than DKIM-only ESPs can offer, and the whole flow lives under Settings > Sender Authentication.

record default the problem the fix
DKIM Without domain authentication, SendGrid signs mail as sendgrid.net. Single Sender Verification does not change that; it only verifies a From address. The DKIM d= domain never matches your From domain, DMARC alignment fails, and Gmail shows "via sendgrid.net" beside your sender name. Run Settings > Sender Authentication > Authenticate Your Domain and publish the two DKIM CNAMEs (s1._domainkey and s2._domainkey, pointing to hosts like s1.domainkey.u1234567.wl123.sendgrid.net); with automated security on, SendGrid rotates the keys behind the CNAMEs for you.
SPF The default Return-Path is a sendgrid.net address, so SPF passes against SendGrid's domain rather than yours. SPF without alignment contributes nothing to DMARC, and the bounce domain builds no reputation for your brand. The third CNAME from the same wizard (em1234.yourdomain.com pointing to u1234567.wl123.sendgrid.net) delegates a return-path subdomain to SendGrid, which publishes the SPF record there; with automated security on, do not add include:sendgrid.net to your root SPF.
DMARC The Authenticate Your Domain wizard hands you a _dmarc TXT record (v=DMARC1; p=none;), but publishing it is on you, and mail flows whether or not you do. Google and Yahoo require a DMARC record on bulk senders' From domains, and an enforcement policy (quarantine or reject) without aligned DKIM and SPF sends your own mail to spam. Publish v=DMARC1; p=none; with an rua reporting address at _dmarc.yourdomain.com, watch the reports while the CNAMEs settle, then tighten the policy once aligned sends run clean.
Link branding Click tracking rewrites every link through ct.sendgrid.net until you brand a link subdomain. ct.sendgrid.net has a documented phishing-abuse history and gets flagged by corporate URL filters, and the link domain never matches your From domain. In Settings > Sender Authentication, complete the Brand Your Links flow and publish its CNAMEs (a url1234 host plus a numeric host, both pointing to sendgrid.net) so tracked links resolve through your own subdomain.

Once you have updated these records, confirm they pass with Unspam's free SPF checker, DKIM checker, and DMARC checker.

How to test a SendGrid campaign with Unspam.

SendGrid's test paths do not behave like production sends. Marketing Campaigns test emails go out with "Test -" prepended to the subject line and without live links, Email Testing previews render the message without a normal send, and the Email API's sandbox mode validates the payload without delivering anything. The only honest test is a real send to a seed address.

  1. 01

    Get your Unspam seed address

    Start a spam test or inbox placement test in Unspam and copy the test address it generates. Placement tests include seed addresses across Gmail, Outlook, Yahoo, Zoho, ProtonMail and AOL.

  2. 02

    Add the seed address as a SendGrid contact

    For Marketing Campaigns, go to Marketing > Contacts > Add Contacts, add the address manually, and keep seeds in their own list named something like Deliverability seeds. For the Email API, skip this step; the seed address goes straight into your recipient field.

  3. 03

    Send the real message, not a test

    Marketing Campaigns: build the Single Send exactly as it will go out, choose the seed list under Recipients, and use Send Immediately, not the test button. Email API: fire your production template through the same API call or SMTP route your app uses, with the seed as recipient and sandbox mode off.

  4. 04

    Read the results in Unspam

    Check the SpamAssassin-style spam score, the SPF, DKIM and DMARC verdicts on the live send (the DKIM d= domain should be yours via the s1/s2 selectors, the Return-Path your em subdomain), placement per provider, client previews and the AI eye-tracking heatmap. The AI fix assistant flags what to change before the real campaign.

  5. 05

    Check the Activity Feed if a seed never arrives, then re-test

    If the seed address ever bounced or filed a spam report, SendGrid drops the send silently; look for a Dropped event and remove only that one suppression. Apply fixes, send again to the same seed list, and compare runs. The free tier covers 10 spam tests, 10 previews, 10 heatmaps and 3 inbox placement tests per month with no card; paid plans start at $9 per month with a 14-day refund.

The same test renders your campaign in 50+ real email clients, Gmail, Outlook, Apple Mail, iPhone, and Android among them, each in light and dark mode, via email client previews, so you confirm placement and rendering in one pass.

SendGrid features that quietly affect delivery.

Suppressed addresses are dropped without a bounce

A send to any address on Bounces, Spam Reports, or Global Unsubscribes produces a Dropped event in the Activity Feed and no email ever leaves SendGrid. Nothing warns you at send time. When a recipient or a seed address never got a message, check Suppressions before blaming spam filters.

Blocks and bounces behave differently

A bounce permanently suppresses an address; a block does not. Block events (deny lists, ISP blocks like Microsoft's S3140/S3150, content filtering) leave the address sendable, so the next campaign retries it. Useful for temporary IP trouble, but it means blocks never self-heal through suppression: read the Block Reason text and fix the underlying cause.

Test sends advertise themselves

Marketing Campaigns prepends "Test -" to the subject of every test email and does not enable live links, so the message that filters score is not the message customers receive. Inbox placement of a test send proves nothing either way. Validate with a real Single Send, or a production API call, to seed addresses.

Single Sender Verification is a testing shortcut, not authentication

It proves you control a From address; it signs nothing and aligns nothing. SendGrid's docs recommend against free-mailbox single senders (gmail.com, outlook.com) because Google, Yahoo, and Microsoft enforce DMARC on their own domains, so that mail gets junked or rejected. Anything production-facing needs domain authentication.

What real SendGrid senders run into.

The deliverability problems SendGrid senders hit most often, each with the fix that resolves it.

Outlook throttled all our mail with 451 4.7.650, and nothing on our end changed

Senders on healthy dedicated IPs report waves of soft deferrals reading '451 4.7.650 ... temporarily rate limited due to IP reputation' at Outlook, Hotmail, and Live, even with 99 percent SendGrid reputation and clean SNDS. Mail is not rejected, it just retries for up to 72 hours, and Microsoft's first automated reply is usually 'nothing detected,' which stalls people.

The fix Confirm the IP is green in Microsoft SNDS and rDNS resolves, then treat this as a Microsoft-side throttle, not a SendGrid fix. Open a ticket at olcsupport.office.com and reply to the first automated 'nothing detected' response to request escalation; Microsoft then resets the throttling limit against your IP to match your reputation and delivery usually clears within hours. On an established IP that is green in SNDS, do not slow to a crawl or restart warmup. The opposite applies only if these deferrals hit a genuinely new IP mid-warmup or one not green in SNDS: there, back off volume and pace the ramp.

SendGrid quietly put our new account 'under review' and our signup emails stopped going out

Every new SendGrid account enters a vetting hold before it can send, and an established account can be flipped to 'warned' or 'suspended' on a deliverability drop or spam complaints. While suspended, mail requests queue for up to 72 hours and then silently expire, so senders assume a spam-filter problem when the mail never left SendGrid at all.

The fix Check the admin-email inbox for the SendGrid notification (vetting request, 'at risk for suspension' warning, or suspension notice) and reply directly to it, since it routes to the account-review and compliance team; general support cannot reactivate a flagged account. For a new account, answer the sending-purpose questions promptly to clear the hold, which normally resolves in 24 to 72 hours. Note the states differ: a 'warned' account can still send while you respond, but a suspended account has mail queued for up to 72 hours then dropped. To avoid the trigger, keep bounce and spam-complaint rates low, since SendGrid flags accounts when the delivered-over-processed ratio falls or complaints rise.

Our password resets started landing in spam right after we blasted a marketing campaign

By default SendGrid sends transactional and marketing mail over the same identity and IP reputation, and marketing mail drags reputation down through lower engagement and more complaints. When a promo campaign spikes complaints, the hit follows your OTPs, receipts, and password resets into the spam folder.

The fix Separate the streams at the level ISPs judge: the sending domain. Sign transactional and marketing mail from different subdomains (for example mail.yourbrand.com for marketing, txn.yourbrand.com for password resets and receipts), each domain-authenticated under Settings > Sender Authentication, so complaints against the marketing subdomain do not follow a separately DKIM-signed transactional one. Changing only the visible From domain is not enough; the mail must be DKIM-signed by the separate subdomain. Also create a subuser per stream for independent stats and reputation. On Pro or Premier, put each subuser on its own dedicated IP or pool once you send at volume (roughly 250,000+ messages a month); Essentials cannot split IP reputation or use subusers, so there the subdomain separation is the fix that matters.

Our SendGrid open and click rates look amazing, and subscribers keep vanishing off the list

With open and click tracking on, corporate security gateways fetch every tracked link (through ct.sendgrid.net) in a sandbox before the recipient sees the email, including the unsubscribe link. That inflates opens and clicks, and a GET on the tracked unsubscribe link can silently unsubscribe valid recipients you never actually lost.

The fix Do not trust raw open and click counts for deliverability decisions; SendGrid confirms it cannot distinguish a bot click from a human one and records all of it, so corroborate with replies, conversions, or seed-list placement. Make the mailbox-provider one-click control the primary unsubscribe path: enable Subscription Tracking so SendGrid emits the List-Unsubscribe and List-Unsubscribe-Post: List-Unsubscribe=One-Click headers (RFC 8058), where the unsubscribe happens on a POST that scanners do not send. If you keep an in-body link, ensure a GET only shows a confirmation page and only a POST unsubscribes, or use Group Unsubscribe. Filter non-human activity with the Event Webhook, and watch for clusters of clicks or unsubscribes landing within seconds of a send from the same corporate domain.

SendGrid mangles our List-Unsubscribe header, so one-click unsubscribe breaks in Gmail and complaints climb

Senders report that once the List-Unsubscribe header value exceeds 77 bytes, SendGrid's SMTP relay MIME-encodes it, which Gmail and Outlook cannot parse, so the one-click unsubscribe control disappears. Annoyed recipients hit report spam instead of unsubscribing, which lifts complaint rates and pushes placement toward spam. It hides because Gmail's Show original view decodes the header, so it looks fine on casual inspection.

The fix Keep the List-Unsubscribe header value at or under 77 bytes so SendGrid relays it unchanged: use a short unsubscribe URL on a bare domain path rather than a long query string, and if you are near the limit send a single https or mailto entry instead of both. Confirm the raw header on a live send by inspecting the message source at the receiving mailbox, not Gmail's decoded Show original, and verify it is still plain ASCII. Also send the List-Unsubscribe-Post: List-Unsubscribe=One-Click header so Gmail and Yahoo honor one-click unsubscribe, since a broken header counts against the 2024 bulk-sender requirements.

SendGrid deliverability, answered.

Why does Gmail show "via sendgrid.net" next to my sender name?

Your domain is not authenticated, so SendGrid signs the mail as sendgrid.net and Gmail flags the mismatch with the via label. Complete domain authentication under Settings > Sender Authentication; once the em and s1/s2 CNAMEs validate, the label disappears and your own domain starts building reputation.

Outlook suddenly rejects my mail with 550 5.7.1 and an S3140 or S3150 code. Did I break something?

Not necessarily. S3140 and S3150 are Microsoft IP blocks, and SendGrid has confirmed that recent waves hit reputable senders during Microsoft-side filtering changes. Check the sending IPs in Microsoft SNDS: if they show green while blocks accumulate, submit a delisting and support request at olcsupport.office.com with your domains, IPs, and the exact bounce text. If SNDS shows yellow or red, fix complaint and bounce sources first.

Will a dedicated IP get me out of the spam folder?

Usually not. Dedicated IPs come with Pro and Premier plans, and a fresh one is colder than any shared pool: zero history means throttling until weeks of warmup are done. Low or inconsistent volume on a dedicated IP performs worse than a healthy shared pool. Fix authentication, link branding, and list quality first; move to a dedicated IP for volume and control, not as a spam fix.

Can Unspam connect to my SendGrid account and test sends automatically?

No. Unspam does not integrate with the SendGrid API or any other ESP API. The workflow is manual by design: add Unspam's test address as a contact or API recipient, send a real message through your production path, and read the results in Unspam. That is the only way to test the exact mail, signature, and links your recipients receive.

Mail to some addresses never arrives and there is no bounce. Where did it go?

Almost certainly a suppression. SendGrid drops sends to addresses on Bounces, Spam Reports, and Unsubscribes without attempting delivery, and logs a Dropped event in the Activity Feed. Do not mass-delete the lists to fix it: re-mailing dead and complaining addresses is what damages reputation. Remove only addresses you can prove are valid and willing.

Is deliverability worse on SendGrid's cheaper plans?

The infrastructure gap is real but narrow. Essentials accounts send from shared IP pools, and SendGrid's defaults carry baggage: the free plan, long a favorite of spammers and account hijackers, was retired entirely in 2025, but sendgrid.net signing and ct.sendgrid.net links still tie you to that history. The fix is separation rather than upgrading: domain authentication and link branding move your reputation onto your own domain on any plan.

SendGrid platform details were verified against publicly available documentation in June 2026 and may have changed since. SendGrid is a trademark of its respective owner. Unspam is not affiliated with or endorsed by SendGrid.

Test your next SendGrid campaign before your subscribers do.