Skip to content

Email Infrastructure Setup Guide

Overview

This technical guide provides step-by-step instructions for setting up a professional email marketing infrastructure that ensures maximum deliverability and scalability. Follow these steps in order to avoid common pitfalls.

Domain Strategy & Setup

Step 1: Domain Acquisition via Cloudflare

Domains to Purchase

  1. Marketing Domain: get-[yourbrand].com or try-[yourbrand].com
  2. Sales Domain: hello-[yourbrand].com or reach-[yourbrand].com
  3. Newsletter Domain: news-[yourbrand].com or updates-[yourbrand].com

Cloudflare Purchase Process

1. Log into Cloudflare Dashboard
2. Navigate to "Domain Registration"
3. Search for available domains
4. Add to cart ($8.57/year for .com)
5. Enable auto-renewal
6. Keep "Use Cloudflare Nameservers" selected

Step 2: DNS Configuration

Base DNS Records for Each Domain

# A Records (Point to your landing pages)
Type: A
Name: @
Value: Your-Server-IP
TTL: Auto

Type: A
Name: www
Value: Your-Server-IP
TTL: Auto

# CNAME for subdomains
Type: CNAME
Name: email
Value: Your-ESP-tracking-domain
TTL: Auto

Google Workspace Configuration

Step 1: Account Setup

  1. Navigate to: workspace.google.com
  2. Select Plan: Business Standard ($12/user/month)
  3. Initial Users to Create:
    hello@marketing-domain.com (general marketing)
    sarah@marketing-domain.com (personalized from marketing manager)
    mike@sales-domain.com (sales outreach)
    team@newsletter-domain.com (newsletter sends)
    noreply@main-domain.com (transactional only)
    

Step 2: MX Records Configuration

Add these MX records in Cloudflare for each domain using Google Workspace:

Type: MX | Priority: 1  | Value: aspmx.l.google.com
Type: MX | Priority: 5  | Value: alt1.aspmx.l.google.com
Type: MX | Priority: 5  | Value: alt2.aspmx.l.google.com
Type: MX | Priority: 10 | Value: alt3.aspmx.l.google.com
Type: MX | Priority: 10 | Value: alt4.aspmx.l.google.com

Step 3: Email Alias Setup

In Google Workspace Admin:

1. Admin Console → Users
2. Select user → User Information
3. Email aliases → Add Alias
4. Recommended aliases:
   - info@domain.com → hello@domain.com
   - contact@domain.com → hello@domain.com
   - support@domain.com → help@domain.com

Email Authentication Setup

SPF (Sender Policy Framework)

What It Does

Specifies which servers can send email for your domain.

DNS Record to Add

Type: TXT
Name: @
Value: v=spf1 include:_spf.google.com include:spf.sendinblue.com ~all
TTL: Auto

Common ESP SPF Includes

  • Brevo/Sendinblue: include:spf.sendinblue.com
  • SendGrid: include:sendgrid.net
  • Mailchimp: include:servers.mcsv.net
  • ActiveCampaign: include:emsd1.com

DKIM (DomainKeys Identified Mail)

What It Does

Adds cryptographic signature to verify email authenticity.

Google Workspace DKIM Setup

1. Admin Console → Apps → Google Workspace → Gmail
2. Authenticate email → Generate new record
3. Copy the DKIM key
4. Add to DNS:

Type: TXT
Name: google._domainkey
Value: [Your DKIM key from Google]
TTL: Auto

5. Back in Admin Console → Start Authentication

ESP DKIM Setup (Brevo Example)

1. Brevo Dashboard → Settings → Senders & IP
2. Domains → Add a new domain
3. Copy provided DKIM records
4. Add to DNS:

Type: TXT
Name: mail._domainkey
Value: [DKIM key from Brevo]
TTL: Auto

DMARC (Domain-based Message Authentication)

What It Does

Tells receiving servers what to do with emails that fail authentication.

Progressive DMARC Implementation

Start with monitoring, gradually increase strictness:

Week 1-2: Monitor Only

Type: TXT
Name: _dmarc
Value: v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; pct=100

Week 3-4: Quarantine 25%

Value: v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@yourdomain.com

Week 5-6: Quarantine 50%

Value: v=DMARC1; p=quarantine; pct=50; rua=mailto:dmarc@yourdomain.com

Week 7+: Full Enforcement

Value: v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@yourdomain.com

Email Warming Schedule

Why Warming Is Critical

  • New domains have zero reputation
  • ISPs limit unknown senders to ~50 emails/day
  • Gradual increases build trust
  • Prevents immediate blacklisting

6-Week Warming Schedule

Week 1: Foundation (50 emails/day)

Day 1-2: 10 emails to engaged internal team
Day 3-4: 25 emails to partners/vendors
Day 5-7: 50 emails to most engaged subscribers

Week 2: Early Growth (100 emails/day)

