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).
Zoho Campaigns only (Zoho's value)
Type: TXT · Host: @ · 1 of 10 DNS lookups
v=spf1 include:zcsend.net ~all
Zoho Campaigns and Microsoft 365
Type: TXT · Host: @ · 2 of 10 DNS lookups
v=spf1 include:spf.protection.outlook.com include:zcsend.net ~all
Zoho Campaigns (EU data center) and Google Workspace
Type: TXT · Host: @ · 2 of 10 DNS lookups
v=spf1 include:_spf.google.com include:eu.zcsend.net ~all
How SPF applies to Zoho Campaigns mail
Receivers check SPF against the domain in the envelope sender (the MAIL FROM or bounce address). Zoho Campaigns sends with your own domain there, so its include belongs in the SPF record on the domain you send from.
- Zoho's merged example is
v=spf1 include:zcsend.net include:sender.zohobooks.com ~all, for a domain that also sends invoices from Zoho Books. - Zoho says the default bounce (return path) address is a Zoho address. Once SPF and DKIM pass, you can add a Custom Return Path: a CNAME on a subdomain such as
zma, so bounces use a subdomain of your domain. - Public mailbox domains such as Gmail addresses can't be authenticated in Zoho Campaigns. Send from your own domain.
How to add it
- In Zoho Campaigns, go to Settings, then Email, then Senders and Authentication, and click Setup next to your domain. Older accounts find it under Settings > Deliverability > Domain Authentication.
- Copy the SPF value from the Authenticate Your Domain window. Only an organization admin can open it.
- At your DNS host, open the TXT record on
@that starts withv=spf1and addinclude:zcsend.net(or your region's include) right afterv=spf1. If there's no SPF record, create one withv=spf1 include:zcsend.net ~all. - Add the DKIM TXT record from the same window, then click Authenticate. Zoho says DNS changes can take up to 24 hours to update globally.
- Check the live record with the SPF Checker below.
DKIM and DMARC alignment
Zoho Campaigns also gives you a DKIM TXT record on a numbered host such as 2232._domainkey, with a value that begins k=rsa; p=. Zoho doesn't create a DMARC record for you, and its status reads Protected only when all four parts are verified, including the custom return path. Then publish a DMARC record.
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). Zoho Campaigns's include costs 1 on its own. See how to fix too many SPF lookups. - Choosing
~allor-allwithout a plan. Zoho Campaigns'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. - Creating a second SPF TXT record for Zoho Campaigns. Zoho says a domain can have only one; add the include to the existing record.
- Using
include:zcsend.netfor an account hosted in Zoho's EU, India or China data center. Copy the include your setup screen shows. - Adding the Custom Return Path CNAME on a host that already has an MX or A record. Zoho says validation then fails.
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 Zoho Campaigns filled in.
Frequently asked questions
What is the SPF include for Zoho Campaigns?
include:zcsend.net for the default data center, giving v=spf1 include:zcsend.net ~all on a domain with no other senders. Zoho lists eu.zcsend.net for the EU, zcsend.in for India and zcsend.net.cn for China.
I already use Zoho Mail. Do I need another SPF record for Zoho Campaigns?
No. Add include:zcsend.net to the SPF record that already lists Zoho Mail, so the domain keeps a single v=spf1 record. Zoho says a second SPF TXT record breaks authentication.
Why does Zoho Campaigns show my domain as At risk?
Zoho shows At risk when none of SPF, DKIM, DMARC and the custom return path are configured or verified yet, and Needs attention when only some are. Wait for DNS to update, check each host name was copied exactly, then authenticate again.
Sources
- Zoho Campaigns Help: Senders & Authentication Settings
- Zoho Campaigns Help: Authenticate email domain
- RFC 7208: Sender Policy Framework (SPF)
Values checked against Zoho Campaigns'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
- Account Engagement (Pardot)None needed (SPF passes automatically)
- Customer.ioCopy from Customer.io (cio##### subdomain)
- Constant ContactNone needed
- 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