Sender Domains
Every live From: address has to use a verified sender domain. Verification proves you control the domain and lets ScaiSend sign your mail with DKIM. Without it, modern mail providers (Gmail, Outlook, Yahoo) will at best rate-limit you and at worst drop your mail silently.
This page walks through what verification is, how to add a domain, and the records you need to publish.
What a "verified sender domain" means#
A domain is verified when all three checks pass:
| Check | What's verified | Record |
|---|---|---|
| DKIM | The public key in DNS matches the key ScaiSend holds | TXT scaisend._domainkey.<domain> |
| SPF | ScaiSend is authorized to send for the domain | TXT <domain> |
| DMARC | A DMARC policy exists at _dmarc.<domain> |
TXT _dmarc.<domain> |
SPF and DMARC are technically optional — a message can deliver with DKIM alone — but missing them drops you into Gmail's "unverified sender" path. Publish all three.
Adding a domain#
Create the record in ScaiSend first; that generates the DKIM keypair you'll publish in DNS.
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
Copy dns_records and publish every row at your DNS provider.
Getting the records any time#
If you lost the response, refetch:
1 2 | |
Verifying#
After DNS has propagated (cheap providers: minutes; slow providers: hours), run the verification:
1 2 | |
Response:
1 2 3 4 5 6 7 8 | |
If any check fails, errors[] tells you which record is missing or mismatched. Fix the DNS, wait for TTL, rerun. Verification is idempotent.
Once verified, the domain becomes usable as a From: address for any live send from this tenant.
Rotating DKIM keys#
Rotate annually or whenever a key might be compromised. Rotation generates a new keypair, publishes the new public key as scaisend2._domainkey.<domain> (different selector), and switches signing over once DNS propagates.
1 2 | |
1 2 3 4 5 6 7 | |
Response includes the new selector and the new public key TXT record. Publish it, wait for propagation, then re-verify. The old selector keeps working until you explicitly remove it — messages in flight signed with the old key remain verifiable.
Shared sender domains#
Partner operators can mark a domain as is_shared: true. Shared domains can be used as a From: address by any tenant under the partner.
1 2 3 4 | |
Use cases:
- A platform-wide "noreply" for password resets, login codes, receipts.
- A branded sender for customers who don't have their own verified domain yet.
Shared domains are owned by the partner; individual tenants can't modify them.
DMARC policies#
dmarc_policy controls what receivers should do with mail that fails both SPF and DKIM alignment. Three values:
| Policy | Meaning |
|---|---|
none |
Monitor only. Failures are reported but not blocked. Safe default when you're just starting. |
quarantine |
Failures go to spam. Reasonable once you're confident your setup is correct. |
reject |
Failures are bounced hard. Appropriate for established sender reputations. |
Start with none, check the DMARC aggregate reports sent to your dmarc_rua_email for a week or two, then graduate to quarantine once you've confirmed there's no legitimate mail being misattributed to you.
See DKIM, SPF, DMARC for the deeper treatment.
What happens if the domain isn't verified#
You'll hit one of these:
| Situation | Behavior |
|---|---|
sg_live_* send, unverified From: domain |
Request is accepted (202) but the message ends in status failed with a "domain not verified" error in the event timeline. |
sg_test_* send, unverified From: domain |
Accepted, status sandbox. Sandbox mode skips the domain check because no delivery happens. |
sg_live_* send, verified domain but DKIM DNS removed |
Message sends but DKIM signature is invalid. Receivers will probably drop or quarantine. Re-verify. |
Deactivating a domain#
Deactivate to prevent further sends without deleting the record:
1 2 3 4 | |
Sends with an inactive domain are rejected at queue time. Reactivate by setting is_active: true. Use this when you're rotating sender infrastructure; delete the record outright only when you're retiring the domain.
What's next#
- Sending Mail — using a verified domain in a send.
- DKIM, SPF, DMARC — the underlying standards in detail.
- Admin Reference — every admin endpoint including domains.