Custom tracking domain
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.
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:
| Type | Name | Target |
|---|---|---|
| CNAME | track | The 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.
| Status | What it means |
|---|---|
| Pending | Waiting for the DNS record. Cloudflare keeps checking for 7 days. |
| Issuing certificate | The record is in place and the secure certificate is on its way. This usually takes a few minutes. |
| Active | The script and events can run on this address. |
| Failed | The 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.
<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:
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.
Cookies and consent
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.comgoes to every subdomain, including this one. The snippet above loads withcrossorigin="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: leaveDomainout, 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
- 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.
- Remove the subdomain on the Domains page.
- 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.