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
| Plan | Emails/Day | Price | Odoo Use Case |
|---|---|---|---|
| Free | 100 | $0 | Development only |
| Essentials | 100,000/mo | $19.95/mo | Small production |
| Pro | 1,500,000/mo | $89.95/mo | Medium-large production |
Setup Method 1: SMTP (Simplest)
Step 1: Get SendGrid API Key
- Sign up at sendgrid.com
- Settings → API Keys → Create API Key
- Permissions: Full Access (or restrict to Mail Send)
- Copy the API key (shown only once)
Step 2: Configure in Odoo
- Settings → Technical → Outgoing Mail Servers
- SMTP Server:
smtp.sendgrid.net - SMTP Port:
587 - Connection Security: TLS (STARTTLS)
- Username:
apikey(literally the word "apikey") - Password:
your_sendgrid_api_key - Click "Test Connection"
Step 3: Set email_from in odoo.conf
# odoo.conf:
email_from = [email protected]
# This MUST match an authenticated domain in SendGridSetup 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:
- SendGrid → Settings → Sender Authentication → Domain Authentication
- Enter your domain (e.g., company.com)
- 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 - 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 reportsTroubleshooting
| Issue | Fix |
|---|---|
| Test connection fails | Check API key is correct. Username must be literally "apikey" |
| Emails in spam | Complete domain authentication. Check mail-tester.com score |
| "Sender not authorized" | email_from domain must match authenticated sender in SendGrid |
| Rate limited | Free plan = 100/day. Upgrade plan for production volume |
| Bounces not handled | Set up bounce webhook to update Odoo contact records |
SendGrid vs Alternatives
| Service | Free Tier | Paid From | Best For |
|---|---|---|---|
| SendGrid | 100/day | $19.95/mo | General purpose, analytics |
| Amazon SES | 62K/mo (from EC2) | $0.10/1K emails | High volume, AWS users |
| Mailgun | 100/day (trial) | $35/mo | Developers, API-first |
| Postmark | 100/mo | $15/mo | Transactional 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.