Skip to content

Connect SendGrid to Odoo: Transactional Email Guide

DeployMonkey Team · March 22, 2026 10 min read

Why SendGrid for Odoo?

Gmail and Office 365 have daily sending limits (500 and 10,000 respectively). SendGrid handles 100,000+ emails/day with 99%+ deliverability, dedicated IPs, and email analytics. It is the go-to for production Odoo instances that send invoices, notifications, and marketing emails at scale.

SendGrid Plans for Odoo

PlanEmails/DayPriceOdoo Use Case
Free100$0Development only
Essentials100,000/mo$19.95/moSmall production
Pro1,500,000/mo$89.95/moMedium-large production

Setup Method 1: SMTP (Simplest)

Step 1: Get SendGrid API Key

  1. Sign up at sendgrid.com
  2. Settings → API Keys → Create API Key
  3. Permissions: Full Access (or restrict to Mail Send)
  4. Copy the API key (shown only once)

Step 2: Configure in Odoo

  1. Settings → Technical → Outgoing Mail Servers
  2. SMTP Server: smtp.sendgrid.net
  3. SMTP Port: 587
  4. Connection Security: TLS (STARTTLS)
  5. Username: apikey (literally the word "apikey")
  6. Password: your_sendgrid_api_key
  7. Click "Test Connection"

Step 3: Set email_from in odoo.conf

# odoo.conf:
email_from = [email protected]
# This MUST match an authenticated domain in SendGrid

Setup Method 2: odoo.conf SMTP

# Alternative: configure SMTP directly in odoo.conf
smtp_server = smtp.sendgrid.net
smtp_port = 587
smtp_ssl = True
smtp_user = apikey
smtp_password = SG.xxxxxxxxxxxxxxxxxxxx
email_from = [email protected]

Domain Authentication (Critical)

Without domain authentication, emails land in spam. SendGrid requires:

  1. SendGrid → Settings → Sender Authentication → Domain Authentication
  2. Enter your domain (e.g., company.com)
  3. Add the DNS records SendGrid provides:
    # CNAME records (3 for domain auth):
    em1234.company.com → u1234567.wl.sendgrid.net
    s1._domainkey.company.com → s1.domainkey.u1234567.wl.sendgrid.net
    s2._domainkey.company.com → s2.domainkey.u1234567.wl.sendgrid.net
  4. Click "Verify" in SendGrid after DNS propagation (up to 48 hours)

Deliverability Best Practices

  • Authenticate domain — DKIM + SPF via SendGrid's sender authentication
  • Use consistent from address — Same email_from in odoo.conf
  • Warm up IP — If using dedicated IP, gradually increase sending volume
  • Monitor bounces — SendGrid dashboard shows bounces, blocks, spam reports
  • Clean lists — Remove invalid email addresses from Odoo contacts
  • Content quality — Avoid spam trigger words in invoice emails

Monitoring

# SendGrid Dashboard shows:
# - Delivered count
# - Bounce rate (should be < 2%)
# - Spam report rate (should be < 0.1%)
# - Open rate
# - Click rate
# - Block count (ISP-level blocks)

# Set up alerts:
# SendGrid → Settings → Mail Settings → Event Notification
# Webhook URL for bounces and spam reports

Troubleshooting

IssueFix
Test connection failsCheck API key is correct. Username must be literally "apikey"
Emails in spamComplete domain authentication. Check mail-tester.com score
"Sender not authorized"email_from domain must match authenticated sender in SendGrid
Rate limitedFree plan = 100/day. Upgrade plan for production volume
Bounces not handledSet up bounce webhook to update Odoo contact records

SendGrid vs Alternatives

ServiceFree TierPaid FromBest For
SendGrid100/day$19.95/moGeneral purpose, analytics
Amazon SES62K/mo (from EC2)$0.10/1K emailsHigh volume, AWS users
Mailgun100/day (trial)$35/moDevelopers, API-first
Postmark100/mo$15/moTransactional focus

DeployMonkey + SendGrid

DeployMonkey configures SendGrid automatically during Odoo setup. Enter your API key, and the AI agent handles SMTP configuration, domain authentication guidance, and email deliverability monitoring.