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).
Optional custom return-path domain (CNAME, not TXT)
Type: CNAME · Host: mail
mandrillapp.com
Mailchimp's example subdomain is mail.example.com. Then add it under Settings, Tracking & Return Path Domains.
Your main domain on Microsoft 365 stays as it is
Type: TXT · Host: @ · 1 of 10 DNS lookups
v=spf1 include:spf.protection.outlook.com -all
Your main domain on Google Workspace stays as it is
Type: TXT · Host: @ · 1 of 10 DNS lookups
v=spf1 include:_spf.google.com ~all
How SPF applies to Mandrill mail
Mandrill sends with a bounce (MAIL FROM) address on a domain it manages, so receivers check SPF there, not on your domain. You don't add anything to your SPF record for it; your domain is authenticated with DKIM instead.
- Since 15 March 2024, Mailchimp Transactional won't send from unverified domains or from domains without a valid DMARC policy and DKIM records.
- Mailchimp says a custom return-path domain must be a subdomain such as
mail.example.com, never your root domain. You can also choose it per message with thereturn_path_domainAPI parameter or theX-MC-ReturnPathDomainSMTP header. - The
mandrill_verifyTXT record proves you own the domain; it isn't an SPF record and doesn't start withv=spf1.
How to add it
- In Mailchimp Transactional, go to Settings, choose Domains, type your sending domain and click Add.
- Click View DKIM settings and publish the two CNAMEs:
mte1._domainkeytodkim1.mandrillapp.comandmte2._domainkeytodkim2.mandrillapp.com. - Publish a DMARC TXT record on
_dmarc. Mailchimp's minimum isv=DMARC1; p=none. - Click View details to get your
mandrill_verify.key, add it as a TXT record on the domain, then click Test DNS Settings until the domain shows three green checkmarks. - Optionally, create a CNAME on a subdomain (not the root) pointing to
mandrillapp.comand add it under Settings > Tracking & Return Path Domains.
DKIM and DMARC alignment
DKIM is the check that makes Mailchimp Transactional mail pass DMARC: the mte1 and mte2 CNAMEs let it sign with your domain. Without a custom return path, the bounce address sits on mandrillapp.com, so SPF passes for that domain and doesn't align with yours. A return-path subdomain of your From domain can align under DMARC's relaxed default. The Mailchimp marketing records are different; see our Mailchimp DKIM page.
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,existsandredirectcosts a lookup, nested ones included; over 10 is a PermError (section 4.6.4). Mandrill adds nothing to your count, which is one more reason not to add an include for it. See how to fix too many SPF lookups. - Choosing
~allor-allwithout a plan.-allasks receivers to reject unlisted servers;~allasks 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 a Mandrill include to your root record because an older guide said so. Mailchimp's current Transactional docs don't ask for one, and every include spends DNS lookups.
- Pointing your root domain at
mandrillapp.comas the return path. Mailchimp says to use a subdomain, and a CNAME at the root would break your other records. - Treating the
mandrill_verifyTXT record as SPF and merging it into yourv=spf1record. It is a separate TXT record.
Check your SPF record
See your live record, every nested include and the real lookup count. Free, reads public DNS only.
Building a record for your other senders? Use the SPF Record Generator.
Frequently asked questions
Does Mandrill need include:spf.mandrillapp.com in my SPF record?
Mailchimp's current Transactional authentication docs don't ask for it. They require two DKIM CNAMEs, a DMARC policy and domain verification. Leave your root SPF record unchanged unless you have a specific reason to add the include.
What is the Mailchimp Transactional return-path CNAME?
A CNAME on a subdomain of yours, such as mail.example.com, pointing to mandrillapp.com. Add it under Settings, Tracking & Return Path Domains, then click Test DNS Settings. Bounces then use your subdomain instead of mandrillapp.com.
Why does Mailchimp Transactional reject my messages as unsigned?
Mailchimp says an unsigned rejection means the sending domain hasn't been set up properly. It won't send from domains that are unverified or lack valid DKIM records and a DMARC policy, so check all three on the Sending Domains page.
Sources
- Mailchimp Developer: Mailchimp Transactional authentication and delivery
- Mailchimp Developer release notes: new sending domain authentication requirements (19 December 2023)
- RFC 7208: Sender Policy Framework (SPF)
Values checked against Mandrill'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
- Microsoft 365include:spf.protection.outlook.com
- Google Workspaceinclude:_spf.google.com
- Zoho Mailinclude:zoho.com
- GoDaddyinclude:secureserver.net
- Fastmailinclude:spf.messagingengine.com
- Proton Mailinclude:_spf.protonmail.ch
- iCloud Mailinclude:icloud.com
- Rackspace Emailinclude:emailsrvr.com
- Hostingerinclude:_spf.mail.hostinger.com
- Private Emailinclude:spf.privateemail.com
- IONOSinclude:_spf-us.ionos.com
- Amazon SESinclude:amazonses.com
- SendGridinclude:sendgrid.net
- Mailguninclude:mailgun.org
- PostmarkNone needed
- Mailjetinclude:spf.mailjet.com
- SMTP2GONone needed (return-path CNAME)
- SparkPostNone needed (bounce-domain CNAME)
- Elastic Emailinclude:_spf.elasticemail.com
- Resendinclude:amazonses.com
- MailerSendinclude:_spf.mailersend.net
- MailchimpNone needed
- BrevoNone for standard sending; spf.brevo.com with a dedicated IP
- HubSpotAccount-specific (copy from HubSpot)
- KlaviyoNone needed
- ActiveCampaignNone needed (Mailserver Domain CNAME)
- SquarespaceNone needed
- ShopifyNone needed (CNAME records)
- Dynamics 365 Customer InsightsNone needed (optional: your envelope-from domain)
- MailerLiteinclude:_spf.mlsend.com
- Campaign Monitorinclude:_spf.createsend.com
- KitNone needed (ckespa CNAME)
- Marketoinclude:mktomail.com
- Account Engagement (Pardot)None needed (SPF passes automatically)
- Customer.ioCopy from Customer.io (cio##### subdomain)
- Constant ContactNone needed
- Zoho Campaignsinclude:zcsend.net
- Salesforceinclude:_spf.salesforce.com
- Zendeskinclude:mail.zendesk.com
- Freshdeskinclude:email.freshdesk.com
- IntercomNone needed
- Help ScoutNone needed (old value: helpscoutemail.com)
- Odooinclude:_spf.odoo.com
Related guides
SPF record syntax and examples
SPF record syntax explained: mechanisms, qualifiers and modifiers, with copy-ready examples for Microsoft 365, Google Workspace, subdomains and parked domains.
9 min read SPF, DKIM & DMARCHow to fix SPF PermError: too many DNS lookups
Why SPF breaks at 10 DNS lookups, how to count them, and step-by-step fixes for Microsoft 365 and Google Workspace domains with many senders.
8 min read SPF, DKIM & DMARCSPF softfail vs hardfail: should you use ~all or -all?
What ~all, -all and ?all mean in SPF, what receivers really do with each, how DMARC changes the choice, and which one to use for sending and parked domains.
8 min readLast updated