Day 1-3: 75 emails to engaged segments
Day 4-7: 100 emails to active subscribers
Focus: >50% open rate segments only

Week 3: Scaling (250 emails/day)

Day 1-2: 150 emails
Day 3-4: 200 emails
Day 5-7: 250 emails
Include: Recently active (30-day) segments

Week 4: Expansion (500 emails/day)

Day 1-3: 350 emails
Day 4-7: 500 emails
Include: 60-day active segments

Week 5: Acceleration (1,000 emails/day)

Day 1-3: 750 emails
Day 4-7: 1,000 emails
Include: 90-day active segments

Week 6: Full Volume (2,000+ emails/day)

Gradually increase to full list
Monitor metrics closely
Pull back if issues arise

Warming Best Practices

  1. Send to most engaged users first
  2. Maintain >25% open rates during warming
  3. Remove bounces immediately
  4. Use different subject lines daily
  5. Include text and HTML versions

ESP Integration Setup

Brevo Configuration

Step 1: Domain Verification

1. Settings → Senders & IP → Domains
2. Add new domain → Enter domain name
3. Add provided DNS records:
   - SPF record (if not already added)
   - DKIM records (2 records)
   - Tracking CNAME

Step 2: Sender Configuration

1. Settings → Senders & IP → Senders
2. Add senders:
   - hello@marketing-domain.com
   - sarah@marketing-domain.com
   - team@newsletter-domain.com
3. Verify each via email confirmation

Step 3: IP Pool Configuration

1. Settings → Senders & IP → Dedicated IPs
2. For volumes >100k/month, consider dedicated IP
3. Shared IP pools are fine for <100k/month

Step 4: Webhook Setup

1. Settings → Webhooks
2. Configure endpoints for:
   - Opens
   - Clicks
   - Bounces
   - Unsubscribes
   - Spam complaints
3. Endpoint URL: https://yourapp.com/webhooks/brevo

CRM Integration

API Connection

// Brevo API Configuration
const SibApiV3Sdk = require('sib-api-v3-sdk');
const defaultClient = SibApiV3Sdk.ApiClient.instance;

// Configure API key
const apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR_API_KEY';

// Initialize API instances
const contactsApi = new SibApiV3Sdk.ContactsApi();
const emailApi = new SibApiV3Sdk.TransactionalEmailsApi();

Contact Sync Setup

1. Map CRM fields to Brevo attributes:
   - First Name → FIRSTNAME
   - Last Name → LASTNAME
   - Company → COMPANY
   - Lead Score → LEAD_SCORE
   - Stage → SALES_STAGE

2. Set up bi-directional sync:
   - New CRM contacts → Brevo list
   - Brevo engagement → CRM activity
   - Unsubscribes → CRM opt-out field

Deliverability Monitoring Setup

Email Testing Tools

1. Mail-Tester.com Setup

1. Send test email to provided address
2. Check spam score (target: 8+/10)
3. Fix identified issues:
   - Missing DKIM
   - Broken links
   - Spam trigger words
   - Image/text ratio

2. GlockApps Configuration

1. Create account → Add domain
2. Set up seed list testing:
   - 15 Gmail addresses
   - 10 Outlook addresses
   - 5 Yahoo addresses
   - 10 Corporate addresses
3. Schedule weekly tests
4. Set alerts for <90% inbox placement

3. MXToolbox Monitoring

1. Add all domains to monitoring
2. Enable alerts for:
   - Blacklist appearances
   - DNS changes
   - SSL certificate issues
3. Weekly reports to email

Reputation Monitoring

Sender Score by Return Path

1. Register at senderscore.org
2. Add your IPs
3. Monitor weekly:
   - Score >80: Good
   - Score 70-80: Needs improvement
   - Score <70: Critical issues

Google Postmaster Tools

1. Add and verify domains
2. Monitor daily:
   - IP reputation
   - Domain reputation
   - Spam rate
   - Delivery errors
3. Target: "High" reputation, <0.1% spam rate

Microsoft SNDS

1. Sign up at postmaster.live.com
2. Add IP addresses
3. Monitor:
   - Spam complaint rate
   - Spam trap hits
   - Data validity

List Hygiene & Validation

Email Validation Process

Initial List Cleaning

1. Export email list from CRM
2. Upload to ZeroBounce:
   - Remove duplicates
   - Identify invalid formats
   - Detect disposable emails
   - Find spam traps
   - Check domain validity
3. Remove all "invalid" and "abuse" emails
4. Quarantine "unknown" for manual review

Ongoing Hygiene Rules

Hard Bounces: Remove immediately
Soft Bounces: Remove after 3 consecutive
Unopened: Re-engage after 90 days, remove after 120
Unsubscribes: Remove within 24 hours
Complaints: Remove immediately + investigate

Segmentation Setup

Engagement-Based Segments

Highly Engaged (Email daily)
- Opened 5+ emails in 30 days
- Clicked 2+ times
- Score: 90-100

