Medlem af Atraco Community?
Shopify Guide: Sådan implementerer du Schema Markup for bedre synlighed i søgeresultaterne

Shopify
Mar 13, 2025
Schema markup er en af de mest oversete, men potentielt mest værdifulde SEO-teknikker for Shopify-butiksejere. Ved at implementere strukturerede data korrekt kan du forbedre hvordan Google og andre søgemaskiner forstår dit indhold, hvilket kan resultere i mere informative og iøjnefaldende søgeresultater - såkaldte "rich snippets" eller "rige søgeresultater". Dette kan føre til højere klikrater, bedre kvalificeret trafik og i sidste ende øgede konverteringer for din Shopify-butik.
I denne omfattende guide vil vi dykke ned i, hvad schema markup er, hvorfor det er vigtigt for din Shopify-butik, og præcis hvordan du kan implementere det for at få en konkurrencefordel i søgeresultaterne.
Indhold
Hvad er Schema Markup?
Fordelene ved Schema Markup for Shopify-butikker
De vigtigste Schema Markup-typer for e-commerce
Sådan implementerer du Schema Markup i Shopify
Schema Markup for produktsider
Schema Markup for samlingssider
Schema Markup for blogindlæg
FAQ Schema for forbedret synlighed
Test og validering af Schema Markup
Almindelige fejl og hvordan du undgår dem
Avancerede Schema Markup-strategier
Måling af Schema Markup-effektivitet
Tjekliste for Schema Markup-implementering
Hvad er Schema Markup?
Schema markup, også kendt som strukturerede data, er en standardiseret kode der hjælper søgemaskiner med at forstå din hjemmesides indhold mere præcist. Det fungerer som et "semantisk vokabularium" - et fælles sprog mellem hjemmesider og søgemaskiner.
Den tekniske definition
Schema markup bruger et specifikt vokabularium fra Schema.org, et samarbejde mellem Google, Bing, Yahoo og Yandex. Dette vokabularium giver en struktureret måde at beskrive entiteter (produkter, personer, organisationer, artikler, etc.) og deres relationer.
Koden kan implementeres i tre forskellige formater:
JSON-LD (anbefalet af Google og nemmest at implementere)
Microdata
RDFa
For Shopify-butikker er JSON-LD den mest anbefalede og brugervenlige metode, da den ikke kræver, at du ændrer din eksisterende HTML-kode. I stedet tilføjer du et JavaScript-script, der indeholder alle dine strukturerede data.
Et simpelt eksempel
Her er et basalt eksempel på, hvordan JSON-LD schema markup for et produkt kan se ud:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Lancering af {{ product.title | escape }}",
"startDate": "{{ product.metafields.custom.launch_date }}",
"endDate": "{{ product.metafields.custom.launch_date | date: '%s' | plus: 86400 | date: '%Y-%m-%d' }}",
"description": "Vær blandt de første til at få {{ product.title | escape }}",
"location": {
"@type": "VirtualLocation",
"url": "{{ shop.url }}{{ product.url }}"
},
"offers": {
"@type": "Offer",
"price": "{{ product.price | money_without_currency }}",
"priceCurrency": "{{ shop.currency }}",
"availability": "https://schema.org/PreOrder",
"validFrom": "{{ product.metafields.custom.launch_date }}"
}
}
</script>
{% endif %}
VideoObject Schema for produktdemoer
Hvis du har produktvideoer på dine sider, kan du implementere VideoObject schema:
{% if product.metafields.custom.video_url %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "{{ product.title | escape }} - Produktdemonstration",
"description": "Se hvordan {{ product.title | escape }} fungerer",
"thumbnailUrl": "{{ product.featured_image | img_url: 'grande' }}",
"uploadDate": "{{ 'now' | date: '%Y-%m-%d' }}",
"contentUrl": "{{ product.metafields.custom.video_url }}",
"embedUrl": "{{ product.metafields.custom.video_url }}"
}
</script>
{% endif %}
Måling af Schema Markup-effektivitet
For at vurdere effektiviteten af dit schema markup arbejde, bør du overvåge disse nøgletal:
Sporing af rige resultater i Google Search Console
Gå til Google Search Console
Navigér til "Forbedringer" > "Rich Results"
Overvåg antallet af valide sider og eventuelle fejl
Se på "Performance"-rapporten filtreret efter "Search Appearance" for at vurdere præstationen af dine rige resultater
KPI'er til vurdering af schema markup-effektivitet
Synlighed i rige resultater: Hvor mange af dine sider der vises med rige features
CTR (Click-Through Rate): Sammenlign CTR før og efter implementering af schema
Position i søgeresultater: Overvåg eventuelle ændringer i rangering
Organisk trafik: Mål væksten i organisk trafik til sider med optimeret schema
Konverteringsrate: Vurdér, om konverteringsraten stiger som følge af mere kvalificeret trafik
Opstilling af A/B test
For virkeligt at måle effekten kan du overveje at teste schema markup på et udvalg af sider:
Identificér lignende produktsider eller kategorier
Implementér schema markup på halvdelen af dem
Sammenlign præstationen over 4-8 uger
Dokumentér forskelle i CTR, organisk trafik og konverteringer
Tjekliste for Schema Markup-implementering
Brug denne tjekliste for at sikre, at din schema markup implementering er komplet og effektiv:
Grundlæggende schema implementering
[ ] Organization schema er korrekt implementeret
[ ] WebSite schema er på plads
[ ] BreadcrumbList schema er implementeret på alle relevante sider
Produktsider
[ ] Product schema er implementeret på alle produktsider
[ ] Priser, valuta og tilgængelighed er korrekt specificeret
[ ] Produktvarianter er korrekt repræsenteret
[ ] Anmeldelser og ratings er inkluderet, hvis tilgængelige
[ ] Alle billeder er inkluderet med korrekte URLs
[ ] Produktegenskaber er specificeret via additionalProperty
Samlingssider
[ ] ItemList schema er implementeret på alle samlingssider
[ ] De vigtigste produkter i samlingen er repræsenteret
[ ] Breadcrumbs viser korrekt navigationsvej
Blogindlæg
[ ] BlogPosting schema er implementeret på alle blogindlæg
[ ] Forfattere, datoer og fremhævede billeder er korrekte
[ ] Publisher information er inkluderet
FAQ implementering
[ ] FAQ schema er tilføjet til produktsider med ofte stillede spørgsmål
[ ] Spørgsmål og svar er formateret korrekt
[ ] FAQ-indhold er konsistent med det synlige indhold på siden
Validering og test
[ ] Alle schema implementations er valideret med Google's Rich Results Test
[ ] Schema markup er testet på både desktop og mobil
[ ] Ingen fejl eller advarsler i Google Search Console
[ ] Sporing er sat op for at måle effektiviteten
Schema Markup for produktsider
Lad os dykke dybere ned i product schema, som er den mest kritiske type for Shopify-butikker.
Grundlæggende Product Schema
Det basale product schema skal inkludere:
Produktnavn
Beskrivelse
Billeder
Pris og valuta
URL
Tilgængelighed
Udvidet Product Schema
For mere detaljerede og effektive rige søgeresultater, bør du også inkludere:
Produktvarianter
For produkter med varianter (f.eks. forskellige farver eller størrelser), kan du bruge hasVariant egenskaben:
"hasVariant": [
{% for variant in product.variants %}
{
"@type": "ProductModel",
"name": "{{ variant.title }}",
"sku": "{{ variant.sku }}",
"price": "{{ variant.price | money_without_currency }}",
"priceCurrency": "{{ shop.currency }}",
"availability": "{% if variant.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
Anmeldelser og Ratings
Anmeldelser er ekstremt værdifulde for rige søgeresultater. Hvis du bruger Shopify's Product Reviews app eller en tredjeparts anmeldelsesapp, kan du implementere følgende:
"review": [
{% for review in product.metafields.reviews.data %}
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "{{ review.author | escape }}"
},
"datePublished": "{{ review.created_at | date: '%Y-%m-%d' }}",
"reviewBody": "{{ review.body | strip_html | escape }}",
"reviewRating": {
"@type": "Rating",
"ratingValue": "{{ review.rating }}",
"bestRating": "5"
}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{{ product.metafields.reviews.rating_value }}",
"reviewCount": "{{ product.metafields.reviews.rating_count }}"
}
Tilbudsinformation
For at fremhæve tilbud og rabatter:
"offers": {
"@type": "Offer",
"url": "{{ shop.url }}{{ product.url }}",
"priceCurrency": "{{ shop.currency }}",
"price": "{{ current_variant.price | money_without_currency }}",
"priceValidUntil": "{{ 'now' | date: '%Y-%m-%d' | date: '%s' | plus: 2592000 | date: '%Y-%m-%d' }}",
{% if current_variant.compare_at_price > current_variant.price %}
"priceSpecification": {
"@type": "PriceSpecification",
"price": "{{ current_variant.compare_at_price | money_without_currency }}",
"priceCurrency": "{{ shop.currency }}"
},
{% endif %}
"availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}",
"seller": {
"@type": "Organization",
"name": "{{ shop.name }}"
}
}
Dette inkluderer sammenligning af den aktuelle pris med "compare at" prisen for at vise rabatter, samt en gyldighedsperiode for prisen (her sat til 30 dage fra nu).
Schema Markup for samlingssider
Samlingssider (kategorisider) i Shopify kan også drage fordel af schema markup, selvom mulighederne er lidt mere begrænsede end for produktsider.
ItemList Schema for samlingssider
ItemList schema er ideelt for samlingssider, da det giver søgemaskiner en forståelse af, at siden indeholder en liste af relaterede produkter:
{% if template contains 'collection' %}
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "ItemList",
"name": "{{ collection.title | escape }}",
"description": "{{ collection.description | strip_html | escape }}",
"itemListElement": [
{% for product in collection.products limit: 10 %}
{
"@type": "ListItem",
"position": {{ forloop.index }},
"item": {
"@type": "Product",
"name": "{{ product.title | escape }}",
"url": "{{ shop.url }}{{ product.url }}",
"image": "{{ product.featured_image | img_url: 'grande' }}",
"offers": {
"@type": "Offer",
"price": "{{ product.price | money_without_currency }}",
"priceCurrency": "{{ shop.currency }}",
"availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
}
}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
}
</script>
{% endif %}
Dette giver en struktureret liste over produkter i samlingen, hvilket kan hjælpe søgemaskiner med at bedre forstå sammenhængen mellem din samling og de indeholdte produkter.
BreadcrumbList Schema
For samlingssider er breadcrumbs særligt værdifulde for at vise navigationshierarkiet:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Hjem",
"item": "{{ shop.url }}"
},
{% if collection.url %}
{
"@type": "ListItem",
"position": 2,
"name": "{{ collection.title | escape }}",
"item": "{{ shop.url }}{{ collection.url }}"
}
{% endif %}
]
}
</script>
Schema Markup for blogindlæg
Shopify's blogging-funktion kan optimeres betydeligt med Article schema, som hjælper med at få dit indhold fremhævet i Google's søgeresultater og potentielt få det vist i "Top Stories" karrusellen.
Article Schema implementering
Her er et eksempel på, hvordan du kan implementere Article schema i din article-template.liquid fil:
{% if template contains 'article' %}
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "BlogPosting",
"headline": "{{ article.title | escape }}",
"description": "{{ article.excerpt_or_content | strip_html | truncatewords: 30 | escape }}",
"image": "{% if article.image %}{{ article.image | img_url: 'grande' }}{% else %}{{ shop.url }}{{ 'no-image.jpg' | asset_url }}{% endif %}",
"author": {
"@type": "Person",
"name": "{% if article.user.first_name %}{{ article.user.first_name }} {{ article.user.last_name }}{% else %}{{ shop.name }}{% endif %}"
},
"publisher": {
"@type": "Organization",
"name": "{{ shop.name }}",
"logo": {
"@type": "ImageObject",
"url": "{{ 'logo.png' | asset_url }}"
}
},
"datePublished": "{{ article.published_at | date: '%Y-%m-%d' }}",
"dateModified": "{{ article.updated_at | date: '%Y-%m-%d' }}",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "{{ shop.url }}{{ article.url }}"
}
}
</script>
{% endif %}
Dette schema indeholder:
Artiklens titel og beskrivelse
Fremhævet billede
Forfatterinformation
Udgivers (din butiks) information
Publicerings- og opdateringsdatoer
BlogPosting vs. Article Schema typer
Du kan vælge mellem to forskellige schema typer for blog-indhold:
BlogPosting: Bedst til regulære blog-updates, nyheder, eller tutorials
Article: Mere generel og kan bruges til alle typer artikler
For de fleste Shopify-butikker er BlogPosting den mest passende type, da det specifikt indikerer blogindhold.
FAQ Schema for forbedret synlighed
FAQ schema er særligt effektivt for produktsider og kan dramatisk øge dit fodaftryk i søgeresultaterne. Det er også relativt nemt at implementere.
Sådan implementerer du FAQ Schema
For at tilføje FAQ schema til dine produktsider:
{% if product.metafields.custom.faq %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{% assign faqs = product.metafields.custom.faq.value %}
{% for faq in faqs %}
{
"@type": "Question",
"name": "{{ faq.question }}",
"acceptedAnswer": {
"@type": "Answer",
"text": "{{ faq.answer }}"
}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
}
</script>
{% endif %}
For at bruge denne kode skal du oprette metafields for dine produkter, der indeholder FAQ-information. Dette kan gøres gennem Shopify's metafields-funktionalitet eller ved hjælp af apps som "Metafields Guru" eller "Metafields Editor".
Dynamisk FAQ Schema baseret på produktbeskrivelser
En alternativ tilgang, især hvis du allerede har FAQ-sektioner i dine produktbeskrivelser, er at bruge HTML-struktur til at generere schema:
{% if product.description contains '<h4>FAQ</h4>' %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{% assign description_parts = product.description | split: '<h4>FAQ</h4>' %}
{% assign faq_section = description_parts[1] | split: '<h4>' %}
{% for faq_part in faq_section %}
{% if forloop.first == false %}
{% assign faq_content = faq_part | split: '</h4>' %}
{% assign question = faq_content[0] | strip_html %}
{% assign answer = faq_content[1] | strip_html %}
{
"@type": "Question",
"name": "{{ question | escape }}",
"acceptedAnswer": {
"@type": "Answer",
"text": "{{ answer | escape }}"
}
}{% unless forloop.last %},{% endunless %}
{% endif %}
{% endfor %}
]
}
</script>
{% endif %}
Denne kode antager, at dine FAQ'er er formateret med overskrifter (h4) i produktbeskrivelsen.
Test og validering af Schema Markup
Efter implementering af schema markup er det afgørende at teste og validere det for at sikre korrekt opsætning.
Værktøjer til validering
Google's Rich Results Test
Indtast URL'en til en af dine sider
Bekræft, at dine strukturerede data er gyldige og korrekt implementeret
Schema.org Validator
Indsæt din JSON-LD kode direkte
Identificér eventuelle syntaksfejl eller manglende påkrævede egenskaber
Google Search Console
Se efter problemer med strukturerede data i "Forbedringer" sektionen
Monitorer præstationen af dine rige resultater i rapporterne
Almindelige valideringsproblemer
Vær opmærksom på disse almindelige problemer, der kan opstå ved validering:
Manglende påkrævede felter
Hver schema-type har obligatoriske felter, som skal være til stede
F.eks. kræver Product schema et navn og en tilbudspris
Syntaksfejl
Manglende kommaer eller citationstegn
Ukorrekt nesting af objekter
Duplikerede schemas
Flere instanser af samme schema-type på samme side
Dette kan ske, hvis både dit tema og en app indsætter schema
Ukorrekt formatering
Fejl i JSON-syntaks
Problemer med Liquid template-variabler
Almindelige fejl og hvordan du undgår dem
Her er nogle af de mest almindelige fejl, når man implementerer schema markup i Shopify, og hvordan du kan undgå dem:
1. Duplikeret Schema Markup
Problem: Mange Shopify-temaer inkluderer allerede grundlæggende schema markup. Hvis du tilføjer dit eget uden at kontrollere, hvad der allerede eksisterer, kan du ende med duplikeret schema.
Løsning:
Gennemgå dit temas kode for eksisterende schema markup
Modificér eksisterende schema i stedet for at tilføje nyt, når det er muligt
Brug apps, der er designet til at undgå duplikering
2. Manglende dynamiske værdier
Problem: Hardcoded værdier i schema markup, der ikke opdateres, når produktinformation ændres.
Løsning:
Brug Liquid variabler til at hente aktuelle data
Test med forskellige produktvarianter
Sørg for, at prisændringer og lagerstatusser reflekteres korrekt
3. Ikke-validerende markup
Problem: Schema markup, der ikke overholder schema.org's specifikationer eller Googles retningslinjer.
Løsning:
Validér altid med både schema.org validator og Google's Rich Results Test
Hold dig opdateret med ændringer i specifikationer og best practices
Test regelmæssigt efter opdateringer af dit tema eller relevante apps
4. Overset mobilversion
Problem: Schema markup testes ofte kun på desktop-versionen af hjemmesiden.
Løsning:
Test både mobil- og desktop-versioner
Husk at Google bruger mobile-first indeksering
Sørg for, at responsive temaer ikke udlader schema på mobile enheder
5. Manglende opdateringer over tid
Problem: Schema markup implementeres én gang og ignoreres derefter.
Løsning:
Planlæg regelmæssige gennemgange af din schema implementering
Opdatér når nye produkter eller kategorier tilføjes
Hold øje med nye schema-typer eller egenskaber, der kan være relevante
Avancerede Schema Markup-strategier
Når du har fået styr på de grundlæggende schema-implementeringer, kan du overveje disse avancerede strategier:
Nested Schema for komplekse relationer
Du kan indlejre schema-objekter for at repræsentere komplekse relationer, f.eks. produkter med flere egenskaber:
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Materiale",
"value": "{{ product.metafields.custom.material }}"
},
{
"@type": "PropertyValue",
"name": "Farve",
"value": "{{ product.metafields.custom.color }}"
}
]
Implementering af HowTo Schema
For produkter, der kræver instruktioner eller samling, kan HowTo schema være værdifuldt:
{% if product.metafields.custom.instructions %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Sådan samler du {{ product.title | escape }}",
"step": [
{% assign steps = product.metafields.custom.instructions.value %}
{% for step in steps %}
{
"@type": "HowToStep",
"name": "Trin {{ forloop.index }}",
"text": "{{ step }}"
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
}
</script>
{% endif %}
Event Schema for produktlanceringer eller udsalg
Hvis du har planlagte begivenheder som produktlanceringer eller tidsbegrænsede udsalg, kan Event schema være nyttigt:
{% if product.metafields.custom.launch_date %}
<script type="application/ld+json">
{
"@context": "https://schema.