Canonicals, return tags and CDN geo-redirects fixed first; hreflang generated from your routing table and verified against Googlebot's own crawl.
About this service
Three faults account for nearly every broken hreflang set we are asked to rescue. A canonical pointing from the Indian page to the US page, which tells Google the locale should not exist and overrides the whole annotation set. A missing return tag, so the pairing is unilateral and gets discarded. And a geo-redirect at the CDN edge, which is the expensive one: Googlebot crawls predominantly from US IP ranges, so a redirect on IP sends it to the US page whichever URL it requested, and your other locales are never seen at all. None of the three appear when your team tests from your own office.
The decision that comes before any tag:
Subfolders on one domain, subdomains, or country ccTLDs. We argue for subfolders in almost every case and for a ccTLD only where payments, legal registration or a genuinely separate business demands it. A .in domain buys a local signal you can get from hreflang, and charges you a second authority profile you then have to build from zero. If you already run ccTLDs we will not tell you to migrate; making them talk to each other properly is a different and much cheaper job.
What we implement:
A locale map generated from your routing table rather than maintained by hand. Every URL self-references, every pairing returns, and x-default resolves to the locale selector or to international English as a decision rather than an accident. Delivery moves into XML sitemaps once a set passes a few hundred URLs, because forty link elements in the head of every page is payload you pay for on every request and a block nobody dares edit. Language and region codes checked against ISO 639-1 and ISO 3166-1 alpha-2: en-GB, not en-UK, which is not a country code and is discarded in silence.
Where locales genuinely differ:
Price, stock, delivery window, returns window, payment methods, support hours. Those belong in the page and in the markup, and where they do not differ we say so instead of manufacturing difference. For a furniture catalog serving India and the Gulf, delivery and assembly terms are usually the only real difference and the only one that earns a separate URL. A language attribute on an otherwise identical page is not a locale, it is a duplicate wearing a badge.
How we verify:
Google retired the International Targeting report, so the loose it-looks-configured check is gone and log files are now the honest source. We read Googlebot hits per locale directory over fourteen to thirty days, fetch from US egress to reproduce what Googlebot actually receives, and use the URL Inspection API to confirm the canonical Google selected per locale, which is frequently not the one you declared. Geo behaviour becomes a dismissible banner with a stored preference, never a redirect.
What we will not do:
Build the scaffolding for a locale you cannot serve. With no local price, no stock and nobody to answer the phone in that market, machine-translating the catalog and annotating it does not create a market. It creates thin duplicates and a Search Console property you stop opening. We also will not annotate hi-IN pages produced by translation software. Hindi commercial queries in Roman script behave differently enough that the translated page is answering a question nobody typed.
Who this is not for:
A single-market site that plans to expand next year. Build it when the second market has a price list. And teams who want the tags without the canonical and routing changes underneath them: the tags are the last five per cent of this work, and doing only that part is why you are reading this page.
Handover:
The locale map as code, the sitemap generator, crawl evidence from before and after, and a written record of every locale we advised against.
Scope
- Target market
- Worldwide, United Kingdom, UAE and GCC, India
- Working language
- English, Hindi
- Industry
- Ecommerce and DTC, Marketplaces, Home and furniture, Mobile apps
- Engagement model
- One-off project
- Turnaround
- 1 month or more
- Seller type
- Boutique agency