Shopify SEO-beperkingen: wat je wel en niet kunt oplossen
Terug naar blog

Shopify SEO-beperkingen: wat je wel en niet kunt oplossen

8 min leestijd

Shopify legt een paar SEO-keuzes voor je vast: vaste URL-prefixen als /products/ en /collections/, een automatisch gegenereerde sitemap, en geen toegang tot serverlogs. De meeste andere beperkingen kun je wél oplossen in je thema, met robots.txt.liquid, metafields en goed ingerichte redirects.

Shopify legt een paar SEO-keuzes voor je vast: vaste URL-prefixen als /products/ en /collections/, een automatisch gegenereerde sitemap, en geen toegang tot serverlogs. De meeste andere beperkingen kun je wél oplossen in je thema, met robots.txt.liquid, metafields en goed ingerichte redirects. Hieronder per beperking wat er speelt, wat het kost en wat je eraan doet.

De eerlijke versie vooraf: geen van deze beperkingen houdt een goed ingerichte Shopify-shop tegen om te ranken. Ze vragen alleen dat je weet waar de randen zitten.

1. Vaste URL-structuur

Elke Shopify-shop gebruikt dezelfde prefixen:

TypeURL-patroon
Product/products/handle
Collectie/collections/handle
Pagina/pages/handle
Blogartikel/blogs/blognaam/handle

Je kunt de handle aanpassen, niet het prefix. /schoenen/sneaker-x of /sneaker-x gaat niet.

Is dat erg?

Voor rankings nauwelijks. Google kijkt naar de content, de interne links en de relevantie van de pagina, niet naar of er "products" in de URL staat. Een korte, beschrijvende handle doet meer dan het prefix kost.

Waar het wél pijn doet: bij een migratie naar Shopify. Al je bestaande URL's veranderen, zonder uitzondering. Dat betekent een volledige redirectmapping van oud naar nieuw. Meer daarover op Shopify-migratie.

Wat je wel doet

  • Houd handles kort: /products/sneaker-x-zwart, niet /products/sneaker-x-zwart-heren-maat-36-tot-46-nieuw-2026.
  • Gebruik bij het wijzigen van een handle het vinkje om automatisch een redirect aan te maken. Shopify biedt die optie in het blok voor de zoekmachinevermelding.
  • Wil je een eigen blognaam? Maak een blog met de handle kennisbank in plaats van het standaard news. Dan krijg je /blogs/kennisbank/artikel.

2. Dubbele productpaden via collecties

Dit is de meest voorkomende Shopify-SEO-fout, en hij zit vaak in het thema.

Een product is bereikbaar op:

/products/sneaker-x
/collections/heren/products/sneaker-x
/collections/sale/products/sneaker-x
/collections/all/products/sneaker-x

Shopify zet op al die varianten een canonical naar /products/sneaker-x. Dat is goed. Maar veel thema's linken vanuit collectiepagina's naar de collectieversie. Google crawlt dan de lange paden, ziet de canonical, en moet telkens weer kiezen. Je interne links wijzen de ene kant op, je canonical de andere.

De fix

Zoek in je thema naar de Liquid-filter within:

liquid
<a href="{{ product.url | within: collection }}">

Vervang door:

liquid
<a href="{{ product.url }}">

Doe dit in alle snippets die productkaarten renderen. Daarna wijzen interne links, canonical en sitemap allemaal naar dezelfde URL. Dit soort tegenstrijdige signalen bespreken we uitgebreider in canonical tags: de fouten die we het vaakst zien.

Het nadeel: breadcrumbs op basis van de collectie waar de bezoeker vandaan kwam werken dan niet meer vanzelf. Dat los je op met een vaste hoofdcollectie per product, bijvoorbeeld via een metafield.

3. Robots.txt: wel aanpasbaar, maar via Liquid

Shopify levert een standaard robots.txt die onder meer /cart, /checkout, /search en sorteringsparameters blokkeert. Die standaard is redelijk.

Wil je aanpassen? Maak in je thema een template robots.txt.liquid aan (Themes > Edit code > Add a new template > robots). Shopify's documentatie raadt aan om de standaardregels te behouden en alleen aan te vullen:

liquid
{% for group in robots.default_groups %}
  {{- group.user_agent }}

  {%- for rule in group.rules -%}
    {{ rule }}
  {%- endfor -%}

  {%- if group.user_agent.value == '*' -%}
    {{ 'Disallow: /collections/*?*filter.*filter.*' }}
    {{ 'Disallow: /collections/vendors*' }}
    {{ 'Disallow: /collections/types*' }}
  {%- endif -%}

  {%- if group.sitemap != blank -%}
    {{ group.sitemap }}
  {%- endif -%}
{% endfor %}