Engaged (Email 2-3x/week)
- Opened 3+ emails in 30 days
- Clicked 1+ time
- Score: 70-89

Moderately Engaged (Email weekly)
- Opened 1+ email in 30 days
- No clicks
- Score: 50-69

Disengaged (Re-engagement campaign)
- No opens in 30-60 days
- Score: 20-49

Inactive (Consider removal)
- No opens in 60+ days
- Score: 0-19

Troubleshooting Common Issues

Issue: High Bounce Rate (>2%)

Diagnosis:
1. Check validation service results
2. Review signup source quality
3. Audit list import process

Solution:
1. Clean list with validation service
2. Implement double opt-in
3. Add email validation to forms
4. Remove role-based emails (info@, admin@)

Issue: Low Open Rates (<20%)

Diagnosis:
1. Check sender reputation
2. Review subject lines
3. Analyze send times
4. Check spam folder placement

Solution:
1. Warm domains properly
2. A/B test subject lines
3. Optimize send times by timezone
4. Improve preheader text
5. Clean inactive subscribers

Issue: Spam Complaints (>0.1%)

Diagnosis:
1. Check unsubscribe link visibility
2. Review email frequency
3. Analyze complaint sources
4. Check list acquisition method

Solution:
1. Make unsubscribe prominent
2. Reduce sending frequency
3. Implement preference center
4. Never buy lists
5. Use double opt-in

Issue: Gmail Blocking

Diagnosis:
1. Check Postmaster Tools
2. Review authentication
3. Analyze engagement rates
4. Check blacklists

Solution:
1. Fix authentication issues
2. Reduce volume temporarily
3. Send only to engaged users
4. Request delisting if needed
5. Implement feedback loops

Security Best Practices

Access Control

1. Enable 2FA on all accounts:
   - Google Workspace
   - Cloudflare
   - ESP account
   - Domain registrar

2. Use unique passwords (minimum 16 characters)
3. Limit admin access to 2-3 people
4. Regular access audits (quarterly)

API Key Management

1. Never commit keys to code repositories
2. Use environment variables
3. Rotate keys quarterly
4. Implement IP restrictions where possible
5. Monitor API usage for anomalies

Data Protection

1. Encrypt email lists at rest
2. Use secure transfer protocols (SFTP/HTTPS)
3. Implement data retention policies
4. Regular backups of subscriber data
5. GDPR compliance measures

Monitoring Checklist

Daily Checks (5 minutes)

  • Bounce rate <2%
  • Complaint rate <0.1%
  • Open rate >20%
  • No blacklist appearances
  • Successful ESP sync

Weekly Checks (30 minutes)

  • Sender Score >80
  • Domain reputation "High"
  • Inbox placement >90%
  • List growth positive
  • A/B test results review

Monthly Checks (2 hours)

  • Full deliverability audit
  • List hygiene cleanup
  • DNS record verification
  • API usage review
  • Cost optimization review

Emergency Procedures

Domain Blacklisted

Immediate Actions:
1. Stop all sending from affected domain
2. Identify root cause (usually complaints or bounces)
3. Request delisting with evidence of fixes
4. Switch to backup domain temporarily

Mass Unsubscribes (>2%)

Immediate Actions:
1. Pause campaign immediately
2. Analyze unsubscribe reasons
3. Review email content and frequency
4. Survey unsubscribers for feedback
5. Adjust strategy before resuming

Authentication Failure

Immediate Actions:
1. Verify DNS records haven't changed
2. Check ESP configuration
3. Confirm Google Workspace settings
4. Test with mail-tester.com
5. Contact ESP support if needed

Appendix: DNS Record Templates

Complete DNS Setup for Marketing Domain

# MX Records (Google Workspace)
MX  | 1  | aspmx.l.google.com
MX  | 5  | alt1.aspmx.l.google.com
MX  | 5  | alt2.aspmx.l.google.com
MX  | 10 | alt3.aspmx.l.google.com
MX  | 10 | alt4.aspmx.l.google.com

# SPF Record
TXT | @ | v=spf1 include:_spf.google.com include:spf.sendinblue.com ~all

# DKIM (Google)
TXT | google._domainkey | [Your Google DKIM Key]

# DKIM (ESP)
TXT | mail._domainkey | [Your ESP DKIM Key]

# DMARC
TXT | _dmarc | v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc@yourdomain.com

# Tracking CNAME (ESP)
CNAME | email | [ESP tracking domain]

Document Version: 1.0 Last Updated: 2024 Technical Owner: Marketing Operations Review Cycle: Quarterly

Support Resources

  • Google Workspace Support: workspace.google.com/support
  • Cloudflare Support: support.cloudflare.com
  • Brevo Support: help.brevo.com
  • Deliverability Help: 250ok.com/resources

Remember: Infrastructure is the foundation of email marketing success. Take time to set it up correctly - shortcuts now lead to deliverability problems later.