Your customers’ sending domains, verified automatically
DKIMkit handles sending-domain authentication with SendGrid, Postmark, Mailgun or Amazon SES for every customer of your app: DNS records written or shown, verification tracked, and a webhook when each domain is ready to send.
How it works
- Register the domainOne API call from your backend, or let customers enter it in the widget.
- DNS gets set upWe write the records through Cloudflare or Route 53, or show your customer exactly what to add.
- Verified, and you’re toldWe track propagation and your provider’s verification, then send you a signed webhook.
Writes the DNS records
Connect a customer’s Cloudflare or Route 53 and the records are added for them. On any other host, they get the exact records to paste.
Watches until verified
Checks the authoritative nameservers, then your email provider, with backoff. Re-checks verified domains daily and tells you if one breaks.
Embeddable widget
Drop a setup flow into your app with two lines of code. Customers’ DNS credentials never touch your servers or your frontend.
Signed webhooks
Get domain.verified, domain.conflict and more as they happen, signed and retried, so your app updates itself.
Inbound email too
Optionally route replies to your app: the MX record and inbound forwarding are configured in the same flow (SendGrid, Postmark and Mailgun).
Built for multi-tenant SaaS
Tag domains with your own tenant ids and see usage per customer for your own billing.
One call to start
Register a customer’s domain and get the DNS records back immediately. Everything after that happens in the background.
API reference →curl -X POST https://dkimkit.com/v1/domains \
-H "Authorization: Bearer $API_KEY" \
-d '{"domain": "customer.com",
"tenant_id": "cus_42",
"dns": {"provider": "cloudflare",
"cloudflare_api_token": "…"}}'
Credentials handled with care
Email provider keys and DNS tokens are encrypted at rest (AES-256-GCM), API keys are stored only as hashes, and the widget runs on our domain so your customers’ DNS credentials never pass through your app. How we handle data