08/05/17 // Written by Mark Rushworth

International SEO: How to Create HREFLANG Tags for Europe and Other Non-Country Specific Regions

By Mark Rushworth, Senior Technical Account Manager

HREFLANG NON COUNTRY SPECIFIC

As specialists in international SEO techniques, there are a few problems that we’ve chalked up as having no viable answer. Recently, I was surprised when a piece of new insight solved a long-standing issue that, until now, I’ve considered as being a fundamental hole in our ability to effectively implement Hreflang tags.

The most recent instance of this was for an international retailer who had an EU subdomain acting as a catch-all for traffic outside the UK, with pricing in euros.

The typical solution would be to set this subdomain as the catch-all for traffic from unassigned countries, using the x-default Hreflang tag. However, as the site had a USA subdomain and globally the dollar is a more universally accepted form of currency, having euros displayed by default would, in my opinion, result in a lack of performance.

This has annoyed me for some time.

Turning to Twitter, I took the opportunity to ask John Mueller (@johnmu), a Webmaster Trends Analyst at Google who has become the new face of Google after Matt Cutts’ departure, if there was a solution.

To my surprise, he answered! Plus, the solution was simple…for once.

The official guidelines discuss at great length how Hreflang tags need to be reciprocal, however John’s insight advised that for all affected countries, which in this case covers all countries currently using the euro, a single set of destination pages can be set as the target.

For example:

Or as Hreflang tags for the <head> of a web page:

<!–Multiple countries grouped to one destination page –>
<link href=”http://eu.domain.com/page1.htm” hreflang=”FR” rel=”alternate” type=”text/html”/>
<link href=”http://eu.domain.com/page1.htm” hreflang=”DE” rel=”alternate” type=”text/html”/>
<link href=”http://eu.domain.com/page1.htm” hreflang=”IT” rel=”alternate” type=”text/html”/>
<link href=”http://eu.domain.com/page1.htm” hreflang=”ES” rel=”alternate” type=”text/html”/>
<link href=”http://eu.domain.com/page1.htm” hreflang=”PT” rel=”alternate” type=”text/html”/>
<!–UK English language alternative–>
<link href=”http://www.domain.com/page1.htm” hreflang=”en-GB” rel=”alternate” type=”text/html”/>

With 19 countries using the euro, having a massive chunk of code in each web page highlighting how this and other non-country specific groupings can become difficult to manage, not to mention adding to the download speed of the page with its potential effects on conversion rates, it makes sense to avoid using the in-line method of hreflang tag implementation. Instead, use an XML Sitemap linked through Google Search Console. The official guide on a standard implementation can be read here, however, to illustrate this technique you can use the following:

<?xml version=”1.0″ encoding=”UTF-8″?>

<urlset xmlns=http://www.sitemaps.org/schemas/sitemap/0.9
xmlns:xhtml=”http://www.w3.org/1999/xhtml”>
<url>
<!—UK Language Page –>
<loc>http://www.domain.com/page1.htm</loc>
<!—Alternative page targeting each specified country –>
<xhtml:link rel=”alternate” hreflang=”fr” href=http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”de” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”it” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”es” href=http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”pt” href=http://eu.domain.com/page1.htm” />
</url>

<url>
<!—French targeted page (catchall for Euro based customers) –>
<loc>http://eu.domain.com/page1.htm</loc>
<!—Alternative page targeting each specified country – note the addition of en-gb –>
<xhtml:link rel=”alternate” hreflang=”en-gb” href=http://www.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”de” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”it” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”es” href=http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”pt” href=http://eu.domain.com/page1.htm” />
</url>

<url>
<!—German targeted page (catchall for Euro based customers) –>
<loc>http://eu.domain.com/page1.htm</loc>
<!—Alternative page targeting each specified country – note the addition of en-gb –>
<xhtml:link rel=”alternate” hreflang=”en-gb” href=http://www.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”fr” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”it” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”es” href=http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”pt” href=http://eu.domain.com/page1.htm” />
</url>

<url>
<!—Italy targeted page (catchall for Euro based customers) –>
<loc>http://eu.domain.com/page1.htm</loc>
<!—Alternative page targeting each specified country – note the addition of en-gb –>
<xhtml:link rel=”alternate” hreflang=”en-gb” href=http://www.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”fr” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”de” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”es” href=http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”pt” href=http://eu.domain.com/page1.htm” />
</url>

<url>
<!—Spain targeted page (catchall for Euro based customers) –>
<loc>http://eu.domain.com/page1.htm</loc>
<!—Alternative page targeting each specified country – note the addition of en-gb –>
<xhtml:link rel=”alternate” hreflang=”en-gb” href=http://www.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”fr” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”it” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”de” href=http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”pt” href=http://eu.domain.com/page1.htm” />
</url>

<url>
<!—Portugal targeted page (catchall for Euro based customers) –>
<loc>http://eu.domain.com/page1.htm</loc>
<!—Alternative page targeting each specified country – note the addition of en-gb –>
<xhtml:link rel=”alternate” hreflang=”en-gb” href=http://www.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”fr” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”it” href=”http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”es” href=http://eu.domain.com/page1.htm” />
<xhtml:link rel=”alternate” hreflang=”de” href=http://eu.domain.com/page1.htm” />
</url>
</urlset>

Additional uses for this technique would be delivering native language content for non-dom’s i.e. hreflang for fr-GB – French language searches in the UK using the common fr-FR (or just fr) language content as the target. This would have obvious drawbacks for example ecommerce with French language searches in the UK seeing prices in Euros however in this case as Euros would be a familiar currency and with the addition of being able to set the denomination back to British Pounds it could help boost conversions for an albeit small percentage of website traffic without much additional work.

If your business is required to have different versions of your website targeted across multiple countries for compliance, legal disclaimers or as in this case currency, then you may find the technique discussed above useful.

For more information on multilingual SEO or how to effectively implement Hreflang tags for international SEO, contact us today.