Custom Domains
Send data through your own domain instead of enrich.sh. Your customers see data.yourcompany.com — no third-party branding.
How It Works
- You register a domain in the dashboard (e.g.
data.acme.com) - You create a
CNAMErecord pointing toconnect.enrich.sh - Cloudflare provisions an SSL certificate automatically
- All
/ingestrequests on that hostname are validated against your account
Every ingest request from a custom domain is verified — if the hostname isn't registered for your account, the request is rejected with 403.
Setup
1. Add the Domain
Dashboard: Settings → Custom Domains → Add Domain
API:
curl -X POST https://enrich.sh/settings/domains \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{ "domain": "data.acme.com" }'2. Configure DNS
Add a CNAME record at your DNS provider:
| Type | Name | Target |
|---|---|---|
CNAME | data | connect.enrich.sh |
TIP
If your DNS provider proxies records (e.g. Cloudflare orange cloud), disable proxying so the CNAME resolves directly to connect.enrich.sh.
3. Wait for SSL
The domain status goes through:
| Status | Description |
|---|---|
pending | DNS not yet verified or SSL provisioning |
active | SSL certificate issued, ready to use |
failed | DNS misconfigured — check your CNAME record |
SSL provisioning typically completes within a few minutes. The dashboard shows the current status and will refresh automatically.
4. Send Data
Once active, use the custom domain anywhere you'd use enrich.sh:
curl -X POST https://data.acme.com/ingest \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"stream_id": "events",
"data": [{ "event": "click", "url": "/pricing" }]
}'Or in the SDK:
import Enrich from 'enrich.sh';
const enrich = new Enrich({
apiKey: 'sk_live_your_key',
endpoint: 'https://data.acme.com'
});Managing Domains
List Domains
curl https://enrich.sh/settings/domains \
-H "Authorization: Bearer sk_live_your_key"Response:
{
"domains": [
{
"domain": "data.acme.com",
"status": "active",
"created_at": "2026-02-15T10:00:00.000Z"
}
],
"max_domains": 3,
"canUseCustomDomain": true
}Remove a Domain
curl -X DELETE https://enrich.sh/settings/domains \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{ "domain": "data.acme.com" }'Tier Limits
| Tier | Custom Domains |
|---|---|
| Free / Trial | ❌ Not available |
| Starter | 1 |
| Pro | 3 |
| Scale | 10 |
| Enterprise | Unlimited |
INFO
If you need more custom domains, upgrade your plan at Dashboard → Settings → Billing.
Troubleshooting
| Issue | Solution |
|---|---|
Domain stuck on pending | Verify the CNAME record points to connect.enrich.sh |
403 Hostname not registered | The domain isn't added to your account — add it in Settings |
| SSL not provisioning | Disable DNS proxy (e.g. Cloudflare orange cloud) so the CNAME resolves directly |
Domain shows failed | DNS is misconfigured — remove and re-add the domain after fixing DNS |
