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 Account Engagement (Pardot) mail
Account Engagement (Pardot) 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.
- Salesforce still calls an SPF record for your domain a best practice. That is your normal record for your mailbox provider and other senders; its Account Engagement guides don't name an include for it.
- If everything is verified, each column on the Domain Management page shows a green checkmark. Salesforce notes that a TXT entry added in the last 24 hours may not show one yet.
How to add it
- Open Domain Management: in standalone Account Engagement, Admin > Domain Management; in the Lightning app, Account Engagement Settings > Domain Management.
- Click Add New Domain, enter the domain you send from and click Create domain.
- In the Actions column, click Expected DNS Entries and copy the validation key. Publish it as a TXT record on that domain or subdomain.
- Return to Domain Management and click Check DNS Entries. Repeat for every sending domain.
DKIM and DMARC alignment
Salesforce recommends DKIM for Account Engagement: copy the DomainKey value from Expected DNS Entries and publish it as a TXT record (see our Account Engagement DKIM page). DMARC is something you set up with your IT team, and an aligned DKIM signature is what lets it pass for your From domain.
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). Account Engagement (Pardot) 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 an include copied from an old blog post. Salesforce's current guides say SPF passes automatically, and every unneeded include costs DNS lookups.
- Confusing the validation key with the DomainKey. The validation key proves you own the domain; the DomainKey is the DKIM public key. Both are TXT records.
- Sending from a domain that doesn't match the one on the Domain Management page. Salesforce lists this as a reason SPF or DKIM doesn't pass in a test.
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 an SPF include for Pardot (Account Engagement)?
No. Salesforce says email sent through Account Engagement passes SPF automatically, and its setup steps don't ask for an include. Add the validation key and DKIM TXT records from Domain Management instead.
What is the Account Engagement validation key?
A value Account Engagement generates for each sending domain, which you publish as a TXT record to prove you own the domain. You can only send from domains verified this way. Copy it from Expected DNS Entries on the Domain Management page.
Why don't my Account Engagement domains show green checkmarks?
Check that the validation key and DomainKey TXT values match what Expected DNS Entries shows. Salesforce says a record added in the last 24 hours, or a DomainKey generated outside Account Engagement, may not show a checkmark yet.
Sources
- Salesforce: Account Engagement Implementation Guide (Add and verify a domain for email sending; Implement DKIM authentication)
- Salesforce: Email Deliverability in Account Engagement
- RFC 7208: Sender Policy Framework (SPF)
Values checked against Account Engagement (Pardot)'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
- Campaign Monitorinclude:_spf.createsend.com
- KitNone needed (ckespa CNAME)
- Marketoinclude:mktomail.com
- 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