Cross-domain tracking

If your funnel sends a visitor from one domain to a second domain you own, like an advertorial to a store, cross-domain tracking keeps them as one person instead of two strangers.

Set this up with AI

Copy this prompt into ChatGPT, Claude or whichever AI you use. It carries this whole guide, the pages it depends on, and a link to every video, so it can walk you through it one step at a time.

Open as text

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.

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.

Cross-domain tracking New

Only needed when your funnel crosses two separate domains you own.

Open the setup guide ↗

Only needed when your funnel crosses two separate domains you own - for example demo-brand.example to demo-brand-store.example. Turning it on keeps the visitor as one person, so a sale on the second domain still credits the ad and the page that started the journey. Subdomains and pages of your own domain (shop.demo-brand.example, demo-brand.example/checkout) are already tracked as one site - you do not need this for those.

Track visitors across my other domains

Off by default. Turn this on only if the visitor moves between two different domains, like an advertorial on one domain and the checkout on another. Leave it off if everything happens on this domain, including its subdomains.

Domains in this funnel

demo-brand.example Primary
demo-brand-store.example
+ Add another domain

This is only for a different domain. Anything under your own domain, like shop.demo-brand.example or pages.demo-brand.example, is already part of this site and does not belong here. Add the domains in either direction - visitors can travel both ways.

Your tracking code has to be on each domain listed here.

Nothing new to install: use the same snippet from the Tracking tab on every domain, whatever each one is built on. WordPress, GoHighLevel, ClickFunnels, Shopify and custom sites all use the snippet you already have.

Cancel Saved
Settings → Websites → your site → Tracking, with the toggle on and one second domain listed. There is no status badge on this section by design.

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 covers where it goes.

Shopify is the one exception, because a Custom Pixel cannot tag an outgoing link. See Cross-domain tracking with Shopify 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.

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.

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 has the general tracking-not-firing checklist.

Frequently asked questions

Do I need this for a subdomain, like shop.example.com?

No. Subdomains and paths of your own domain, such as shop.example.com or example.com/checkout, are already one site and already tracked as one visitor. Cross-domain tracking is only for a genuinely separate domain, like example.com to example-store.com. If you try to add your own subdomain the dashboard refuses it with This is already part of this site, so it is already tracked.

Where do I find it in the dashboard?

Settings > Websites > your site > Tracking tab, in its own section called Cross-domain tracking, between Site platform and Ad integrations. It used to live in Site Settings and moved, so older notes and screenshots may point at the wrong place.

What plans is this available on?

Growth and Unlimited. It is not available on Starter. On Starter the section is shown locked with Available on the Growth and Unlimited plans.

Does the extra domain's traffic use a separate pageview allowance?

No. Pageviews from the extra domain count against your plan's normal pageview limit. There is no separate allowance for it.

Do I need to create a second site or install a different snippet?

No. It is one site with more than one domain, not a second site. Install the exact same snippet from the Tracking tab on every domain you list, in whichever platform that domain is built on.

What is the _tmid parameter I see flash in the address bar?

That is the handoff between your two domains. It appears for a split second when a visitor clicks from one listed domain to another, and it is removed from the URL immediately. It never reaches your reports. If it stays in the address bar, the second domain did not accept it, usually because the snippet is missing there or that domain is not in the saved list.

Why is there no status badge showing it is connected?

The Sessions view is the proof, and that is deliberate. One session with pages from both domains means it is working; two separate sessions means it is not, most often because the snippet is missing on one of the domains.

Can I list a domain in either direction?

Yes. List domains in whichever order you like; visitors can travel from either one to the other and still get stitched into one session.

I turned it off again. Did I lose the domains I typed?

No. The list is kept. Turn the toggle back on and your domains are still there.

Need help with this?

Reach us instantly on WhatsApp, or send us a message and we will get back to you. On workdays we usually respond in less than 24 hours.

or send us a message