Most international SEO problems are structural, and most of them are self-inflicted. A company launches a second market, copies its site, adds a language switcher, and a year later discovers that Google has been indexing the wrong version in the wrong country, that two pages are cannibalising each other, and that the "international" traffic is mostly the home market clicking the wrong link. We have made several of these mistakes ourselves running TML Agency across a .com and a .ca, so this guide is written from the inside.
First decide what you are actually localising
International SEO is really two different jobs that people conflate. Language targeting serves the same content to speakers of different languages. Country targeting serves different content, offers, prices or legal terms to people in different countries, possibly in the same language. English for Canada, the United States, the UK and Australia is country targeting: the words overlap, the currency, spelling, regulations and seasonality do not. Decide which job you are doing before choosing a structure, because the structure follows from it.
ccTLD, subfolder or subdomain
Country-code domains (example.ca, example.co.uk) send the strongest country signal, build local trust, and let each market rank on its own. The cost is that authority does not pool: every domain earns its own links. This is the right choice when a market is large enough to justify its own domain and you can commit to building it.
Subfolders (example.com/ca/, example.com/uk/) pool authority on one domain and are the sensible default for most businesses. Google's geotargeting lets you assign each folder to a country in Search Console, and one set of links lifts every market.
Subdomains (ca.example.com) are treated closer to separate sites than to subfolders and rarely offer an advantage over either of the other two. Choose them only when a technical constraint forces it.
We run a ccTLD split (townmedialabs.com for the global site, townmedialabs.ca for Canada) from a single codebase. That gives Canada its own domain to rank on while every page is generated by the same system, but it only works because each domain publishes strictly its own market's URLs and answers foreign-market URLs with a redirect to the right domain rather than serving a duplicate.

hreflang, and the four ways it goes wrong
hreflang tells Google which version of a page is intended for which language and country. The syntax is simple; the implementation almost never is. The failures we see most:
- Non-reciprocal annotations. Page A says B is its en-CA alternate, but B does not point back to A. Google ignores the pair. Every page in a cluster must list every member, including itself.
- Pointing at redirects or 404s. If an alternate URL redirects, or does not exist in that market, the annotation is invalid. Only claim alternates that return a 200 in that market.
- Wrong codes. "en-UK" is not a valid region code (it is en-GB). "en" alone targets the language everywhere, which is fine as a fallback and wrong as the only annotation for a country-specific page.
- No x-default. The x-default annotation names the page to show when no other version matches. Without it, Google guesses.
Then there is the mistake that sits above all of these: claiming an hreflang cluster for a page that only exists in one market. If a Canadian city page has no US equivalent, it needs no alternates at all. A false cluster is worse than none.
Canonicals per market, not across markets
Each market's page should canonicalise to itself, in that market's domain or folder. A common error is to canonicalise every localised version to the "main" one, which tells Google to index only the main version and throws the localised pages away. hreflang and canonicals do different jobs: canonicals consolidate duplicates, hreflang relates equivalents. Localised equivalents are not duplicates.
The same applies to the URL form. If your canonical says /page/ and your server serves /page, every canonical points at a redirect. Pick one form and enforce it everywhere: canonicals, sitemaps, hreflang, internal links.
Localisation is not translation
An English page for Australia that quotes US dollars, references "fall", and links to a US phone number is not localised, and users treat it accordingly. Real localisation covers currency and pricing format, spelling (organisation versus organization), units, seasonality, legal references (PIPEDA versus CCPA versus UK GDPR), local proof (references and reviews from that market), and contact details someone in that country can actually use. For non-English markets, machine translation without a native editor produces copy that reads as foreign and converts as such.

Sitemaps and crawl budget across markets
Give each market its own sitemap (or its own set of sitemaps split by content type) listing only that market's URLs on that market's domain. A single global sitemap that lists every localised page mixes the signals and makes Search Console's coverage reports useless. Verify each domain or folder separately in Search Console and set geotargeting where it applies, so you can see indexation and queries per market rather than a blended total.
Serving the right version
Do not redirect users automatically based on IP address: it breaks crawling (Googlebot mostly crawls from the US) and annoys travellers. Serve the requested URL, and offer a clear, dismissible banner suggesting the local version. Language and country switchers should link to the equivalent page, not the home page.
Measuring it
Report per market: impressions, clicks and average position by country in Search Console; sessions and conversions by market in analytics; and rankings tracked from the target country, not from your office. International SEO looks flat in a blended report and very different once each market is separated.
A short checklist
- Language targeting or country targeting: decided and documented.
- Structure chosen (ccTLD or subfolder) and geotargeting set in Search Console.
- Every page canonicalises to itself in its own market.
- hreflang only on pages that exist in more than one market, reciprocal, with x-default.
- One URL form, enforced in canonicals, sitemaps, hreflang and links.
- Per-market sitemaps, per-market Search Console properties.
- Localised currency, spelling, legal references, proof and contact details.
- No IP-based auto-redirects; a banner instead.
If you would like a second pair of eyes on a multi-country site, our technical SEO team audits exactly this, or you can book a call and we will start with your Search Console data.
Frequently asked questions
Is a ccTLD better than a subfolder for SEO?
A ccTLD sends a stronger country signal and builds local trust but does not share authority with your other markets. Subfolders pool authority and are the sensible default unless a market is large enough to justify its own domain.
Do I need hreflang if all my markets are in English?
Yes, when the same page exists for several English-speaking countries. hreflang with region codes (en-CA, en-GB, en-AU, en-US) tells Google which version to show in which country.
Should localised pages canonicalise to the main version?
No. Each localised page canonicalises to itself. Cross-market canonicals tell Google to drop the localised versions.
Can I redirect visitors by IP to their local site?
Avoid it. Serve the requested URL and offer a banner suggesting the local version. Automatic redirects interfere with crawling and frustrate travellers.
How do I measure international SEO?
Per market: separate Search Console properties, country-segmented analytics, and rank tracking from the target country. Blended totals hide what is happening in each market.