Sign In

Custom Domains

Use your own domain for branded links and first-party tracking

Use your own domain for short links and tracking to build brand recognition and improve tracking accuracy.

Why Use a Custom Domain?

Branded Short Links

  • Professional appearance - Links like ql.yoursite.com/x7Km9p look trustworthy
  • Higher click rates - Users are more likely to click links from your domain
  • Brand consistency - Match your brand across all touchpoints

Any custom domain works great for short links, including a dedicated root domain like yourbrand.link.

First-Party Tracking

  • Avoid ad blockers - Scripts from your own domain are treated as first-party
  • Better accuracy - First-party cookies are rarely blocked
  • More conversions captured - Data is attributed correctly

Important for conversion tracking

To avoid ad blockers, your tracking pixel must be served from a subdomain of the site where it's installed. If your marketing site is acme.com, use something like ql.acme.com for tracking.

A separate domain (like links.io) works fine for short links, but won't give you first-party tracking benefits on acme.com.

Simplest setup: ql.yoursite.com

Use a subdomain of your main marketing site for both short links and tracking. You get branded links plus full first-party tracking benefits with just one domain to configure.

The ql prefix is short, memorable, and unlikely to conflict with existing subdomains.

Setup Overview

  1. Add your domain in qklnk settings
  2. Configure DNS with two records
  3. Wait for verification (usually a few minutes)

Step 1: Add Your Domain

  1. Go to Settings → Domains
  2. Enter your domain (e.g., ql.yoursite.com)
  3. Click "Add Domain"

After adding your domain, return here for personalized DNS instructions.

Step 2: Configure DNS

Custom domains require two DNS records:

  1. Traffic routing - Points your domain to our servers
  2. SSL validation - Enables automatic SSL certificate provisioning

Both DNS records are required

Without the SSL validation record, your certificate cannot be automatically renewed.

Subdomain Setup (Recommended)

For subdomains like ql.yoursite.com:

Record 1: Traffic Routing

DNS Record
Type: CNAME
Name: ql
Value: proxy.qklnk.cc

Record 2: SSL Certificate Validation

DNS Record
Type: CNAME
Name: _acme-challenge.ql
Value: ql.yoursite.com.830ce750c89e58a6.dcv.cloudflare.com

Replace ql.yoursite.com with your actual subdomain.

Using Cloudflare?

Set both records to DNS only (gray cloud icon). This allows our servers to handle SSL.

Root domain setup (advanced)

Root/apex domains like yoursite.com cannot use standard CNAME records. You'll need a DNS provider that supports CNAME flattening or ALIAS records.

With Cloudflare:

Cloudflare DNS
Type: CNAME
Name: @ (or leave blank)
Value: proxy.qklnk.cc
Proxy status: OFF (gray cloud)

With ALIAS/ANAME support:

ALIAS Record
Type: ALIAS (or ANAME)
Name: @ (or leave blank)
Value: proxy.qklnk.cc

SSL validation record:

DNS Record
Type: CNAME
Name: _acme-challenge
Value: yoursite.com.830ce750c89e58a6.dcv.cloudflare.com

Replace yoursite.com with your actual domain.

Step 3: Verification

After adding both DNS records, verification happens automatically. You'll see one of these statuses:

  • Pending - DNS records not yet detected (can take up to 24 hours)
  • Verified - Domain is active and ready to use

Troubleshooting

Domain stuck on "Pending"
  • Verify both DNS records are correctly configured
  • DNS propagation can take up to 24 hours
  • Use dnschecker.org to verify your records are visible globally
  • If using Cloudflare, ensure proxy is disabled (gray cloud icon)
SSL certificate errors
  • Verify the _acme-challenge CNAME record is in place
  • The value should be your-full-domain.830ce750c89e58a6.dcv.cloudflare.com (e.g., ql.yoursite.com.830ce750c89e58a6.dcv.cloudflare.com)
  • Certificate provisioning may take a few minutes after DNS propagates
Links not redirecting
  • Ensure the traffic routing CNAME points to proxy.qklnk.cc
  • If using Cloudflare, the proxy must be disabled (gray cloud)
  • Try clearing your browser cache or testing in incognito mode