Skip to content
pixelary Docs

Custom tracking domain

Paid plans

On a paid plan, the script and events can run on a subdomain of your own, such as track.example.com, instead of Pixelary's shared address.

Rolling out

If the Tracking domain card in the dashboard says Soon, it is not open on your account yet. Your script keeps working as it is, and you have nothing to do.

What it does, and what it does not

Filter lists work by address. If a list adds a shared Pixelary address, the script stops loading on every site that uses it. A subdomain of your own lowers that risk, because the shared address is no longer the one your pages depend on.

  • It does not get past every ad blocker. Blockers can also match the file path or the script's behavior, and some, such as uBlock Origin on Firefox, look up the CNAME record and judge the address it points at. Visitors who block it stay blocked, and that is their choice.
  • It does not lift Safari's 7-day limit. Pixelary's cookies are set by a script, and Safari limits those to 7 days wherever the script comes from. Safari applies the same limit to cookies set through a CNAME to another company. In Safari, matching relies on hashed email and phone, as it does without this feature.
  • It does not change what is collected, or who receives it. Consent works exactly as before.

1 Choose a new subdomain

Use a name nothing else uses, such as track. It has to be under a domain of this site, so add the domain under Domains first if it is not there. The address your site itself runs on will not work, nor will www, the bare domain (example.com), or an address on a shared platform (*.framer.app, *.webflow.io): you need a domain whose DNS you control.

2 Add it in the dashboard

Open your site's Domains page, find the Tracking domain card, enter the subdomain and add it.

3 Add the CNAME record

The card shows the exact record. Add it where your domain's DNS is managed:

TypeNameTarget
CNAMEtrackThe address the card shows

If your DNS is on Cloudflare, set the record to DNS only. If your domain has a CAA record, it needs to allow the certificate authorities Cloudflare uses, or the certificate cannot be issued.

4 Wait for Active

Cloudflare notices the record by itself. Use Refresh on the card to see where it stands.

StatusWhat it means
PendingWaiting for the DNS record. Cloudflare keeps checking for 7 days.
Issuing certificateThe record is in place and the secure certificate is on its way. This usually takes a few minutes.
ActiveThe script and events can run on this address.
FailedThe card says why and what to do. Usually the record is missing or points elsewhere, or a CAA record blocks the certificate.

5 Swap the snippet

Once it is Active, the Install page shows the snippet for your subdomain. Replace the old tag with it and publish. The old script keeps working in the meantime, so nothing breaks while you swap, and pages you have not updated yet keep tracking.

<head>
<script>
  window.pixelary = window.pixelary || function () {
    (window.pixelary.q = window.pixelary.q || []).push(arguments);
  };
</script>
<script async crossorigin="anonymous" src="https://track.example.com/s/px_7hq2lm4x.js"></script>

Keep one of the two on a page: a second copy does nothing, and the Install page flags it. If your site sends a Content-Security-Policy header, allow the subdomain:

HTTP header
Content-Security-Policy:
  script-src 'self' https://track.example.com;
  connect-src 'self' https://track.example.com;

The visual picker still loads from api.pixelary.app, so a strict policy also needs that address in script-src and connect-src while you pick elements.

Framer plugin and Google Tag Manager

Neither changes. The Framer plugin and the Tag Manager template keep loading the script from cdn.pixelary.app, and keep working as they are. To use your subdomain on such a site, paste the snippet yourself instead of using the plugin or the template, and remove the other one.

A CNAME makes Pixelary look like part of your site to the browser. It does not make it part of your site, and these points follow from that:

  • You still need consent. Consent rules depend on what is stored and read on the visitor's device and on who receives the data, not on the address. Pixelary waits for your banner exactly as it does on its own address.
  • Cookies set for your whole domain can reach Pixelary. A cookie with Domain=example.com goes to every subdomain, including this one. The snippet above loads with crossorigin="anonymous" so that the script request carries none, but a browser can still attach them to the last batch of events sent as a visitor leaves the page. Pixelary does not read or store cookies from these requests, though they do pass through Pixelary's servers on Cloudflare. Don't scope login or session cookies to your whole domain: leave Domain out, so they stay on the host that set them.
  • Say so in your privacy policy. The subdomain is yours, but Pixelary and Cloudflare still process the data, as our Data Processing Agreement describes. Name them as you would without this feature.
  • Cloudflare handles the connection. It holds a certificate for your subdomain and decrypts the traffic to it, as it does for Pixelary's own addresses. Certificates are public: the subdomain name appears in certificate transparency logs.

If your subscription ends

The subdomain keeps working, so your site does not break. The site then works like any free site: browser pixels only, no server-side events. You can remove the subdomain at any time, but adding a new one needs a paid plan again.

Removing it

  1. Put the standard snippet from the Install page back on your pages and publish. Pages still loading from the subdomain stop tracking once it is removed.
  2. Remove the subdomain on the Domains page.
  3. Delete the CNAME record. Do not leave it behind: a record that still points at Pixelary could be claimed by another Pixelary account that lists your domain.

Something here doesn’t match what you see? Write to hello@pixelary.app.