Dit voorbeeld blokkeert combinaties van meerdere filters en de automatisch gegenereerde vendor- en type-pagina's. Pas het aan op je eigen shop. Blokkeer geen filterpagina's waarop je bewust wilt ranken.

Je kunt hier ook regels voor AI-crawlers toevoegen, met een eigen User-agent-groep. Denk na voor je iets blokkeert: OAI-SearchBot en PerplexityBot bepalen of je in ChatGPT- en Perplexity-resultaten kunt verschijnen.

Twee dingen om te onthouden:

  • Robots.txt voorkomt crawlen, geen indexering. Een geblokkeerde URL kan nog in de index belanden.
  • Shopify ondersteunt aanpassen, maar een fout in dit bestand kan je hele shop onvindbaar maken. Test na elke wijziging /robots.txt in de browser.

4. Noindex: alleen via het thema

Shopify heeft geen vinkje "noindex" per pagina. Je regelt het in theme.liquid, in de :

liquid
{%- if template contains 'search'
   or current_tags
   or request.path contains '/collections/vendors'
   or request.path contains '/collections/types' -%}
  <meta name="robots" content="noindex, follow">
{%- endif -%}

Dit zet noindex op interne zoekresultaten, op collectiepagina's gefilterd op tags en op de automatische vendor- en typepagina's. Dat zijn bij de meeste shops de grootste bronnen van dunne pagina's.

Let op de combinatie met robots.txt. Blokkeer je een URL in robots.txt, dan ziet Google de noindex nooit. Kies per URL-type één van de twee.

Voor losse pagina's kun je het metafield seo.hidden gebruiken (namespace seo, key hidden, waarde 1). Daarmee haal je een product, collectie, pagina of artikel uit de sitemap. Check daarna in de broncode of er ook een noindex staat, en voeg die zo nodig toe via het thema.

5. De sitemap is automatisch

Shopify genereert /sitemap.xml zelf, met subsitemaps voor producten, collecties, pagina's en blogs. Je kunt hem niet direct bewerken.

Wat dat betekent:

  • Alles wat gepubliceerd is in het online-store-kanaal komt erin.
  • Wil je iets eruit, gebruik dan seo.hidden of zet het product uit het online-store-kanaal.
  • Een eigen sitemap met extra URL's (bijvoorbeeld van een externe blog) kan niet in de Shopify-sitemap. Dien die apart in bij Search Console.

Dien /sitemap.xml in bij zowel Google Search Console als Bing Webmaster Tools. Bing is relevant omdat ChatGPT-zoeken onder meer op de Bing-index leunt.

6. Redirects werken alleen bij een 404

Shopify voert een URL-redirect alleen uit als er op het oude pad geen bestaande pagina meer is. Staat er nog een actief product op /products/oude-naam, dan negeert Shopify je redirect.

Praktisch gevolg:

  • Wil je twee producten samenvoegen, verwijder of hernoem dan eerst het oude product, en maak daarna de redirect.
  • Redirects importeer je in bulk via een CSV in de URL-redirects van de admin. Voor een migratie is dat de weg.
  • Redirects op basis van patronen of reguliere expressies kent Shopify niet. Elke oude URL moet als losse regel in de mapping. Bij duizenden URL's genereer je die mapping met een script.

7. Structured data hangt af van je thema

Shopify zelf voegt weinig toe. Wat er in je pagina staat, komt uit je thema en je apps. Moderne Shopify-thema's genereren vaak Product-markup via de Liquid-filter structured_data:

liquid
<script type="application/ld+json">
  {{ product | structured_data }}
</script>

Dat is een goed begin. Wat in de praktijk vaak ontbreekt of dubbel staat:

  • BreadcrumbList: zit niet in elk thema.
  • Organization: vaak alleen op de homepage, of helemaal niet.
  • AggregateRating en Review: hangt af van je review-app. Soms voegen thema en app allebei Product-markup toe, met conflicterende data.
  • MerchantReturnPolicy en ShippingDetails: zelden aanwezig in de JSON-LD, terwijl Google deze informatie gebruikt in productresultaten.

Controleer met de Rich Results Test van Google welke markup er echt staat. Hoe een complete set eruitziet, staat op structured data voor webshops.

8. Meertaligheid via Shopify Markets

