Custom Domains
Serve Digital Product Passports from your own branded domain instead of eulabel.eu.
By default, QR codes resolve through eulabel.eu. With custom domains, your products resolve through your own branded URL (e.g., labels.yourbrand.com).
At a glance
- Bring-your-own domain for passports (e.g.
labels.yourbrand.com). - Configure a CNAME to
resolver.eulabel.eu. - EUlabel provisions TLS automatically after verification.
How it works
When a consumer scans a QR code, the request flows through:
labels.yourbrand.com/01/05601012012200
|
DNS CNAME → resolver.eulabel.eu
|
EUlabel resolver identifies your tenant
|
Passport served under your domainSetup steps
Choose your subdomain
Pick a subdomain that clearly indicates product information:
labels.yourbrand.comproducts.yourbrand.comdpp.yourbrand.com
Add a CNAME record
In your DNS provider, create a CNAME record pointing to EUlabel's resolver:
| Type | Name | Value |
|---|---|---|
CNAME | labels | resolver.eulabel.eu |
DNS propagation typically takes 5-30 minutes, but can take up to 48 hours depending on your DNS provider and TTL settings.
Register the domain in EUlabel
export EULABEL_API_KEY="sk_live_..."
curl -X POST https://api.eulabel.eu/v1/custom-domains \
-H "Authorization: Bearer $EULABEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domain": "labels.yourbrand.com"
}'const EULABEL_API_KEY = process.env.EULABEL_API_KEY;
const domain = await fetch('https://api.eulabel.eu/v1/custom-domains', {
method: 'POST',
headers: {
'Authorization': `Bearer ${EULABEL_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ domain: 'labels.yourbrand.com' }),
}).then(r => r.json());Verify ownership
EUlabel will attempt to verify the CNAME record. You can check the status:
curl https://api.eulabel.eu/v1/custom-domains/DOMAIN_ID \
-H "Authorization: Bearer $EULABEL_API_KEY"Possible statuses:
| Status | Meaning |
|---|---|
pending | CNAME not yet detected |
verified | Domain is active and serving |
error | DNS misconfiguration detected |
SSL certificate provisioning
EUlabel automatically provisions a TLS certificate via Let's Encrypt once the CNAME is verified. This typically completes within 2-5 minutes.
Troubleshooting
Go-live checklist: confirm CNAME, wait for verified, confirm HTTPS works, then roll out QR codes in production print runs.
After setup
Once verified, your existing QR codes continue to work through eulabel.eu, and new products can use your custom domain:
# Both resolve to the same passport:
https://eulabel.eu/01/05601012012200
https://labels.yourbrand.com/01/05601012012200