A website with a site for each country usually ends up with a GA4 setup for each country too. That's when the numbers stop adding up.
Each market adds its own tags, names its events its own way and builds its own reports. A year later, nobody can say which market converts best, because the markets aren't measuring the same things.
One property, or one per country?
For most businesses, one GA4 property for all country sites is the better starting point. You get one set of events, one set of reports and one place to compare markets.
Separate properties make sense when:
- markets are run as separate businesses, with their own teams and budgets
- access must be restricted, so each market sees only its own data
- traffic is so large that one property runs into GA4's limits
Even then, keep the same event names and parameters in every property. If you ever need a combined view, in BigQuery or a dashboard, it only works if the data matches.
Know which market a visit belongs to.
GA4's country dimension tells you where the visitor was, not which site they used. A French visitor browsing your German site shows as France.
So send the market as a parameter of your own on every event, such as site_market, and register it as a custom dimension. Take it from the site's own settings, not from the URL, so it stays right when URLs change.
Domains, subdomains or folders.
How the country sites are addressed changes the setup:
- Folders (
example.com/fr/): the simplest. One domain, one GA4 data stream, nothing extra. - Subdomains (
fr.example.com): GA4 handles these within one data stream, as long as the cookie domain covers them all. - Separate domains (
example.fr,example.de): set up cross-domain measurement in GA4, or a visit that moves between sites starts again as a new session with a referral.
The guide to cross-domain tracking in GA4 covers the last case, and how to check it's working.
One dataLayer standard for every market.
The most useful thing you can do is agree one dataLayer specification and apply it everywhere. Same event names, same parameters, same values for things like page type, in every language.
The trap is translation. If the German site sends form_name: "Kontaktformular" and the English site sends "Contact form", the same form becomes two rows in every report. Parameter values should be fixed codes, like contact, with the display text kept separately.
At Knight Frank, Marc Alexander worked across more than 50 international websites. Generating the dataLayer from the CMS's own page metadata removed manual maintenance and kept naming the same in every market. The case study has the detail.
Currencies in ecommerce.
If country sites sell in different currencies, send the right currency code with every ecommerce event. GA4 converts revenue into the property's reporting currency using that day's exchange rate.
Two things follow. Revenue from a euro site won't match the euro figure in your own systems exactly, because the rate GA4 used differs from your finance team's. And an event sent without a currency, or with the wrong one, is counted wrongly with no warning.
Consent, market by market.
Country sites often have different banners, set up at different times by different people. Check that every market waits for consent where it's needed, and passes each choice to Google's tags. The rules for EU visitors are covered in GA4 and EU consent rules.
A checklist for a multi-country setup.
- One property, unless there's a clear reason for more
- A market parameter on every event, registered as a custom dimension
- Cross-domain measurement set up if markets use separate domains
- One dataLayer specification, with fixed codes instead of translated values
- The right currency code on every ecommerce event
- Consent tested on every country site, as a visitor from that country
Marc works with European businesses on GA4 and Tag Manager across country sites. The GA4 mini audit is a good first check of where your markets differ.