Shopify Markets og international SEO: 5 problemer ingen taler om

Alle elsker Shopify. Og med god grund. For en dansk webshop der sælger til danske kunder er det svært at finde en bedre platform. Simpelt, hurtigt, pålideligt. Jeg anbefaler det selv til kunder der bare skal have en butik op og køre. Men der er noget ingen rigtig taler om, og det er hvad der sker når du prøver at køre international SEO på Shopify, fra et enkelt domæne – altså en TLD løsning. Jeg har netop hjulpet en international e-commerce virksomhed med 8 markeder, UK, Tyskland, Spanien, Danmark, Italien, Frankrig, Holland og USA, med at migrere fra simple sprogmapper til Shopify Markets nye locale-struktur. Det lød som en nem opgradering men blev i stedet en lektion i hvor meget kontrol Shopify tager fra dig. Her er de 5 problemer jeg stødte ind i. Og min løsning som Shopify aldrig ville anbefale.

302 redirect chains der æder din SEO-værdi

Når du migrerer fra /de til /de-de (som Shopify Markets kræver), skal du naturligvis sætte 301 redirects op. Det gør du i Shopify admin. Ved denne aktivering, aktiveres Shopify Markets geolocation-feature også, hvilken er den funktion, der eksempelvis tager en tysk bruger til den tyske destination på websitet. Udfordringen er, at Googlebot rammer /de og Shopify sender en 302 redirect, baseret på lokation, herefter aktiveres den næste omdirrigering, som er din 301 der peger på /de-de. Ikke overraskende, er dette en ødelæggende adfærd, en kæde med et 302 foran et 301 udvander al den linkværdi, der ellers kunne kanaliseres videre gennem et 301.

Google har altid været meget klar omkring den her proces. Et 301 redirect viderefører 85% af en sides værdi, hvis den side der svares til svarer med en statuskode 200 OK. Kommer der endnu en omdirrigering, mistes for det første yderligere 15% af den oprindelige værdi, men 302 redirecten stopper helt værdien, da der er tale om en midlertidig omdirrigering, som dog også, er korrekt statuskode at benytte, ved geo-redirects, men det er selve kombinationen her, der er ødelæggende. Google har ingen grund til at overføre den permanente værdi, fordi du med en 302 grundlæggende siger “det her er midlertidigt, vi skifter nok tilbage snart.”

CDN-laget intercepter dine redirects

“Okay,” tænker du. “Så slår jeg bare geolocation fra og lader mine 301 redirects gøre arbejdet.” Det ville være en logisk løsning men nej, det prøvede jeg og det virkede heller ikke. Shopify bruger Fastly som CDN, og Fastly sidder foran din redirect-tabel. Når et request kommer til /de, sker følgende: Fastly modtager requesten, tjekker om /de er en registreret aktiv Markets-mappe (nej, den hedder nu /de-de), og falder så tilbage til dit Primary Market, som i dette tilfælde er Danmark (/da-dk). Dine manuelt oprettede 301 redirects i Shopify admin nåes aldrig.

Dine redirects eksisterer. De er korrekt opsat. Men de bliver aldrig eksekveret, fordi CDN-laget fanger requesten først og sender den et helt andet sted hen. Det svarer lidt til at man har hængt et skilt op i sin butik, men Shopify har valgt at mure døren til, så ingen kan se det.

Linkbuilding gjort nemt – Anbefaling
Tilmeld dig Bazoom her

Synes du det er svært at finde relevante linkbuilding-medier? Så prøv Bazoom – en af verdens største handelspladser for linkbuilding. Her finder du relevante medier fra stort set alle lande, opdelt efter sprog, kategori og domæneautoritet. Brug koden Bondtofte1500 og få 1.500 kr. i sign-up bonus (mod normalt 750 kr.).

200 OK med forkert indhold er værre end en 404

Men det er slet ikke det værste, for når du rammer /de/ på den migrerede butik, får du ikke en 404-fejl og du får heller ikke en redirect. I stedet får du et HTTP 200 OK-svar, alt OK! Men indholdet, er nu fra det danske marked med danske priser, fragt, valuta mv. Content-language sat til de-DK, altså dansk marked, med tysk sprog. Fra et SEO-perspektiv er dette langt værre end en 404.

En 404 fortæller Google “denne side findes ikke, fjern den gerne fra indexet.” rent og forståeligt. En 200 med forkert indhold fortæller Google “denne side eksisterer og er fin!” Men indholdet matcher ikke sproget, priserne er forkerte, valutaen er forkert, og Google ser nu duplicate content på tværs af dine markeder. Du ender med at kannibalisere dine egne sider mens Google forsøger at finde ud af hvilken version der er den “rigtige” for tyske brugere.

x-default er låst til Primary Market