Voor meerdere talen en landen gebruik je Shopify Markets, met subfolders (/en/, /nl-be/) of aparte domeinen. Shopify voegt dan automatisch hreflang-tags toe.

Waar het misgaat:

  • Vertalingen ontbreken, waardoor de Engelse versie Nederlandse tekst toont. Dat zijn dan duplicaten met een hreflang-label.
  • Handles worden niet vertaald, waardoor de Duitse URL nog steeds /de/products/zwarte-sneaker heet.
  • Een app voor geo-redirects stuurt Googlebot automatisch naar één taalversie. Googlebot crawlt voornamelijk vanuit de VS en moet elke versie kunnen bereiken.

Meer over de aanpak voor NL, BE en andere markten op internationale SEO.

9. Geen serverlogs, beperkte techniek

Shopify host alles. Dat is een voordeel voor beheer en beveiliging, maar je mist:

  • Serverlogs. Je kunt niet zien welke URL's Googlebot precies opvraagt. Je bent aangewezen op de Crawlstatistieken in Search Console.
  • Controle over headers en caching. Geen eigen cachingregels, geen server-side redirects op patroon.
  • Controle over de checkout-URL's. Die zijn niet bedoeld om te ranken, dus voor SEO is dat geen probleem.

10. Snelheid: het platform is snel, je apps niet altijd

Shopify serveert pagina's via een eigen CDN. De basis is snel. De vertraging komt meestal van:

  • apps die eigen JavaScript en CSS op elke pagina laden, ook waar ze niet gebruikt worden;
  • restanten van verwijderde apps die nog in het thema staan;
  • zware sliders en video's boven de vouw;
  • te veel lettertypes.

Core Web Vitals meet Google op echte gebruikers, op het 75e percentiel. Een goede Lighthouse-score in je eigen browser zegt daar weinig over. Kijk in het Core Web Vitals-rapport van Search Console of in CrUX-data.

Wanneer kies je voor headless?

Met een headless Shopify-frontend (bijvoorbeeld Hydrogen of een eigen framework) ben je van de URL-prefixen en thema-beperkingen af. Je krijgt volledige controle over URL's, markup en rendering.

Je krijgt er ook een nieuwe verantwoordelijkheid bij: server-side rendering, sitemaps, redirects en canonicals bouw je zelf. Doe je dat niet goed, dan ruil je kleine Shopify-beperkingen in voor grote JavaScript-SEO-problemen. Zie JavaScript-SEO voor headless webshops.

Ons advies: kies niet voor headless vanwege SEO alleen. Alles in dit artikel is binnen een gewoon Shopify-thema op te lossen.

Wat wij doen

Wij lichten Shopify-shops door op precies deze punten en voeren de fixes zelf door in het thema, de robots.txt en de redirects. Het vaste team dat je shop bouwt, weet ook waar de SEO-problemen in de code zitten. Hoe dat werkt staat op Shopify SEO.

Veelgestelde vragen

Kan ik /products/ uit mijn Shopify-URL's halen?

Nee, de prefixen /products/, /collections/, /pages/ en /blogs/ liggen vast. Alleen met een headless frontend heb je volledige controle over de URL's. Voor rankings maakt het prefix weinig uit; een korte, beschrijvende handle doet meer.

Kan ik robots.txt aanpassen in Shopify?

Ja, via een robots.txt.liquid-template in je thema. Shopify raadt aan de standaardregels te behouden en alleen aan te vullen. Test na elke wijziging of /robots.txt er goed uitziet.

Hoe zet ik een Shopify-pagina op noindex?

Via een voorwaarde in theme.liquid die een toevoegt voor de juiste templates of paden. Met het metafield seo.hidden haal je een pagina uit de sitemap. Controleer daarna de broncode.

Waarom werkt mijn Shopify-redirect niet?

Shopify voert een redirect alleen uit als het oude pad een 404 geeft. Bestaat het product of de pagina nog, dan wint die. Verwijder of hernoem eerst de oude pagina en test daarna opnieuw.

Is Shopify slechter voor SEO dan Magento?

Niet per definitie. Shopify heeft minder vrijheid in URL's en techniek, maar ook minder om fout te doen. Magento geeft meer controle, en daarmee meer ruimte voor zowel goede als slechte keuzes. De inrichting bepaalt het resultaat, niet het platform.

Ruthger Idema

Geschreven door Ruthger Idema

15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.

Meer over ons team →
Deel dit artikel:

Wil je jouw e-commerce naar het volgende niveau?

Plan een vrijblijvend gesprek met onze experts over Magento, Shopify of Laravel maatwerk.

Plan een Tech Check