TrueMetriks documentation: Cross-domain tracking
https://docs.truemetriks.com/features/cross-domain-tracking/
Generated from the TrueMetriks documentation. Paste the whole of this
file into ChatGPT, Claude, Gemini, Cursor or any other AI.
I use TrueMetriks, a server-side tracking and conversion attribution platform.
It tracks my website visitors, ties every sale back to the ad that produced it,
and sends those conversions back to my ad platforms.
Help me with this specific task: Cross-domain tracking.
Keep a visitor as one person when your funnel crosses two separate domains you own, so the ad that started the journey still gets credit for the sale.
HOW TO GUIDE ME
- This file has three parts: THE GUIDE is today's task, BACKGROUND is a
prerequisite to confirm with me before you start THE GUIDE, not optional
reading, and LINK MAP is the only place a real link comes from.
- Ask me ONE thing at a time and wait for my answer before moving on.
- At the start of every step, ask me: "do you want the written steps, or the
video?" If I pick the video, give me the exact link from the LINK MAP at the
bottom and wait until I tell you I have watched it. If I pick the written
steps, give them to me from this file.
- Only ever give me links that appear in the LINK MAP below. Never invent a
URL, never guess an anchor, and if I ask for something that has no link
here, say so and point me at https://docs.truemetriks.com/ instead.
- Never ask me for my password, my API key, my MCP key, or any card details.
You are reading me the steps; I am the one clicking in my own account.
- Confirm each step worked before starting the next one.
- Keep it short. I am doing this while looking at my screen, not reading an
essay.
- Everything you need is in this file. You do not need to browse the web.
===============================================================================
THE GUIDE: Cross-domain tracking
https://docs.truemetriks.com/features/cross-domain-tracking/
===============================================================================
Read this first: this is not a way to get a second domain for free
TrueMetriks is priced per domain. Cross-domain tracking exists to join domains that are all part of one funnel, so a single customer's journey across them stays one journey. It is not a way to track a second, unrelated website without paying for it.
What it is for. A funnel that genuinely has to span two domains. The common case is an advertorial or review page on its own domain that sends readers to your store on another domain, kept separate on purpose so the recommendation does not read as you recommending yourself. Same offer, same customer, one journey, two domains.
What it is not for. Tracking a different business, brand or offer that happens to be yours. That is a second site, and it needs its own subscription like any other domain you track.
We do enforce this. Accounts found using cross-domain tracking to avoid paying for a domain are banned, with no refund. If you are unsure which side of the line you are on, ask us before you set it up, not after. See why extra domains are charged separately.
If you run an ad to one domain and that page sends the visitor to a second domain you own, those used to be two separate visitors. Cross-domain tracking keeps them as one person.
## The problem this solves
The browser scopes the cookie that identifies a visitor to a single domain, and JavaScript cannot get around that. So without this, someone who clicks a Facebook ad to `advertorial.com` and buys at `store.com` looks like two different people:
- The purchase is credited to a stranger, not to the visitor who clicked the ad.
- The journey becomes two sessions, and the second is attributed to `advertorial.com` as a referral.
- The conversion sent back to Facebook, Google or TikTok carries no click id, so the ad platform gets no credit either.
Turn it on and you get one session across both domains, credit to the ad that started the journey, and the click id delivered with the sale.
## When you need this (and when you do not)
Only for two **separate domains** you own, like `advertorial.com` and `store.com`.
It is **not** for subdomains or paths of your own domain. `shop.example.com` and `example.com/checkout` are already one site and already one visitor. The dashboard refuses those anyway: "This is already part of this site, so it is already tracked."
## Plan requirement
**Growth and Unlimited.** On Starter the section is locked, with "Available on the Growth and Unlimited plans." in place of the toggle.
The extra domain is not a separate allowance: its pageviews count against your normal limit.
**Each extra domain in the funnel is a paid add-on.** Growth includes none and Unlimited includes one; every domain after that is $150 a month or $800 a year, added as a line on the subscription you already have. For what that covers and how it lands on your bill, see [why extra domains are charged separately](https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/).
## Where to find it
Open **Settings**, pick your site under **Websites**, then the **Tracking** tab. The **Cross-domain tracking** section sits between **Site platform** and **Ad integrations**.
Older notes that say Site Settings are out of date; it moved to the Tracking tab. There is deliberately **no status pill** here, because the proof is the Sessions view, not a badge.
## Turn it on
It is off by default.
1. Turn on **Track visitors across my other domains**. The **Domains in this funnel** panel appears.
2. Your own domain is already there, greyed and marked **Primary**.
3. Click **+ Add another domain** and type it **bare**: `store.com`, not `https://store.com/`. A leading `www.` is stripped for you.
4. Add a row per domain your funnel uses. Order does not matter and you do not need a row per direction.
5. Click **Save changes**.
Past three extra domains the list pages three rows at a time, with **Previous** / **Next**; the **Primary** row stays visible on every page.
A domain someone else owns is accepted without complaint. Listing a domain does nothing until your snippet is running on it.
## The one hard requirement: your snippet on every domain
**The same snippet from the Tracking tab has to be on every domain you list.** This is by far the most common reason it "does not work".
Nothing new to install, no second site, no second CNAME: the exact snippet you already have, whatever each domain is built on. If you are unsure, open each domain and view source. The [tracking code install guide](https://docs.truemetriks.com/getting-started/install-first-tracker/) covers where it goes.
Shopify is the one exception, because a Custom Pixel cannot tag an outgoing link. See [Cross-domain tracking with Shopify](https://docs.truemetriks.com/platform-installs/shopify-cross-domain/) for the extra line it needs.
## Both directions work
There is no "from" and "to". List the domains in any order and a visitor can travel either way, or back and forth, and stay one person.
## Test it yourself
Two minutes, and worth doing once.
1. Open your first domain with a fake click id, for example `https://advertorial.com/?fbclid=my_test_1`.
2. Click a real link on the page through to your second domain, not a bookmark or a typed URL.
3. Browse a page there, and buy something if you can.
4. Open [Sessions](https://docs.truemetriks.com/dashboard/sessions/).
**One session containing pages from both domains, still carrying the source it started with** means it works.
It is not working if you see **two separate sessions**, or **one session whose source is a Referral from your own other domain**. Both send you back to the snippet check or the saved domain list.
## The `_tmid` parameter
Clicking from one listed domain to another flashes a `?_tmid=...` parameter in the address bar for a split second. That is the handoff, and it is stripped as soon as the second domain reads it. It never reaches your reports and needs excluding nowhere.
If it **stays** in the address bar, the second domain did not accept it: the snippet is missing there, or that domain is not in the saved list.
## Limits worth knowing
- Ordinary links and form submissions carry the handoff. `window.open`, meta refreshes and server-side redirects do not.
- A redirector or shortener that drops the query string loses the handoff.
- **A password-protected Shopify store breaks it.** Shopify redirects to `/password` and drops the query string. Easy to hit on a development store, where the password is locked on until the store is on a paid plan.
- Journeys already split before you turned it on are not repaired retroactively.
- Use one address form per domain, either `www.` or not, rather than mixing them.
- Internationalised domains have to be entered in punycode (`xn--`) form.
## Troubleshooting
**I still see two sessions.** The snippet is missing from the second domain, or that domain is not in the saved list. Check both, in that order.
**The source shows as a Referral from my own other domain.** That domain is not in the saved list, so the visit was treated as ordinary referral traffic. Add it and save.
**The `_tmid` parameter stays in my address bar.** Same two causes: no snippet on the destination domain, or it is not in the saved list.
**My Shopify store is password protected.** Turn the password off; Shopify drops the query string on its redirect to `/password`. See [Cross-domain tracking with Shopify](https://docs.truemetriks.com/platform-installs/shopify-cross-domain/).
**I turned it off. Did I lose anything?** No. Your domains are kept and come back when you turn it on again.
If none of that is it, [Common issues](https://docs.truemetriks.com/troubleshooting/common-issues/) has the general tracking-not-firing checklist.
===============================================================================
BACKGROUND: Why extra domains are charged separately
https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/
===============================================================================
TrueMetriks is priced per domain. Cross-domain tracking lets one dashboard follow a visitor across several domains you own, and each of those is still a domain we track, so each one is priced like one.
That is the whole answer. The rest is detail. For how the feature works and how to turn it on, see [cross-domain tracking](https://docs.truemetriks.com/features/cross-domain-tracking/).
## What the price covers
An extra domain is not a switch we flip. It is a second website sending us traffic.
- Every pageview, event, session and purchase on it is collected, processed and stored, every day of the year.
- Attribution runs over that traffic the same way it runs over your first domain.
- Server-side conversions from it are sent on to Facebook, Google Ads, GA4 and TikTok.
And you get what you came for: the visitor stays one person. Someone who clicks your ad on `demo-brand.example` and buys on `demo-brand-store.example` is one journey, not two strangers, so the sale credits the ad that started it instead of a referral from your own other domain.
## What each plan includes
| Plan | Cross-domain tracking | Extra domains included | Each additional domain |
|------|----------------------|------------------------|------------------------|
| Starter, $70/month or $400/year | Not available | None | Not available |
| Growth, $150/month or $800/year | Yes | None | $150/month or $800/year |
| Unlimited, $270/month or $1,600/year | Yes | One | $150/month or $800/year |
Growth plus one extra domain is $1,600 a year. Unlimited is $1,600 a year and includes one. Two domains cost the same either way, so you are never penalised for the plan you started on.
## How it appears on your bill
One subscription with more than one line on it, like a phone bill with a plan line and an extra-data line. A Growth customer with one extra domain on the yearly cycle sees this on **Settings > Organization > Subscription**:
| Line | Amount |
|------|--------|
| Growth, yearly | $800.00 |
| Extra tracked domain, `demo-brand-store.example` | $800.00 |
| Total at renewal | $1,600.00/year |
One invoice, one charge, one renewal date, the same card. Your plan is **not** charged twice: the $1,600 is your $800 plan plus the $800 domain, renewing together on the date you already have.
On the monthly cycle the bill has the same shape, just smaller numbers:
| Line | Amount |
|------|--------|
| Growth, monthly | $150.00 |
| Extra tracked domain, `demo-brand-store.example` | $150.00 |
| Total at renewal | $300.00/month |
Same logic, shorter cycle: the $300 is your $150 plan plus the $150 domain, renewing together every month instead of every year.
## Buying part-way through your billing period
You pay the full price for your cycle on the day you buy, with no proration. On the yearly cycle that is the full $800, because you get a full year of tracking on that domain from that moment; on the monthly cycle it is the full $150, for a full month. It then renews alongside your plan, on the same cycle.
At checkout only the new domain is charged. Your plan is not re-charged, and the dialog shows a single line, so there is no total to misread as a double charge.
## Removing an extra domain
Remove a paid domain from **Settings > Organization > Subscription**, using the **Remove** button on its line, so the tracking and the charge stop together. It is not removed from the Tracking tab.
- It keeps tracking until your renewal date, which you have already paid for. Then it stops and your total drops by the add-on price for your cycle, $150 a month or $800 a year.
- No refund and no credit for the unused part of the year.
- Nothing is deleted. Your funnel setup and all collected data stay exactly where they are.
- Changed your mind before the renewal date? Putting it back costs nothing, because the period is paid for.
- Once expired, the domain stays in your list marked as not tracking, with a **Resubscribe** button that restores it immediately, settings and data intact.
Be careful with one thing: cancelling your **subscription** ends your plan and every extra domain with it. To drop just one domain, use its **Remove** button.
## A paid slot is locked to its domain
**A slot belongs to the domain it was bought for, permanently.** It cannot be swapped while active, and it cannot be reassigned after you remove it. A different domain means a new slot at $150 a month or $800 a year.
The reason is simple: you are not buying a transferable licence for "one extra domain", you are buying that specific domain being tracked. `demo-brand-store.example` and `demo-brand-vip.example` are two different websites sending two different streams of traffic, so swapping one for the other is just starting to track a new website. Check the spelling before you confirm.
Unlimited's one free domain works the same way. You choose which domain it applies to, confirm behind an "are you sure" step, and from then on it is locked too.
## Subdomains are always included
Buying a domain covers all of its subdomains at no extra cost. Buy `demo-brand-store.example` and you also get `shop.demo-brand-store.example`, `checkout.demo-brand-store.example` and every other subdomain of it. You never pay twice for the same domain.
Worth knowing before you reach for your card: **you do not need cross-domain tracking for your own subdomains at all.** `demo-brand.example`, `shop.demo-brand.example` and `demo-brand.example/checkout` are already one site and tracked as one visitor. The add-on is only for a genuinely separate domain, and the dashboard turns down your own subdomain if you try to add it.
Paste a domain however you have it to hand. We strip `https://` and `www.` for you.
## When your free trial ends
During a free trial you can add as many domains as you like, at no cost, and nothing is deleted when it ends. Your trial domains are kept and locked, each with its own **Subscribe** button on the Tracking tab, so you buy them one at a time and only the ones you still want. You are never asked to decide this at checkout while choosing a plan.
- **Growth.** Every trial domain is kept and locked. Subscribe to any of them for $800 a year each.
- **Unlimited.** First pick which single domain your included free slot applies to. That choice is permanent. The rest stay saved and can be subscribed to for $800 a year each.
- **Starter.** Cross-domain tracking is not available, so the section is locked. Your trial domains are saved, and upgrading brings them back within reach.
While a domain is not tracked, visitors moving between it and your main domain count as two people again, so sales there will not credit the ad that started the journey.
## Still not sure it is worth it?
Work out what one attributed sale on the second domain is worth to you, then compare it to $150 a month or $800 a year. If your funnel really does cross two domains, every sale on the second one is currently credited to nobody, so you are optimising your ad spend against incomplete numbers.
If it does not cross two separate domains, you do not need this at all. Check [cross-domain tracking](https://docs.truemetriks.com/features/cross-domain-tracking/) first. Most people who think they need it are looking at their own subdomain, which is already covered.
===============================================================================
LINK MAP
Use these exact URLs. Anything ending in a # anchor opens on that section
or that video. Nothing else is a valid link. Never invent a URL and never
guess an anchor.
Cross-domain tracking
The guide ................................... https://docs.truemetriks.com/features/cross-domain-tracking/
The problem this solves ..................... https://docs.truemetriks.com/features/cross-domain-tracking/#the-problem-this-solves
When you need this (and when you do not) .... https://docs.truemetriks.com/features/cross-domain-tracking/#when-you-need-this-and-when-you-do-not
Plan requirement ............................ https://docs.truemetriks.com/features/cross-domain-tracking/#plan-requirement
Where to find it ............................ https://docs.truemetriks.com/features/cross-domain-tracking/#where-to-find-it
Turn it on .................................. https://docs.truemetriks.com/features/cross-domain-tracking/#turn-it-on
The one hard requirement: your snippet on every domain
https://docs.truemetriks.com/features/cross-domain-tracking/#the-one-hard-requirement-your-snippet-on-every-domain
Both directions work ........................ https://docs.truemetriks.com/features/cross-domain-tracking/#both-directions-work
Test it yourself ............................ https://docs.truemetriks.com/features/cross-domain-tracking/#test-it-yourself
The _tmid parameter ......................... https://docs.truemetriks.com/features/cross-domain-tracking/#the-_tmid-parameter
Limits worth knowing ........................ https://docs.truemetriks.com/features/cross-domain-tracking/#limits-worth-knowing
Troubleshooting ............................. https://docs.truemetriks.com/features/cross-domain-tracking/#troubleshooting
Why extra domains are charged separately
The guide ................................... https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/
What the price covers ....................... https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#what-the-price-covers
What each plan includes ..................... https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#what-each-plan-includes
How it appears on your bill ................. https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#how-it-appears-on-your-bill
Buying part-way through your billing period . https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#buying-part-way-through-your-billing-period
Removing an extra domain .................... https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#removing-an-extra-domain
A paid slot is locked to its domain ......... https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#a-paid-slot-is-locked-to-its-domain
Subdomains are always included .............. https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#subdomains-are-always-included
When your free trial ends ................... https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#when-your-free-trial-ends
Still not sure it is worth it? .............. https://docs.truemetriks.com/billing/why-extra-domains-are-charged-separately/#still-not-sure-it-is-worth-it