Skip to content
Splashify Pro
Email docsEmail

Sending Identities

A sending identity is anything you've proven you control:

  • A domain (preferred: covers any address at that domain), or
  • A specific email address (limited to that one mailbox)

Every email you send must have a From: address that matches a verified identity. Sending from an unverified address returns 400 FROM_NOT_VERIFIED.

The Sending Identities page with three identities: the domain example.com verified with all five records, the domain news.example.com pending with only SPF in place, and the email address support@example.com verified, each with a Verify button and a delete button
Your sending identities and their status

Why verification?

Without verification, anyone could claim to send from [email protected] through our infrastructure. Verification proves you control the domain or address at the DNS / mailbox level.

This is the same reason AWS SES, SendGrid, Postmark, Mailgun, and every other ESP requires it. It's not optional in 2026's email landscape.

Domain verification

A domain is verified with DNS records you publish: SPF, DKIM and DMARC, and for most domains also DKIM 2 and Return path. Once SPF, DKIM and DMARC are published and checked, you can send from any address at the domain: hello@, alerts@, noreply@, etc.

Create the identity:

bash
curl https://api.splashifypro.com/api/v1/partner/email/identities \
  -H "Authorization: Bearer $SPLASHIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"identity_type": "DOMAIN", "identity_value": "yourcompany.com"}'
The Add sending identity box with Domain picked, news.example.com typed in and the Add identity button
In the panel, click Add identity, pick Domain and type the domain

The response lists the records to publish under dns_records:

The Add sending identity box after the domain is added, listing the records to publish: SPF, DKIM, DMARC and DKIM 2, each with a name, a value and copy buttons
The records to publish, shown right after you add the domain

What the last two do:

  • DKIM 2 is a second DKIM key. It lets inbox providers verify mail from your domain on all our sending servers.
  • Return path lets bounced mail come back to us so your domain keeps a clean sending record.

Add all five. You can send as soon as the first three are verified; add the other two for the best delivery. The identity status does not wait for them. If a domain lists only spf, dkim and dmarc, publish those three.

Each entry of dns_records has the same shape:

json
{
  "dns_records": {
    "spf": { "type": "TXT", "hostname": "yourcompany.com", "value": "v=spf1 include:_spf.mail.splashifypro.com ~all", "pass": false },
    "dkim": { "type": "CNAME", "hostname": "splashify._domainkey.yourcompany.com", "value": "splashify._domainkey.mail.splashifypro.com", "pass": false },
    "dmarc": { "type": "TXT", "hostname": "_dmarc.yourcompany.com", "value": "v=DMARC1; p=quarantine; rua=mailto:[email protected]", "pass": false },
    "dkim2": { "type": "TXT", "hostname": "...", "value": "...", "pass": false },
    "return_path": { "type": "CNAME", "hostname": "...", "value": "...", "pass": false }
  },
  "dkim2_ok": false,
  "return_path_ok": false
}

When dkim2 and return_path are listed, the identity also carries dkim2_ok and return_path_ok next to spf_ok, dkim_ok and dmarc_ok. They can show up a moment after you create the identity: if the create response lists only three records, read the identity again with GET /partner/email/identities or open the Sending Identities page in Splashify Pro Email. Always copy the hostname and value of dkim2 and return_path from there; they are made for your domain.

After publishing on your DNS provider, trigger a re-check:

bash
curl -X POST https://api.splashifypro.com/api/v1/partner/email/identities/DOMAIN/yourcompany.com/verify \
  -H "Authorization: Bearer $SPLASHIFY_API_KEY"

The same call re-checks all the records. Once "status": "VERIFIED" lands, you're good. When dkim2_ok or return_path_ok in that response is still false, that record is pending: add it for the best delivery. We re-check verified domains every 24 hours; if the SPF, DKIM or DMARC record disappears, status flips back to PENDING and we email you.

Email-address verification

For low-volume use cases or when you can't add DNS records (you're using a public-domain mailbox like Gmail), verify a single address:

bash
curl https://api.splashifypro.com/api/v1/partner/email/identities \
  -H "Authorization: Bearer $SPLASHIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"identity_type": "EMAIL_ADDRESS", "identity_value": "[email protected]"}'

We email a verification link to the address. Click it (or use the verify endpoint directly with the included token) and the address becomes verified.

Public-domain caveat

We refuse to verify addresses at common public providers (gmail.com, yahoo.com, outlook.com, etc.). Sending bulk through [email protected] violates Google's TOS and would get our IP blocklisted within hours. Use your own domain.

Display name vs verified address

You can set a friendly display name without verifying it:

json
{
  "from": "Sarah from Acme <[email protected]>"
}

acme.com must be verified. Sarah from Acme is unverified: recipients see whatever string you supply.

Multiple domains

Verify as many domains as you like. Common pattern: one for transactional (mail.acme.com), one for marketing (news.acme.com). Helps deliverability: bounces / complaints on the marketing domain don't drag down transactional reputation.

Listing your identities

bash
curl https://api.splashifypro.com/api/v1/partner/email/identities \
  -H "Authorization: Bearer $SPLASHIFY_API_KEY"

Removing an identity

bash
curl -X DELETE https://api.splashifypro.com/api/v1/partner/email/identities/DOMAIN/yourcompany.com \
  -H "Authorization: Bearer $SPLASHIFY_API_KEY"

In-flight sends from that domain complete normally; new sends are rejected with FROM_NOT_VERIFIED.

Auto-recheck behaviour

Verified domains: re-checked every 24 hours. Pending domains: re-checked every 1 hour for 7 days, then drop to FAILED if SPF, DKIM and DMARC still aren't published.

You can always re-trigger via POST /verify.

Read more