Custom Domains
Custom domains allow you to serve the Zenovay tracking script and access your dashboard from your own domain. This can improve ad-blocker bypass rates and provide a more branded experience.
Overview
With custom domains, you can:
- Serve tracking script from your domain (e.g.,
analytics.yourdomain.com) - Access dashboard from custom URL (e.g.,
stats.yourdomain.com) - Improve bypass rates by avoiding common analytics domains
- Maintain brand consistency across all services
Custom domains are available on Scale and Enterprise plans. Basic SSL certificates are included at no additional cost.
Benefits of Custom Domains
1. Better Ad-Blocker Bypass
Ad blockers typically block requests to known analytics domains like api.zenovay.com. Using your own domain can improve tracking accuracy by 10-30%.
2. Faster Loading Times
Serving the script from your domain can reduce DNS lookup time and improve page load speed, especially if you're already using that domain.
3. Brand Consistency
Access your analytics at analytics.yourdomain.com instead of app.zenovay.com for a more cohesive brand experience.
4. First-Party Context
Cookies and storage from your domain are treated as first-party, which is more privacy-friendly and less likely to be blocked.
Types of Custom Domains
Tracking Script Domain
Serve the Zenovay tracking script from your domain.
Example: https://analytics.yourdomain.com/z.js
Use cases:
- Improve ad-blocker bypass rates
- Reduce DNS lookups
- First-party script loading
Dashboard Domain
Access your Zenovay dashboard from your domain.
Example: https://stats.yourdomain.com
Use cases:
- White-label analytics for clients
- Brand consistency
- Custom domain for team access
API Domain (Enterprise only)
Access the Zenovay API from your domain.
Example: https://api-analytics.yourdomain.com
Use cases:
- Complete white-label solution
- Strict CSP policies
- API rate limiting per domain
Setting Up Custom Domains
Step 1: Choose Your Domain
Select a subdomain for Zenovay:
Recommended subdomains:
analytics.yourdomain.com(tracking script)stats.yourdomain.com(dashboard)metrics.yourdomain.cominsights.yourdomain.com
Do NOT use your root domain (yourdomain.com) for custom analytics. Always use a subdomain to avoid DNS conflicts.
Step 2: Add Domain in Zenovay
- Go to Settings → Custom Domains
- Click Add Custom Domain
- Enter your subdomain (e.g.,
analytics.yourdomain.com) - Select domain type (Tracking Script / Dashboard / API)
- Click Add Domain
You'll receive DNS configuration details.
Step 3: Configure DNS Records
Add the following DNS records to your domain provider:
For Tracking Script Domain
Add a CNAME record:
Type: CNAME
Name: analytics
Value: proxy.zenovay.com
TTL: 3600 (or Auto)
For Dashboard Domain
Add a CNAME record:
Type: CNAME
Name: stats
Value: app.zenovay.com
TTL: 3600 (or Auto)
Verification TXT Record
Add a TXT record for domain verification:
Type: TXT
Name: _zenovay-verification.analytics
Value: zenovay-verification=abc123xyz...
TTL: 3600 (or Auto)
DNS changes can take 1-72 hours to propagate. Typically, they're active within 15 minutes.
Step 4: SSL Certificate
Zenovay automatically provisions an SSL certificate for your custom domain using Let's Encrypt.
Process:
- DNS records verified
- SSL certificate requested
- Certificate issued (usually within 5 minutes)
- Auto-renewal every 90 days
Status:
- Pending: DNS verification in progress
- Issuing: Certificate being generated
- Active: SSL certificate installed and working
- Failed: Configuration error (check DNS)
Step 5: Update Tracking Script
Once the domain is active, update your tracking script:
Before (default domain):
<script src="https://api.zenovay.com/z.js"
data-tracking-code="YOUR_TRACKING_CODE"
async></script>
After (custom domain):
<script src="https://analytics.yourdomain.com/z.js"
data-tracking-code="YOUR_TRACKING_CODE"
async></script>
Step 6: Verify Configuration
Test your custom domain:
- Visit
https://analytics.yourdomain.com/z.js - Verify the script loads without errors
- Check SSL certificate in browser (padlock icon)
- Test tracking on a page with the updated script
DNS Configuration by Provider
Cloudflare
- Log in to Cloudflare dashboard
- Select your domain
- Go to DNS → Records
- Click Add record
- Add CNAME and TXT records as shown above
- Important: Set Proxy status to "DNS only" (gray cloud)
If using Cloudflare proxy (orange cloud), disable it for Zenovay custom domains. The orange cloud can interfere with SSL certificate validation.
Google Domains (now Squarespace)
- Go to My Domains → Select domain
- Click DNS → Manage custom records
- Click Create new record
- Add CNAME:
- Host name:
analytics - Type:
CNAME - Data:
proxy.zenovay.com
- Host name:
- Add TXT record for verification
GoDaddy
- Log in to GoDaddy account
- Go to My Products → DNS
- Click Add in DNS records section
- Select CNAME from Type dropdown
- Enter:
- Host:
analytics - Points to:
proxy.zenovay.com - TTL:
1 Hour
- Host:
- Add TXT record for verification
Namecheap
- Log in to Namecheap
- Domain List → Manage
- Go to Advanced DNS tab
- Click Add New Record
- Select CNAME Record:
- Host:
analytics - Target:
proxy.zenovay.com - TTL:
Automatic
- Host:
- Add TXT record for verification
Advanced Configuration
Custom Script Path
Change the script path from /z.js to a custom path:
Example: https://analytics.yourdomain.com/pixel.js
Setup:
- Go to Settings → Custom Domains → Your domain
- Click Advanced
- Enter custom script path:
/pixel.js - Save changes
Update your script tag accordingly.
Multiple Custom Domains
You can add multiple custom domains for different purposes:
| Domain | Purpose |
|---|---|
| analytics.yourdomain.com | Main tracking script |
| stats.yourdomain.com | Dashboard access |
| cdn.yourdomain.com | Backup script domain |
API Proxy (Enterprise)
Proxy API requests through your domain:
// Default
fetch('https://api.zenovay.com/e/YOUR_TRACKING_CODE', { ... });
// Custom domain
fetch('https://api.yourdomain.com/e/YOUR_TRACKING_CODE', { ... });
Setup:
- Add API custom domain in settings
- Configure CNAME to
api.zenovay.com - Update API endpoint in your code
Troubleshooting
Domain Verification Failed
Causes:
- DNS records not propagated yet (wait 1-24 hours)
- Incorrect CNAME or TXT record
- Typo in domain name
- DNS caching
Solutions:
-
Verify DNS records with
digornslookup:dig analytics.yourdomain.com CNAME dig _zenovay-verification.analytics.yourdomain.com TXT -
Clear DNS cache:
# macOS sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder # Windows ipconfig /flushdns # Linux sudo systemd-resolve --flush-caches -
Use online DNS checker: https://dnschecker.org
SSL Certificate Failed
Causes:
- Domain not verified
- Cloudflare proxy enabled (orange cloud)
- CAA DNS record blocking Let's Encrypt
- Rate limit reached (Let's Encrypt)
Solutions:
- Disable Cloudflare proxy (set to "DNS only")
- Check CAA record:
dig yourdomain.com CAA - If CAA exists, add Let's Encrypt:
Type: CAA Name: @ Value: 0 issue "letsencrypt.org" - Wait 1 hour and retry certificate issuance
Script Not Loading from Custom Domain
Check:
- DNS: Verify CNAME points to correct target
- SSL: Ensure certificate is active (green padlock)
- Script Path: Confirm
/z.jsis correct - Browser Console: Look for errors
- CSP: Add custom domain to Content-Security-Policy
CSP header example:
Content-Security-Policy: script-src 'self' https://analytics.yourdomain.com;
Dashboard Not Accessible
Verify:
- CNAME record points to
app.zenovay.com - SSL certificate is active
- Domain status shows "Active" in Zenovay settings
- No DNS caching issues
Test:
curl -I https://stats.yourdomain.com
Should return 200 OK with valid SSL.
Security Considerations
SSL/TLS
- Zenovay provides free SSL certificates via Let's Encrypt
- Certificates auto-renew every 90 days
- TLS 1.2 and 1.3 supported
- HSTS enabled for all custom domains
DNS Security
Enable DNSSEC on your domain to prevent DNS spoofing:
- Check if your registrar supports DNSSEC
- Enable DNSSEC in domain settings
- Add DS records to parent zone
Access Control
Dashboard custom domains:
- Restrict access by IP (Enterprise)
- Enable mandatory 2FA for team
- Use SSO for authentication (Enterprise)
Performance Optimization
CDN Integration
For global performance, use Cloudflare or similar CDN:
- Set up Cloudflare for your domain
- Add custom domain to Zenovay
- Configure CNAME records
- Enable "DNS only" mode (gray cloud)
- Optionally enable Cloudflare proxy AFTER SSL is active
Caching Headers
Zenovay sets appropriate cache headers for the script:
Cache-Control: public, max-age=3600, s-maxage=86400
- Browser cache: 1 hour
- CDN cache: 24 hours
HTTP/2 and HTTP/3
Custom domains support modern protocols:
- HTTP/2 enabled by default
- HTTP/3 (QUIC) available
- Server Push for faster loading
Removing Custom Domains
To remove a custom domain:
- Update tracking scripts to use default domain
- Wait 48 hours for cache to clear
- Go to Settings → Custom Domains
- Click ⋮ next to domain
- Select Remove Domain
- Confirm removal
DNS records can be deleted after removal is complete.
Removing a custom domain while it's still in use will break tracking. Always update scripts first, then remove the domain.
Best Practices
- Use descriptive subdomains:
analytics,stats,metrics - Test before deploying: Verify SSL and loading before updating live sites
- Monitor certificate expiry: Zenovay auto-renews, but monitor for issues
- Keep DNS records updated: Document DNS changes for your team
- Use separate domains: Different subdomains for tracking vs dashboard
Getting Help
For custom domain setup assistance:
- Scale Plan: [email protected]
- Enterprise Plan: [email protected] (priority support)
- DNS Issues: Check Troubleshooting Guide
Enterprise customers receive white-glove setup assistance, including DNS configuration help and SSL certificate management.