Hreflang-tags er fundamentet for international SEO, og den vigtigste af dem alle er x-default. Den fortæller Google hvilken version der skal vises til brugere der ikke matcher noget specifikt marked. Altså en default. I Shopify Markets er x-default hardcoded til dit Primary Market. Du kan ikke ændre det, uanset hvor meget du ønsker det. Og så tænker du måske, fint, så sætter jeg bare UK som primary market, men nej, et marked med subfolders, som eksempelvis /en-gb kan ikke gøres til et Primary Market i Shopify. Det skal køre på rod-domænet. Det er en catch-22. Du vil have x-default til at pege på din internationale engelske version. x-default er låst til Primary Market. Primary Market skal køre på rod-domænet uden subfolder. Men dit engelske marked kører på /en-gb. Der er altså ingen løsning inden for Shopifys egen arkitektur.

Rod-URL-en er fanget

Rod-URL-en, altså selve domænet uden nogen path, serverer altid Primary Market. Hvis dit Primary Market er Danmark, vil internationale besøgende der rammer forsiden altid se den danske version først. For et brand med 8-10 markeder, hvor UK og US tilsammen står for 70% af omsætningen, er det absurd at forsiden per default viser danske priser i kroner.

Du kan ikke ændre det uden at omstrukturere hele din market-opsætning. Og en omstrukturering risikerer at bryde alle dine eksisterende redirects, hreflang-tags og indekseringer.

Løsningen: Cloudflare Workers

Efter at have banket hovedet mod Shopifys begrænsninger i ugevis, landede jeg på en løsning som Shopify aldrig ville anbefale: Cloudflare Workers. Konceptet er simpelt. Cloudflare sidder som proxy foran Shopifys CDN. En Worker, et lille stykke JavaScript der kører på Cloudflares edge, intercepter requests til de gamle paths inden Fastly overhovedet ser dem og sender clean single-hop 301 redirects. Og så skete der endelig noget!

Flowet ser sådan ud: Bruger eller Googlebot rammer /de, Cloudflare Worker fanger requesten, Worker sender en direkte 301 til /de-de, og Shopifys CDN ser kun requesten til /de-de som er den korrekte aktive path. Ingen chains, ingen 302-ere, ingen forkert content.

Det virker. Google begynder at flytte rankings over. Backlink-equity overføres korrekt. Brugere lander det rigtige sted.

Men så kom der ikke overraskende endnu et plot twist….

Med Cloudflare som proxy foran Shopify begyndte noget mærkeligt at ske. Produkter blev disapproved i Google Merchant Center og det gik hurtigt. Det viste sig at Shopifys infrastruktur begyndte at rate-limite Google Ads bot-traffic, fordi alle requests nu kom gennem Cloudflares IP-range i stedet for direkte fra Googles kendte IP-er. Shopifys CDN så en masse trafik fra Cloudflare-IP-er og behandlede den som potentielt suspekt. Google Ads-botten kunne ikke crawle produktsiderne, og Merchant Center reagerede ved at afvise produkterne.

Tilbage til tegnebrættet igen. Løsningen var en WAF-regel i Cloudflare der whitelister Googles kendte bot-IP-ranges så de passerer direkte igennem uden proxy-laget. Det kan lade sig gøre, men det illustrerer den kaskade af uforudsete konsekvenser du løber ind i når du skal bygge infrastruktur uden om Shopify for at kompensere for det Shopify burde håndtere selv. Under hele forløbet, var vi i dialog med Shopify support team, som kunne af- og bekræfte mange af vores formodninger, men hjælpe med selve løsningen, det kunne de ikke.

Hvad betyder det her for dig?

Shopify er en fantastisk platform til rigtig mange ting. Til en dansk webshop med ét marked er det svært at slå. Til en virksomhed med 2-3 markeder kan det også fungere fint, hvis du accepterer begrænsningerne. Men hvis du har en seriøs international e-commerce-forretning med 5+ markeder, forskellige valutaer, og en eksisterende SEO-portefølje med rankings og backlinks i flere lande, så skal du vide hvad du går ind til.

Shopify Markets er designet til at gøre det nemt at sælge internationalt. Og det gør det, fra et commerce-perspektiv. Men “nemt” og “SEO-optimalt” er to vidt forskellige ting, og Shopify har konsekvent valgt nemhed over kontrol. Det har forøvrigt altid været min anke med systemet, at det er så låst, hvor andre vil sige det er dets styrke.

Test dine redirects grundigt før migration. Ikke bare i browseren, brug curl eller et crawl-tool der viser dig den fulde redirect chain inklusiv HTTP-statuskoder. Antag ikke at Shopifys redirect-tabel virker som du tror, CDN-laget kan intercepte requests før dine redirects rammer. Og hav en plan B. Cloudflare Workers, edge functions, eller en anden proxy-løsning kan blive nødvendig.

Hvis du sidder med en Shopify-butik og overvejer at åbne nye markeder, eller hvis du allerede har gjort det og oplever uforklarlige fald i organisk trafik, så tag fat i mig før du laver flere ændringer. Jeg har set det her gå galt nok gange til at vide hvor fælderne er, og det er billigere at gøre det rigtigt første gang end at rydde op bagefter.

author avatar
Henrik Bondtofte

Del denne artikel

Indsend Kommentar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *