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).
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 Klaviyo mail
Klaviyo 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.
- With dynamic routing, Klaviyo hosts the DNS for the sending subdomain, so you add any extra records there in Klaviyo, not at your DNS host.
- If you do add or edit an SPF record for a sending subdomain, put it on that subdomain's host (for example
send), not on@, and keep one SPF record per host.
How to add it
- In Klaviyo, set up a branded sending domain, usually a subdomain such as
send.example.com. - Add the records Klaviyo shows: CNAME records plus a TXT verification record for static routing, or NS records for dynamic routing.
- Publish a DMARC record on your root domain (
_dmarc.example.com) at your DNS host: Klaviyo doesn't do this for you. - If your DNS host offers a proxy (Cloudflare in particular), turn it off for Klaviyo's records so Klaviyo can verify them.
DKIM and DMARC alignment
With a branded sending domain, Klaviyo's records enable DKIM signing with your domain, which aligns with your From address. DMARC is a separate step you complete at your DNS host; see our DMARC record examples.
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). Klaviyo 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. - Creating a second
v=spf1record on the same host. Klaviyo says to combine values into a single SPF record for that host. - Proxying Klaviyo's CNAME records behind a CDN, which blocks verification.
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
Do I need to add Klaviyo to my SPF record?
Usually not. Klaviyo uses its own Return-Path domain on every email, so SPF passes by default. With a branded sending domain, the CNAME or NS records from setup handle SPF and DKIM for you.
What DNS records does Klaviyo need?
For a branded sending domain: CNAME records and a TXT verification record (static routing), or NS records (dynamic routing), as Klaviyo shows during setup. Add a DMARC TXT record on your root domain yourself.
Where do I put an SPF record for a Klaviyo sending subdomain?
On the subdomain's host, for example send for send.example.com, not on @. If one already exists, edit it instead of adding a second v=spf1 record.
Sources
- Klaviyo Help: DNS and SPF setup troubleshooting in Klaviyo
- Klaviyo Help: Understanding email authentication
- RFC 7208: Sender Policy Framework (SPF)
Values checked against Klaviyo's documentation on October 9, 2026. Lookup counts measured with our SPF Checker on October 9, 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
- Amazon SESinclude:amazonses.com
- SendGridinclude:sendgrid.net
- Mailguninclude:mailgun.org
- PostmarkNone needed
- MailchimpNone needed
- BrevoNone for standard sending; spf.brevo.com with a dedicated IP
- HubSpotAccount-specific (copy from HubSpot)
- Salesforceinclude:_spf.salesforce.com
- Zendeskinclude:mail.zendesk.com
- Freshdeskinclude:email.freshdesk.com
- IntercomNone needed
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