· 12 min read

Email Deliverability Best Practices for Developers

Technical guide to email deliverability. DNS configuration, authentication, reputation management, and monitoring for transactional email.

Deliverability is the percentage of your emails that actually reach the inbox. It is not the same as delivery rate, which only tells you whether the receiving server accepted the message. An email can be "delivered" but land in spam.

This guide covers the technical practices that improve deliverability for transactional email.

DNS Authentication

Email authentication proves you are authorized to send from your domain. Three protocols work together:

SPF Configuration

SPF (Sender Policy Framework) lists authorized sending servers in a DNS TXT record.

# Check current SPF record
dig TXT example.com +short

# Example SPF record for Sequenzy
example.com.  IN TXT  "v=spf1 include:_spf.sequenzy.com ~all"

# Multiple providers
example.com.  IN TXT  "v=spf1 include:_spf.sequenzy.com include:_spf.google.com ~all"

Best practices:

  • Keep under 10 DNS lookups (SPF has a limit)
  • Use ~all (soft fail) initially, then move to -all (hard fail)
  • Only include services that actually send email

DKIM Configuration

DKIM (DomainKeys Identified Mail) adds cryptographic signatures to prove emails were not modified.

# DKIM DNS record (provided by your email service)
sq1._domainkey.example.com.  IN TXT  "v=DKIM1; k=rsa; p=MIGfMA0GCS..."

# Verify DKIM is working
dig TXT sq1._domainkey.example.com +short

Best practices:

  • Use 2048-bit keys (1024-bit is deprecated)
  • Rotate keys periodically
  • Keep the private key secure

DMARC Configuration

DMARC (Domain-based Message Authentication) tells receivers what to do when SPF or DKIM fail.

# Start with monitoring mode
_dmarc.example.com.  IN TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

# Move to quarantine after reviewing reports
_dmarc.example.com.  IN TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"

# Eventually reject failures
_dmarc.example.com.  IN TXT  "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

Best practices:

  • Start with p=none and review aggregate reports
  • Only move to p=reject after confirming all legitimate email passes
  • Use an aggregate report analyzer (many are free)

Sender Reputation

Email providers track your sending behavior and assign a reputation score. This score affects inbox placement.

Factors That Affect Reputation

  • Bounce rate: High hard bounces indicate poor list hygiene
  • Complaint rate: Users marking your email as spam
  • Spam trap hits: Sending to addresses that should not receive email
  • Engagement: Opens, clicks, replies
  • Volume patterns: Sudden spikes are suspicious

Maintaining Good Reputation

// Handle bounces immediately
app.post('/webhooks/email', async (req, res) => {
  const event = req.body;

  if (event.type === 'bounce' && event.bounceType === 'hard') {
    // Stop sending to this address permanently
    await db.user.update({
      where: { email: event.email },
      data: { emailValid: false, emailInvalidReason: 'hard_bounce' }
    });
  }

  if (event.type === 'complaint') {
    // User marked as spam - respect their preference
    await db.user.update({
      where: { email: event.email },
      data: { emailOptOut: true, optOutReason: 'spam_complaint' }
    });
  }

  res.status(200).send('OK');
});

IP Warming

New IP addresses have no reputation. Sending high volume immediately looks suspicious. Warm up gradually:

Day Recommended Volume
1-250 emails/day
3-4100 emails/day
5-7500 emails/day
8-141,000 emails/day
15-215,000 emails/day
22-3010,000+ emails/day

Most managed services like Sequenzy, Postmark, and Resend handle warming for you using shared IP pools with established reputation.

List Hygiene

// Before sending, verify email is valid
async function canSendEmail(userId: string): Promise<boolean> {
  const user = await db.user.findUnique({
    where: { id: userId },
    select: {
      email: true,
      emailValid: true,
      emailOptOut: true,
      lastEmailBounce: true
    }
  });

  if (!user) return false;
  if (!user.emailValid) return false;
  if (user.emailOptOut) return false;

  // Check for recent bounces
  if (user.lastEmailBounce) {
    const hoursSinceBounce =
      (Date.now() - user.lastEmailBounce.getTime()) / (1000 * 60 * 60);
    if (hoursSinceBounce < 24) return false;
  }

  return true;
}

Monitoring

Metrics to Track

  • Delivery rate: Should be 98%+
  • Bounce rate: Keep under 2%
  • Complaint rate: Keep under 0.1%
  • Time to inbox: Should be seconds for transactional

Tools for Monitoring

Common Problems

Emails Going to Spam

  • Check SPF, DKIM, DMARC alignment
  • Review content for spam triggers
  • Check IP reputation
  • Verify sending domain is not blacklisted

Slow Delivery

  • Receiving server may be throttling you
  • Check your service's delivery time metrics
  • Consider dedicated IP if using shared infrastructure

High Bounce Rate

  • Implement email verification at signup
  • Remove invalid addresses immediately
  • Use double opt-in for marketing emails

Service Recommendations

Services that handle deliverability well:

  • Sequenzy: Managed deliverability with unified transactional + marketing
  • Postmark: Industry-leading deliverability focus
  • Resend: Modern service with good infrastructure

Compare email services

Find the right transactional email service for your deliverability needs.

View Full Comparison