SPF DNS lookup cost of every major provider's include — measured

SPF allows 10 DNS lookups per record, and every include: spends some of them — usually more than one, because providers nest includes inside includes. This table shows the real, recursive cost of 33 common providers, measured by our resolver, so you can add up your stack before it silently breaks.

Measured on 13 September 2026 · re-measured on every revision · raw data: JSON (CC BY 4.0)

Check your own record's total: we walk every include recursively and count exactly as receivers do.

Short answer: an include is not always one lookup, and the numbers in most guides are stale. As measured today, Google Workspace and Microsoft 365 have both flattened their records and cost 1 each — not the 4 that older articles still quote — while Zoho costs 5, Mailgun 5, and Stripe and Freshdesk 8 each, because their records nest other providers' includes. A typical stack of a mailbox provider plus a CRM, a helpdesk and a payments platform can pass 10 with only four includes, which is why "too many DNS lookups" permerrors appear the week someone adds one more tool. Look up each provider below, add them, and keep the total at 8 or under so the next tool doesn't break authentication.

Lookup cost by provider

Cost = the include itself (1) plus every include, a, mx, exists and redirect mechanism it triggers, followed recursively, exactly as RFC 7208 section 4.6.4 requires receivers to count. Providers change their records; the figures below are what the resolver saw on the date above.

ProviderMechanismLookups consumedWeight
Freshdeskinclude:spf.freshdesk.com8Heavy — budget for it
Stripeinclude:stripe.com8Heavy — budget for it
Mailguninclude:mailgun.org5Heavy — budget for it
Zoho Mailinclude:zoho.com5Heavy — budget for it
GoDaddy / Secureserverinclude:secureserver.net3Moderate
Hostingerinclude:_spf.mail.hostinger.com3Moderate
HubSpotinclude:_spf.hubspot.com3Moderate
OVHinclude:mx.ovh.com3Moderate
Atlassian (Jira/Confluence)include:_spf.atlassian.net2Light
Elastic Emailinclude:_spf.elasticemail.com2Light
ProtonMailinclude:_spf.protonmail.ch2Light
Salesforceinclude:_spf.salesforce.com2Light
SendGrid (Twilio)include:sendgrid.net2Light
SMTP.cominclude:spf.smtp.com2Light
SparkPostinclude:sparkpostmail.com2Light
ActiveCampaigninclude:emsd1.com1Light
Amazon SESinclude:amazonses.com1Light
Brevo (Sendinblue)include:spf.brevo.com1Light
Constant Contactinclude:spf.constantcontact.com1Light
Fastmailinclude:spf.messagingengine.com1Light
Google Workspace / Gmailinclude:_spf.google.com1Light
IONOSinclude:_spf-eu.ionos.com1Light
Mailchimpinclude:servers.mcsv.net1Light
Mailersendinclude:_spf.mailersend.net1Light
Mailjetinclude:spf.mailjet.com1Light
Mandrillinclude:spf.mandrillapp.com1Light
Microsoft 365 / Exchange Onlineinclude:spf.protection.outlook.com1Light
Mimecast (EU)include:eu._netblocks.mimecast.com1Light
Mimecast (US)include:us._netblocks.mimecast.com1Light
Postmarkinclude:spf.mtasv.net1Light
SendPulseinclude:mxsspf.sendpulse.com1Light
Shopifyinclude:shops.shopify.com1Light
Zendeskinclude:mail.zendesk.com1Light

Not measured (no SPF record found at the mechanism we tested, so the provider uses a different or per-account include): _spf.klaviyo.com, _spf.intercom.io, _spf.frontapp.com, spf.docusign.net, _spf.outreach.io, spf.salesloft.com, _spf.apollo.io, _spf.customeriomail.com, spf.moosend.com, spf.ppe-hosted.com, spf.barracudanetworks.com.

Common stacks, added up

Each row is a realistic combination, summed from the measured values above. Anything over 10 returns permerror at every receiver that evaluates SPF properly.

StackIncludesTotalResult
SDR team on Workspace + a sequencer relay + CRMGoogle Workspace / Gmail (1) + Salesforce (2) + HubSpot (3)6 / 10OK
Workspace + Mailchimp + Zendesk + StripeGoogle Workspace / Gmail (1) + Mailchimp (1) + Zendesk (1) + Stripe (8)11 / 10permerror — SPF fails
Microsoft 365 + SendGrid + HubSpot + DocuSignMicrosoft 365 / Exchange Online (1) + SendGrid (Twilio) (2) + HubSpot (3)6 / 10OK
Microsoft 365 + Mimecast + Salesforce + ZendeskMicrosoft 365 / Exchange Online (1) + Mimecast (US) (1) + Salesforce (2) + Zendesk (1)5 / 10OK
Workspace + Microsoft 365 (migration overlap) + MailgunGoogle Workspace / Gmail (1) + Microsoft 365 / Exchange Online (1) + Mailgun (5)7 / 10OK
Shopify store: Shopify + Klaviyo + Workspace + ZendeskShopify (1) + Google Workspace / Gmail (1) + Zendesk (1)3 / 10OK

Why the count is higher than the number of includes

What to do when you're over 10

  1. Remove what you don't send from. Most over-limit records carry includes for tools that were trialled and abandoned. Check each provider's sending logs before keeping its include.
  2. Move streams to subdomains. Marketing on news.yourdomain.com, transactional on mail.yourdomain.com, each with its own SPF record and its own 10-lookup budget. This also isolates reputation, which matters more than the SPF limit.
  3. Flatten last, not first. Replacing includes with IP ranges reduces lookups to zero but breaks silently the next time the provider changes its ranges. If you flatten, automate the re-flattening or monitor the record for drift.
  4. Keep two lookups in reserve. A record at exactly 10 fails the day a provider adds one nested include to its own record — which happens without notice.

FAQ

Does the 10-lookup limit apply to ip4: and ip6:?

No. IP mechanisms cost nothing, which is why flattening works. The limit applies to mechanisms that need DNS to evaluate: include, a, mx, ptr, exists and redirect.

Will a permerror bounce my mail?

Usually not by itself. Receivers treat SPF as failed or unavailable, which means DMARC can't pass on SPF alignment; if DKIM is also missing or misaligned, DMARC fails and your policy decides the outcome. In practice, permerror plus a p=reject policy does bounce mail.

How often do these numbers change?

Providers restructure their records a few times a year, usually without announcement. We re-measure this table on every revision and publish the date; the JSON carries the same date field for anyone automating checks.

Can I stay under the limit and still use many providers?

Yes, through subdomains. There is no rule that all mail must come from the apex domain; SDR teams routinely run outreach from a dedicated subdomain or a lookalike domain precisely to keep the primary domain's SPF small and its reputation separate.

Your provider changed its record. Did anyone tell you?

Aurelius re-counts your SPF lookups on every sweep and alerts you the moment a record drifts over the limit or a DKIM key disappears. Free for 2 domains.

Start monitoring free