Skip to content
iBlockSpam
SPF by provider

SPF record for Odoo

When Odoo Online or Odoo.sh sends mail from your own domain through Odoo's mail server, Odoo asks for the SPF record v=spf1 include:_spf.odoo.com ~all, or for include:_spf.odoo.com added to the record you already have. Odoo runs the SPF test on the bounce address, set by the Alias Domain in General Settings. The include costs 3 DNS lookups.

Include
include:_spf.odoo.com
Where it goes
Your custom domain (the Alias Domain in Odoo)
DNS lookups
3 of 10 (measured November 3, 2026)

The exact SPF record

Copy the example that matches your setup. Each one is a single TXT record; the host is shown as your DNS provider usually expects it (@ means the domain itself).

Odoo only (Odoo's value)

Type: TXT · Host: @ · 3 of 10 DNS lookups

v=spf1 include:_spf.odoo.com ~all

Odoo and Google Workspace

Type: TXT · Host: @ · 4 of 10 DNS lookups

v=spf1 include:_spf.google.com include:_spf.odoo.com ~all

Odoo and Microsoft 365

Type: TXT · Host: @ · 4 of 10 DNS lookups

v=spf1 include:spf.protection.outlook.com include:_spf.odoo.com ~all

How SPF applies to Odoo mail

Receivers check SPF against the domain in the envelope sender (the MAIL FROM or bounce address). Odoo sends with your own domain there, so its include belongs in the SPF record on the domain you send from.

  • If you send through your own outgoing mail server instead of Odoo's, Odoo says to use that provider's SPF and DKIM records for your custom domain, not Odoo's.
  • On 3 November 2026, _spf.odoo.com listed one IP address and nested two further Odoo includes, which is why it costs more than one lookup.
  • Odoo's documentation uses ~all and doesn't discuss -all.

How to add it

  1. Check whether you need the record: Odoo says databases that send from the default Odoo subdomain (such as @company-name.odoo.com) are already set up for SPF, DKIM and DMARC.
  2. In Odoo, open Settings > General Settings and check the Alias Domain. That domain is used for the bounce address, so it is the one that needs the SPF record.
  3. At your DNS host, add include:_spf.odoo.com to the existing TXT record that starts with v=spf1, or create one with v=spf1 include:_spf.odoo.com ~all. Odoo says not to create a second record.
  4. Add the DKIM CNAME (odoo._domainkey pointing to odoo._domainkey.odoo.com.), then check the live SPF record with the SPF Checker below.

DKIM and DMARC alignment

Odoo says DKIM is required when you send from a custom domain through its mail server: a CNAME named odoo._domainkey pointing to odoo._domainkey.odoo.com., tested with the selector odoo. For Odoo Online, Odoo says DKIM on the sending domain is what lets DMARC pass. See our DKIM page for Odoo.

DMARC passes when SPF or DKIM passes and the domain it checked matches your From domain. Our guide to SPF, DKIM and DMARC explains how the three fit together.

Common mistakes

  • Two SPF records. A domain may publish only one record that starts with v=spf1. With two, receivers return a permanent error and SPF fails for all your mail (RFC 7208 section 3.2). Merge every sender into one record.
  • More than 10 DNS lookups. Each include, a, mx, exists and redirect costs a lookup, nested ones included; over 10 is a PermError (section 4.6.4). Odoo's include costs 3 on its own. See how to fix too many SPF lookups.
  • Choosing ~all or -all without a plan. Odoo's documentation uses ~all. -all asks receivers to reject unlisted servers; ~all asks them to accept but mark the mail. Once DMARC is enforced, receivers act on DMARC instead. Read SPF soft fail vs hard fail before you choose.
  • Adding the SPF record to your website domain while the Alias Domain in Odoo is a different one. SPF is checked on the bounce address.
  • Publishing a second v=spf1 record next to your mailbox provider's. Merge the includes into one record.
  • Adding Odoo's include when Odoo actually relays through your own outgoing server. Then your provider's records apply.

Check your SPF record

See your live record, every nested include and the real lookup count. Free, reads public DNS only.

Building a new record? Open the SPF Record Generator with Odoo filled in.

Frequently asked questions

What is the SPF record for Odoo?

v=spf1 include:_spf.odoo.com ~all, published as a TXT record. If the domain already has an SPF record, add include:_spf.odoo.com to it instead; Odoo says a domain must have only one SPF record.

Do I need SPF for Odoo if I send from my odoo.com subdomain?

No. Odoo says Odoo Online and Odoo.sh databases that send from the default Odoo subdomain are pre-configured for SPF, DKIM and DMARC. You need the record only when Odoo sends from your own domain.

Which domain does Odoo check SPF on?

The bounce address, which uses the Alias Domain set in Odoo's General Settings. If that is your custom domain, it must include _spf.odoo.com in its SPF record.

Sources

Values checked against Odoo's documentation on November 3, 2026. Lookup counts measured with our SPF Checker on November 3, 2026; providers change their records, so check yours before relying on a number.

SPF records for other providers

Compare every provider's include in one table

Last updated