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).
Campaign Monitor only
Type: TXT · Host: @ · 1 of 10 DNS lookups
v=spf1 include:_spf.createsend.com ~all
Campaign Monitor and Microsoft 365
Type: TXT · Host: @ · 2 of 10 DNS lookups
v=spf1 include:_spf.createsend.com include:spf.protection.outlook.com -all
A sending subdomain such as mail.example.com
Type: TXT · Host: mail · 1 of 10 DNS lookups
v=spf1 include:_spf.createsend.com ~all
Use the subdomain label as the host. Authenticating example.com doesn't cover mail.example.com, and the reverse is also true.
How SPF applies to Campaign Monitor mail
Receivers check SPF against the domain in the envelope sender (the MAIL FROM or bounce address). Campaign Monitor sends with your own domain there, so its include belongs in the SPF record on the domain you send from.
- Campaign Monitor says the default SPF it handles covers the domains in the Return-Path address, so SPF passes for its mail even before you add the include. DMARC can still pass through DKIM.
- If you don't manage DNS yourself, Share instructions in Campaign Monitor sends the exact records to whoever does.
How to add it
- In Campaign Monitor, click your profile image (top right), choose Account settings, then Sending domains, and click Set up a sending domain (or Add domain).
- Enter the exact domain or subdomain you send from, such as
mail.example.com. Generic mailbox domains and unregistered domains are refused. - Publish the DKIM TXT record (
cm._domainkey) and, if the domain has no DMARC record yet, the_dmarcrecord Campaign Monitor shows. - For SPF, edit the TXT record on the same host that starts with
v=spf1and addinclude:_spf.createsend.comstraight afterv=spf1. With no record, createv=spf1 include:_spf.createsend.com ~all. - Use a TTL of at least 300 seconds (GoDaddy's minimum is 600), then click Re-check record in Sending domains.
DKIM and DMARC alignment
Campaign Monitor treats DKIM and DMARC as the required records: a TXT key at cm._domainkey on your sending domain plus a _dmarc record (see our Campaign Monitor DKIM page). Without DKIM, Gmail shows "via" and Outlook shows "sent by" next to your name. For DMARC, the From domain has to match the domain in the DKIM signature.
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). Campaign Monitor's include costs 1 on its own. See how to fix too many SPF lookups. - Choosing
~allor-allwithout a plan. Campaign Monitor's documentation uses~all.-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. - Authenticating the root domain and sending from a subdomain (or the other way round). Each sending domain needs its own records.
- Creating a second
v=spf1record on the host instead of adding the include to the existing one. - A DNS host that strips underscores or semicolons. Campaign Monitor says you may be able to escape a semicolon as
\;, but a host without underscore support can't hold the records.
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 Campaign Monitor filled in.
Frequently asked questions
What is the SPF record for Campaign Monitor?
v=spf1 include:_spf.createsend.com ~all for a domain without SPF. If an SPF record already exists, add include:_spf.createsend.com directly after v=spf1 in that record.
Is SPF required for Campaign Monitor authentication?
No. Campaign Monitor calls adding its servers to your SPF record an optional but recommended step. The required records are the DKIM TXT record and a DMARC record, because SPF for its mail is checked on the Return-Path domain it manages.
Does authenticating example.com in Campaign Monitor cover mail.example.com?
No. Campaign Monitor authenticates the exact domain you enter, so a subdomain you send from needs its own DKIM, DMARC and optional SPF records, with the subdomain label as the host.
Sources
- Campaign Monitor Help: Manage your own authentication
- Campaign Monitor Help: Email authentication
- RFC 7208: Sender Policy Framework (SPF)
Values checked against Campaign Monitor'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)
- MandrillNone needed
- 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
- 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