TLDR: Serve the GetCookies widget from your own subdomain (privacy.yourdomain.com). White-label deployment means no third-party branding, better perceived trust, and fewer ad blockers interfering with consent collection.
Read full summary
Custom domain configuration allows agencies and enterprises to serve the GetCookies consent widget from their own domain or subdomain rather than our CDN. This provides white-label branding, potentially better ad blocker compatibility, and reinforces that consent management is part of your property—not a third-party overlay.
*Summary by Claude AI*
## The Ad Blocker Problem
A financial services company noticed something strange in their analytics: their EU traffic had a 15% lower consent rate than expected based on industry benchmarks.
Investigation revealed the cause: ad blockers. Popular browser extensions were blocking requests to common consent management CDNs. No request meant no banner. No banner meant no consent. No consent meant default denial of analytics.
Serving from their own subdomain solved it immediately. Ad blockers don't typically block first-party domains. Consent rates normalized.
## Why Custom Domains Matter
### Ad Blocker Compatibility
Many ad blockers maintain lists of known tracking and consent domains. Even though consent platforms help users *control* tracking, some blockers treat them as tracking infrastructure.
First-party domains bypass these blocks:
- `cdn.getcookies.co` → may be blocked
- `consent.yourdomain.com` → typically allowed
### White-Label Branding
For agencies serving multiple clients:
- Each client gets their own subdomain
- No "Powered by GetCookies" attribution
- Full brand ownership of the consent experience
### Enterprise Trust
Enterprise users often scrutinize third-party integrations:
- Security teams prefer first-party resources
- Privacy auditors trust same-domain content
- Procurement questions decrease
### Performance Perception
Same-origin requests feel faster:
- No DNS lookup for new domain
- Connection reuse possible
- Browser prioritizes same-origin resources
## How Custom Domains Work
### Architecture
**Default Setup:**
```
Your Website GetCookies CDN
↓ ↓
Browser loads page → Requests cdn.getcookies.co/widget.js
↓
Returns widget.js
```
**Custom Domain Setup:**
```
Your Website Your CDN/Proxy GetCookies Origin
↓ ↓ ↓
Browser → consent.yourdomain.com → Proxies to → origin.getcookies.co
↓
Returns widget.js
(appears first-party)
```
### DNS Configuration
Point your subdomain to our servers:
**Option A: CNAME Record**
```
consent.yourdomain.com CNAME custom.getcookies.co
```
**Option B: Cloudflare Proxy**
```
consent.yourdomain.com → Cloudflare Worker → origin.getcookies.co
```
### SSL/TLS
Custom domains include automatic SSL:
- Certificate provisioned automatically
- Renewed before expiration
- TLS 1.2+ enforced
## Setup Guide
### Step 1: Choose Your Subdomain
Common choices:
- `consent.yourdomain.com`
- `privacy.yourdomain.com`
- `cookies.yourdomain.com`
- `cmp.yourdomain.com`
### Step 2: Configure DNS
Add a CNAME record:
```
Host: consent
Type: CNAME
Value: custom.getcookies.co
TTL: 300
```
### Step 3: Verify in Dashboard
1. Go to **Settings > Custom Domains**
2. Enter your subdomain
3. Click **Verify DNS**
4. Wait for SSL certificate provisioning (usually 5-10 minutes)
### Step 4: Update Widget Script
Change your script source:
**Before:**
```html
```
**After:**
```html
```
## Agency White-Label Setup
For agencies managing multiple clients:
### Per-Client Subdomains
Each client gets their own subdomain:
```
consent.client1.com → Client 1's consent widget
consent.client2.com → Client 2's consent widget
consent.client3.com → Client 3's consent widget
```
### Agency Master Domain
Or use your agency domain with paths:
```
consent.agency.com/client1 → Client 1
consent.agency.com/client2 → Client 2
consent.agency.com/client3 → Client 3
```
### Branding Removal
Custom domains automatically:
- Remove "Powered by GetCookies" footer
- Hide platform-specific logos
- Use only client branding
## Cloudflare Integration
If you use Cloudflare, leverage their infrastructure:
### Cloudflare Proxy Mode
1. Add subdomain to Cloudflare
2. Enable proxy (orange cloud)
3. Create Worker for origin routing
**Worker Code:**
```javascript
export default {
async fetch(request) {
const url = new URL(request.url);
url.hostname = 'origin.getcookies.co';
return fetch(url.toString(), request);
}
}
```
### Benefits
- Cloudflare edge caching
- DDoS protection included
- Global CDN performance
- Your existing Cloudflare setup
## Verification and Testing
### DNS Verification
Check your CNAME:
```bash
dig consent.yourdomain.com CNAME
```
Expected output:
```
consent.yourdomain.com. 300 IN CNAME custom.getcookies.co.
```
### SSL Verification
Check certificate:
```bash
openssl s_client -connect consent.yourdomain.com:443 -servername consent.yourdomain.com
```
Should show valid certificate for your domain.
### Widget Test
Load the widget and verify:
1. Network tab shows requests to your subdomain
2. No requests to getcookies.co
3. Widget functions normally
4. Consent is stored correctly
## Troubleshooting
### DNS Not Propagating
**Symptoms**: Verification fails, widget doesn't load
**Solutions**:
- Wait up to 24 hours for propagation
- Check for conflicting records
- Verify CNAME points to correct value
- Try different DNS (8.8.8.8, 1.1.1.1)
### SSL Certificate Issues
**Symptoms**: Browser security warnings
**Solutions**:
- Wait 10-15 minutes after DNS verification
- Check for CAA records blocking issuance
- Ensure no existing certificate conflicts
- Contact support if issues persist
### Widget Not Loading
**Symptoms**: Script returns 404 or error
**Solutions**:
- Verify domain ID in script URL
- Check network tab for actual error
- Ensure API allows custom domain
- Test with default CDN first
## Performance Impact
### Latency
Custom domains add minimal latency:
- One additional DNS lookup (cached after first request)
- One CNAME resolution step
- Offset by potential caching benefits
### Caching
Configure caching headers appropriately:
- Widget JS: Cache with short TTL (1 hour)
- Config endpoints: No cache
- Static assets: Long cache with versioning
## Security Considerations
### Subdomain Isolation
Use a dedicated subdomain:
- Don't use bare domain
- Don't reuse existing app subdomains
- Keep consent isolated
### CSP Configuration
Update Content Security Policy:
```
Content-Security-Policy:
script-src 'self' https://consent.yourdomain.com;
connect-src 'self' https://consent.yourdomain.com;
```
### Cookie Scope
Consent cookies scope to main domain:
- Widget runs on `consent.yourdomain.com`
- Consent cookie set on `.yourdomain.com`
- Works across all subdomains
## Enterprise Features
### SLA for Custom Domains
Enterprise plans include:
- 99.9% uptime SLA for origin
- Priority SSL provisioning
- Dedicated IP option
- Custom TTL configuration
### Multi-Region Deployment
For global enterprises:
- Deploy to multiple regions
- Geo-routing for lowest latency
- Region-specific compliance configurations
### Audit Logging
Custom domain requests are logged:
- Request timestamps
- Geographic distribution
- Error tracking
- Usage metrics
## Getting Started
1. **Plan**: Choose subdomain naming convention
2. **Configure**: Add DNS records
3. **Verify**: Complete verification in dashboard
4. **Update**: Change script sources
5. **Test**: Verify functionality across sites
Custom domains are about control—control over branding, control over blocking, and control over how consent appears to your users.