Skip to content
iBlockSpam
DKIM by provider

DKIM record for Customer.io

Customer.io generates a 2048-bit DKIM key for each sending domain and asks you to publish it as a TXT record at cio._domainkey.cio#####.yourdomain.com, where cio##### is your account-specific subdomain. It comes with an MX and an SPF record on that subdomain and a DMARC record on your root. SPF and DKIM must both verify before you can send.

Record type
TXT
Selectors
cio
Private key held by
Provider (you publish its key)

The DNS records

Replace cio##### with the subdomain Customer.io shows under Show Records, and copy the key value from there.

DKIM key

Type: TXT · Host: cio._domainkey.cio#####

k=rsa; p=<public key shown in Customer.io>

The 2048-bit key is longer than 255 characters. Keep one TXT record and split it into quoted strings if your host asks.

SPF on the account subdomain

Type: TXT · Host: cio#####

<SPF value shown in Customer.io>

DMARC (minimum)

Type: TXT · Host: _dmarc

v=DMARC1; p=none

On your root domain only. If you already have a DMARC policy, Customer.io shows your existing record instead.

Set it up and turn on signing

  1. Go to Settings > Workspace Settings > Email, add a sending domain and a from address, and click Show Records.
  2. Add the MX record (two hostnames) and the SPF TXT record on the cio##### host, the DKIM TXT record on cio._domainkey.cio#####, and DMARC on _dmarc of the root domain.
  3. Enter only the part before your domain (for example cio._domainkey.cio12345) if your DNS host appends it, as GoDaddy does.
  4. Click Verify domain. Customer.io checks only when you click, and verification can take up to 72 hours.

DMARC alignment

Customer.io signs the return path, SPF and DKIM with your account subdomain, a child of your From domain. Under DMARC's default relaxed alignment that parent-child match passes. Customer.io warns that setting adkim=s or aspf=s breaks it, so remove those tags or set them to r. It checks _dmarc on the sending domain first, then on the root.

Key length and rotation

The key is generated by Customer.io but stored in your zone, so a new key means replacing the TXT value at cio._domainkey. Customer.io's documentation gives the 2048-bit default but no rotation schedule. Keep the records in place after verification: Customer.io says removing them can cause bounces or spam filtering.

Common mistakes

  • A key value cut off at 255 characters. Split it into strings under 255 characters, separated by a space, in the same record; in Terraform use \"\" between the parts.
  • A _dmarc record on the subdomain. Customer.io says not to add DMARC to any subdomain.
  • Hosts that reject underscores or need escaped semicolons. Ask your host, or write semicolons as \; where required.
  • Deleting your own records while adding Customer.io's. That can stop mail to your mailboxes.

Check your Customer.io DKIM key

Enter your domain and the selector from your Customer.io account. Free, reads public DNS only.

Frequently asked questions

What is the Customer.io DKIM host name?

cio._domainkey.cio#####.yourdomain.com, where cio##### is your account-specific subdomain. The selector is cio, and the record is a TXT key, not a CNAME.

My DNS host says the Customer.io DKIM value is too long. What do I do?

The 2048-bit key exceeds the 255-character limit of one TXT string. Keep a single record and split the value into two or more quoted strings of under 255 characters, separated by a space, with no line breaks.

Why does Customer.io check DMARC on my root domain?

It looks for _dmarc on the sending domain first and falls back to the root domain's record, which covers subdomains. The minimum it accepts is v=DMARC1; p=none, published on the root.

Sources

Checked against Customer.io's documentation on November 3, 2026. Providers change their setup screens; if yours differs, follow the values your admin console shows.

DKIM records for other providers

Compare every provider's selectors in one table · SPF record for Customer.io

Last updated