← All Posts
GuideKien Phan, Founder

Why Your Emails Go to Spam (And How to Fix It)

Your users can't find your emails

You shipped your app. Users sign up. They click 'forgot password.' Nothing arrives — or worse, it lands in spam. This is the most common email problem developers face, and it's usually not your code's fault. ISPs like Gmail, Outlook, and Yahoo use increasingly sophisticated filtering that evaluates your sender reputation, authentication setup, content patterns, and sending behavior. The good news: most spam issues come from 5 fixable causes. The bad news: if you don't fix them, your deliverability gets worse over time as ISPs learn to distrust your domain.

Cause 1: Missing or broken email authentication

This is the #1 reason developer emails go to spam. Without SPF, DKIM, and DMARC records, ISPs have no way to verify that your email actually came from your domain — so they assume it didn't. Since February 2024, Google and Yahoo require SPF and DKIM for all senders. Missing these records doesn't just hurt deliverability — it can get your emails rejected entirely. Check your authentication status by sending a test email to a Gmail account and clicking 'Show original' in the three-dot menu. Look for 'spf=pass', 'dkim=pass', and 'dmarc=pass'. If any show 'fail', that's your problem.

; Required DNS records for email authentication

; SPF — authorize your email provider
yourdomain.com  TXT  "v=spf1 include:_spf.aisend.app ~all"

; DKIM — cryptographic signature
aisend._domainkey.yourdomain.com  CNAME  aisend._domainkey.aisend.app

; DMARC — policy for failed auth
_dmarc.yourdomain.com  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com"

Cause 2: Sending from a new domain without warm-up

ISPs track your sending history. A brand new domain sending 10,000 emails on day one looks like a spammer. Legitimate senders build volume gradually. Start with 100-500 emails per day for the first week, then double weekly until you reach your target volume. This 2-4 week warm-up period builds sender reputation with ISPs. During warm-up, send to your most engaged users first — high open rates signal to ISPs that your emails are wanted. AISend handles warm-up automatically: when it detects a new domain, it gradually increases sending volume across providers to build reputation safely.

Cause 3: Spammy content patterns

Even with perfect authentication, your email content can trigger spam filters. Common triggers: ALL CAPS in subject lines, excessive exclamation marks, URL shorteners (bit.ly, t.ly), image-heavy emails with little text, missing unsubscribe links in non-transactional emails, and suspicious attachment types. For transactional emails specifically, keep content focused on the transaction — don't add promotional sections to your password reset or receipt emails. Gmail's filters are particularly sensitive to mixed-intent emails where transactional content is combined with marketing copy.

Cause 4: Shared IP reputation problems

Most email APIs send your emails from shared IP addresses alongside thousands of other senders. If another sender on that IP sends spam, the IP's reputation drops — and your deliverability suffers too. This is one of the hardest problems to diagnose because it's completely outside your control. Signs of shared IP issues: deliverability drops suddenly without any changes on your end, or deliverability varies hour to hour. Solutions: upgrade to a dedicated IP (usually available on business plans), or use a provider like AISend that routes through multiple providers — if one provider's IPs have issues, your emails automatically route through a healthier provider.

How to diagnose and fix your specific issue

Start with authentication: send a test email and check the raw headers. Then check your domain's reputation using Google Postmaster Tools (free) and Microsoft SNDS. Review your bounce rate — above 2% signals list quality problems. Check if your domain or IP is on any blacklists using MXToolbox. Finally, review your email content for spam trigger patterns. AISend's dashboard shows all of this in one place: authentication status, deliverability scores per provider, bounce rates, and content scoring that flags issues before you send. The AI content scorer analyzes your email against known spam filter patterns and gives you a 0-100 deliverability score with specific improvement suggestions.

// AISend returns deliverability insights with every send
const { id, status, deliverability } = await aisend.emails.send({
  from: "hello@yourapp.com",
  to: "user@gmail.com",
  subject: "Your password reset link",
  html: resetEmailHtml,
});

console.log(deliverability);
// { score: 95, provider: "ses", warnings: [] }

Ready to Send Smarter Emails?

3,000 emails/month free. No credit card required.