SPF, DKIM & DMARC for Kit (ConvertKit).
Kit (formerly ConvertKit) authenticates your domain through its Verified Sending Domain (VSD) flow under Settings then Email — not by having you paste a shared SPF line. Kit generates two CNAME records: one on a ckespa subdomain that handles SPF/Return-Path delegation, and one at cka._domainkey that carries DKIM signing. You add both at your DNS host (or let Kit's "Set this up for me" Entri automation add them for you), click Validate, and from then on Kit DKIM-signs every broadcast and automation as your own domain. Your root SPF record never changes, the "via convertkit-mail.com" note disappears, and DMARC can pass through aligned DKIM.
Why authenticate Kit (ConvertKit)?
Setting up a Verified Sending Domain in Kit isn't cosmetic — it decides whether your newsletters reach the inbox. Kit is a bulk newsletter platform, and a creator with a few thousand subscribers is exactly the "bulk sender" the mailbox providers now police: since February 2024 Gmail and Yahoo have required every sender mailing roughly 5,000+ messages a day to pass SPF, DKIM, and DMARC with alignment, and Microsoft began enforcing the same on Outlook/Hotmail in 2025. Until you verify your domain, Kit sends on its own shared convertkit-mail.com / convertkit-mail2.com infrastructure: Gmail recipients see a "via convertkit-mail.com" tag next to your name, your From address isn't cryptographically yours, DMARC can't produce an aligned pass, and your reputation is pooled with every other unauthenticated creator on that shared pool. A Verified Sending Domain fixes it in one move — DKIM signs as d=yourdomain.com so it aligns, the "via" tag goes away, DMARC passes, and the sending reputation you build accrues to your own domain instead of Kit's shared infrastructure.
The SPF reality for Kit (ConvertKit)
Kit is a CNAME-delegation provider, so there is NO "include:convertkit-mail.com" (or similar) to add to your root SPF — for anyone. When you set up a Verified Sending Domain, Kit hands you two CNAMEs on subdomains of your own domain: ckespa.yourdomain.com (which delegates the SPF/Return-Path side into Kit's SPF-authorized space) and cka._domainkey.yourdomain.com (which delegates DKIM signing). Your root domain's SPF TXT record is untouched, and Kit's flow never asks you to edit it — SPF resolution for Kit's mail happens entirely on the ckespa subdomain, independent of your root record. The important nuance, and the thing almost every generic tutorial gets wrong: with Kit, DKIM is the reliable DMARC-aligned path, not SPF. Kit processes bounces on its own envelope infrastructure, so you should not count on SPF alignment carrying your DMARC pass — the cka._domainkey CNAME, which signs every message as d=yourdomain.com, is what aligns and produces the pass. That's why Kit's setup screen shows only CNAMEs and a DMARC prompt and never a v=spf1 line. Bottom line: no shared SPF include, zero DNS lookups added to your root SPF, and DKIM is the mechanism you rely on for DMARC.
Step by step
- 1
Open the Verified Sending Domain setup
Log in at app.kit.com, click your account name (top right) then Settings, and choose Email in the left sidebar. Scroll to the Verified Sending Domains section and click "Set up your Verified Sending Domain."
- 2
Enter the domain you send from
Type the domain your From address uses — a top-level domain like yourdomain.com works (Kit does not require a dedicated subdomain), or enter a subdomain if you send from one. Click Next and Kit generates your account-specific records.
- 3
Pick automatic or manual setup
Choose "Set this up for me" to use Kit's Entri integration, which auto-detects your DNS provider, has you log in, and writes the records for you — the fastest path. Or choose manual setup to copy the two CNAME records and add them yourself at your DNS host.
- 4
Add the ckespa CNAME (SPF/Return-Path delegation)
Create a CNAME record with Host/Name = ckespa and Value/Target = the exact hostname Kit shows (account-specific, into Kit's convertkit-mail space). This delegates the SPF/envelope side to Kit. Leave the record type as CNAME — do not change it to TXT or A.
- 5
Add the cka._domainkey CNAME (DKIM)
Create a second CNAME with Host/Name = cka._domainkey and Value/Target = the DKIM hostname Kit lists. This is what signs your mail as d=yourdomain.com and produces your DMARC-aligned pass. The underscore in _domainkey is required.
- 6
Turn off the Cloudflare proxy
If your DNS is on Cloudflare, set both CNAMEs to "DNS only" (grey cloud, not orange). A proxied CNAME won't resolve to Kit and DKIM verification fails. Also enter just the label (ckespa, cka._domainkey) if your panel appends the domain automatically.
- 7
Click Validate
Back on the Verified Sending Domain screen in Kit, click Validate. Propagation is usually minutes but can take up to 48 hours; if validation fails immediately after adding the records, wait and retry before troubleshooting. The domain shows as verified once both CNAMEs resolve.
- 8
Send from the verified domain
Verifying the domain doesn't change your From address on its own. In your Kit account/email settings, make sure your sending (From) address uses an address on the verified domain, e.g. hello@yourdomain.com, so broadcasts actually go out through the authenticated path.
- 9
Publish a DMARC policy
Add a TXT record at _dmarc.yourdomain.com starting with v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com. Keep it at p=none (monitor-only) until you confirm Kit's DKIM is aligning, then tighten. This is the companion record Kit's flow prompts you to add and is separate from the two CNAMEs.
Records to add
Kit (ConvertKit) generates the exact values in its setup wizard — these show the shape of what you'll add at your DNS host.
| Type | Host | Value |
|---|---|---|
| CNAME | ckespa | ckespa.convertkit-mail2.comIllustrative — Kit shows an account-specific target. SPF / Return-Path delegation on your subdomain; this is why your root SPF stays untouched. |
| CNAME | cka._domainkey | cka._domainkey.convertkit-mail2.comIllustrative — account-specific value shown in Kit. DKIM signing (d=yourdomain.com); this is the DMARC-aligned path. Add as CNAME, not TXT. |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comYour DMARC policy — one per domain, separate from the CNAMEs. Start at p=none, tighten later. |
Keep exactly one SPF (v=spf1) TXT record on your root domain — merge every sender into it. Two SPF records is itself an error.
The 10-lookup budget
SPF is capped at a hard 10 DNS lookups — go over and it returns a permerror and stops validating everywhere. Here's what Kit (ConvertKit)'s setup costs against that budget.
Kit (ConvertKit)'s recommended setup adds 0 lookups — all 10 stay free for the senders that do need an include.
DKIM
DKIM is delegated to Kit via the cka._domainkey.yourdomain.com CNAME — not a key you paste. It points to a Kit-hosted DKIM record (account-specific value shown on the setup screen), Kit holds the matching private key, and it signs every broadcast and automation as d=yourdomain.com. Because it signs with your domain, this is the mechanism that aligns for DMARC and carries your pass — with Kit you rely on DKIM, not SPF, for alignment. Two things trip people up: the host contains an underscore (cka._domainkey), which a few DNS panels reject in CNAME records — the underscore is required, so use a host that allows it or ask Kit support; and it must be added as a CNAME, never a TXT record. If you paste the value into a TXT record, DKIM fails silently. Kit rotates the key behind the cka selector on its side, so once the CNAME resolves you never re-edit it.
DMARC
DMARC is a separate policy record on your root domain, not one of the CNAMEs, though Kit's flow prompts you to add it. Publish a TXT record at _dmarc.yourdomain.com beginning with v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com — p=none is monitor-only, so it won't affect delivery while you confirm Kit's DKIM is aligning. Watch the aggregate (rua) reports for a week or two, verify Kit shows up as a DKIM-aligned, passing source, then ramp toward enforcement: p=quarantine (optionally with pct=25 first), then p=reject. One Kit-specific warning: if you already have an enforced DMARC policy (p=quarantine or p=reject) in place before your Verified Sending Domain is live, it can quarantine or reject your Kit mail during the gap — so add DMARC at p=none if you're setting it up fresh alongside Kit, and only tighten once DKIM validates. Keep exactly one _dmarc record for the whole domain no matter how many senders you use — don't add a second one for Kit.
Check it actually worked
Don't trust Kit's "verified" checkmark alone — confirm it on a real message. Send yourself a test broadcast from an address on the verified domain, open it in Gmail, and choose the three-dot menu then Show original. You want DKIM: PASS with signed-by: yourdomain.com and DMARC: PASS, and the "via convertkit-mail.com" note gone next to your name. Expect a Kit quirk: SPF may show a pass but "mailed-by" a Kit envelope host rather than aligning to your From domain — that's normal for Kit, and DMARC still passes because DKIM aligns. Then run your domain through Qualisend's domain health check to confirm the ckespa CNAME, the cka._domainkey DKIM CNAME, and your DMARC record all resolve, spot-check individual records with the SPF/DKIM/DMARC checker, and once aggregate reports start arriving drop one into the DMARC report analyzer — Kit should appear as a DKIM-aligned, passing source.
Common gotchas
- DNS setup
Cloudflare proxy breaks it: set both Kit CNAMEs to "DNS only" (grey cloud). An orange-cloud proxied CNAME won't resolve to Kit's infrastructure and DKIM verification fails.
- DNS setup
Host-field doubling: many registrars auto-append your domain, so entering ckespa.yourdomain.com becomes ckespa.yourdomain.com.yourdomain.com. Enter just the label — ckespa and cka._domainkey — if the panel adds the domain for you.
- DNS setup
Added as TXT instead of CNAME: both records are CNAMEs. If you paste the DKIM value into a TXT record it fails silently — the type must be CNAME.
- Breaks auth
Don't invent an SPF include for Kit: your root SPF stays untouched and gains zero lookups. Kit delegates SPF on the ckespa subdomain and relies on DKIM for DMARC alignment — adding a fake include:convertkit... does nothing and wastes one of your 10 SPF lookups.
- Coverage
Pre-existing enforced DMARC: if p=quarantine or p=reject is already live before your Verified Sending Domain finishes validating, it can junk or bounce your Kit mail in the meantime. Use p=none until DKIM aligns, then tighten.
- Coverage
Propagation lag: DNS changes can take up to 48 hours. Kit's Validate check may fail immediately after you add the records — wait and retry before assuming something is wrong.
- Coverage
Verifying isn't the same as sending from the domain: a Verified Sending Domain authenticates your domain, but you still have to set your Kit From address to an address on that domain, or your mail won't use the authenticated path.
- Coverage
Temporary open-rate dip: Kit warns that open rates can fluctuate for 2-3 weeks after setup while mailbox providers recalculate your sender reputation on the newly authenticated domain — this is expected, not a misconfiguration.
Build your SPF record
Kit (ConvertKit) doesn't need an SPF include: on your root domain — use the generator to assemble one clean record for your other senders, and keep it to a single line.
Sending sources
Search for each platform you send email through and tick it.
Search for your email platform above, or .
This domain's own servers
Authorize the domain itself, if it sends mail directly (not through a platform above).
Other senders & IPs
Anything not in the list — another provider's SPF host, or specific IP addresses.
We add the include: prefix — enter the hostname your provider documents.
Policy for everyone else
What receivers should do with mail from any server not listed above (the all mechanism).
No senders yet, so every message would hit the ~all policy. Add the platforms you send through in step 1.
- Publish it as a TXT record at your root domain — host @ (the bare domain), value the full string above.
- Keep only one SPF record per domain. Merge every sending source into this single line — a second TXT record starting v=spf1 makes both invalid.
- Stay at or under 10 DNS lookups. Each include:, a and mx counts, and an include can trigger more lookups inside itself — ip4: and ip6: are free.
Authentication published? The next step is sending to a clean, verified list.
Verify a listKit (ConvertKit) SPF — FAQ
Related reading
Once it's published, confirm everything resolves with the domain health check, then read who's sending as you with the DMARC report analyzer. Browse all sending sources in the generator. Authentication is only half of deliverability, though — a listed sending IP or domain still lands you in spam no matter how clean your SPF is, so it's worth watching the blacklists with blacklist monitoring.
Authenticated — now keep the list clean
Passing SPF, DKIM, and DMARC gets you to the inbox; a clean list keeps you there. Verify yours — start free with 100 credits, no card required.