SEO GEO E-commerce Πρακτικός οδηγός
Δομημένα δεδομένα για e-shop: τι να βάλετε και με τι σειρά
Organization, Product/Offer, BreadcrumbList, FAQPage, Review: τι δίνει σήμερα η Google σε ένα e-shop, ποια πεδία είναι υποχρεωτικά, με έτοιμο JSON-LD.
Σε αυτή τη σελίδα
- Η σύντομη απάντηση
- Τι δίνει σήμερα η Google σε ένα e-shop
- 1. Organization: ένα, ίδιο παντού
- 2. Product και Offer: η σελίδα που πουλάει
- 3. BreadcrumbList: φθηνό, και συνήθως ήδη εκεί
- 4. FAQPage: τι μένει μετά την κατάργηση
- 5. Review και AggregateRating: μόνο με αληθινές κριτικές
- Πέντε αστοχίες που βρίσκουμε συχνά
- Και τα PrestaShop modules;
- Τι να κάνετε αύριο
Τα δομημένα δεδομένα είναι από τα λίγα κομμάτια SEO που μοιάζουν με «ρύθμιση»: μπαίνουν μία φορά στο theme και δουλεύουν για κάθε προϊόν. Γι’ αυτό γράφονται και οι περισσότερες υπερβολές γι’ αυτά. Κάποιος υπόσχεται αστεράκια που η Google δεν δείχνει, κάποιος άλλος FAQ snippets που έχουν καταργηθεί. Και ένα plugin προσθέτει δεύτερο Product πάνω σε αυτό που ήδη εκπέμπει η πλατφόρμα.
Σε αυτό το άρθρο βάζουμε τα schema ενός e-shop σε σειρά προτεραιότητας, με βάση την τεκμηρίωση της Google όπως ήταν τον Σεπτέμβριο του 2026. Για κάθε ένα σας δίνουμε JSON-LD έτοιμο για copy-paste. Δείχνουμε και τι εκπέμπει στην πράξη ένα πραγματικό κατάστημα PrestaShop, το antoniadis.com.cy, με τα λάθη του. Τα λάθη ενός πραγματικού καταστήματος διδάσκουν περισσότερα από ένα τέλειο παράδειγμα.
Η σύντομη απάντηση
- Η σειρά: Organization → Product/Offer → BreadcrumbList → FAQPage → Review. Τα δύο πρώτα κάνουν το μεγαλύτερο μέρος της δουλειάς.
- Product με Offer είναι το πιο σημαντικό. Υποχρεωτικά για merchant listings:
name,imageκαιoffersμεpriceκαιpriceCurrency. Όλα τα άλλα είναι «προτεινόμενα», αλλά χωρίς αυτά χάνετε πληροφορία που η Google δείχνει στα αποτελέσματα. - Τα FAQ rich results δεν υπάρχουν πια. Από τις 7 Μαΐου 2026 η Google δεν τα δείχνει σε κανένα site. Το FAQPage κοστίζει ελάχιστα και δεν βλάπτει, αλλά δεν φέρνει καμία αλλαγή στην εμφάνισή σας στη Google.
- Κανένα schema δεν είναι «για τα AI». Η Google γράφει ότι δεν χρειάζεται ειδικό markup για τα AI Overviews. Ό,τι βοηθά είναι σωστά δεδομένα που συμφωνούν με τη σελίδα.
- Το συνηθέστερο λάθος δεν είναι το markup που λείπει. Είναι το markup που δηλώνεται δύο φορές ή που λέει κάτι διαφορετικό από τη σελίδα.
Τι δίνει σήμερα η Google σε ένα e-shop
Πριν γράψετε γραμμή κώδικα, αξίζει να ξέρετε τι παίρνετε πίσω. Από την τεκμηρίωση της Google για merchant listings, product snippets, review snippets, Organization και το changelog:
| Schema | Τι δίνει στη Google | Υποχρεωτικά πεδία | Κατάσταση (09/2026) |
|---|---|---|---|
| Organization / OnlineStore | Λογότυπο, στοιχεία στο merchant knowledge panel, πολιτική επιστροφών και αποστολής για όλο το κατάστημα | Κανένα, αλλά όσο περισσότερα τόσο καλύτερα | Ενεργό |
| Product + Offer (merchant listing) | Τιμή, διαθεσιμότητα, αποστολή και επιστροφές στα αποτελέσματα και στην καρτέλα Shopping | name, image, offers.price, offers.priceCurrency | Ενεργό, τελευταία ενημέρωση 07/2026 |
| Product (product snippet) | Αστεράκια, τιμή, διαθεσιμότητα κάτω από τον τίτλο | name και ένα από offers, review, aggregateRating | Ενεργό |
| BreadcrumbList | Διαδρομή κατηγοριών αντί για URL | itemListElement με position, name, item | Ενεργό |
| AggregateRating / Review | Αστεράκια στο προϊόν | ratingValue και ratingCount ή reviewCount | Ενεργό, όχι για κριτικές της ίδιας της επιχείρησης |
| FAQPage | Τίποτα πια στη Google | — | Rich result καταργήθηκε 7/5/2026 |
Δύο παρατηρήσεις. Πρώτον, το merchant listing αφορά μόνο σελίδες όπου ο πελάτης αγοράζει απευθείας. Αν το site σας είναι κατάλογος χωρίς καλάθι, είστε στα product snippets. Δεύτερον, η Google σημειώνει ότι η τιμή πρέπει να είναι μεγαλύτερη του μηδενός. Ένα προϊόν «κατόπιν προσφοράς» με price: 0 δεν περνάει.
1. Organization: ένα, ίδιο παντού
Είναι το schema που λέει ποιος πουλάει. Η Google προτείνει να μπαίνει στην αρχική ή στη σελίδα «Σχετικά». Αν το theme το βάζει σε κάθε σελίδα, δεν πειράζει, αρκεί να είναι παντού το ίδιο. Από τον Ιούνιο του 2024 η Google δέχεται εδώ την πολιτική επιστροφών του καταστήματος, και από τον Νοέμβριο του 2025 και την πολιτική αποστολής. Έτσι δεν χρειάζεται να τις επαναλαμβάνετε σε κάθε Offer. Για e-shop χρησιμοποιήστε τον υποτύπο OnlineStore:
{
"@context": "https://schema.org",
"@type": "OnlineStore",
"@id": "https://www.example.com.cy/#organization",
"name": "Το Κατάστημα",
"url": "https://www.example.com.cy/",
"logo": "https://www.example.com.cy/img/logo.png",
"sameAs": ["https://www.facebook.com/tokatastima"],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "Customer Service",
"email": "[email protected]",
"telephone": "+357-22-000000"
},
"vatID": "CY00000000X",
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "CY",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 14,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/ReturnShippingFees",
"refundType": "https://schema.org/FullRefund"
}
}
Το @id είναι αυτό που επιτρέπει σε άλλα schema να δείχνουν σε αυτή την οντότητα χωρίς να την ξαναγράφουν. Έτσι το κάνουμε και στο pythia.works: το Organization γράφεται σε ένα σημείο, στο κοινό layout, με @id https://pythia.works/#organization, και το WebSite της αρχικής δείχνει σε αυτό ως publisher αντί να το ξαναγράψει. Βάλτε τις δικές σας ημέρες και χρεώσεις επιστροφής. Αν η πολιτική στη σελίδα λέει 14 ημέρες και το schema 30, το λάθος είναι δικό σας, όχι της Google.
2. Product και Offer: η σελίδα που πουλάει
Αυτό είναι το schema που αξίζει τον περισσότερο χρόνο. Το PrestaShop, το WooCommerce και το Shopify εκπέμπουν ήδη κάποια εκδοχή του. Άρα η δουλειά σπάνια είναι να το προσθέσετε. Η δουλειά είναι να ελέγξετε τι λείπει. Μια πλήρης σελίδα προϊόντος μοιάζει έτσι:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Arduino UNO R4 Minima",
"description": "Πλακέτα Arduino UNO R4 Minima με RA4M1 Cortex-M4 στα 48MHz, 256kB Flash, CAN bus και USB-C.",
"image": [
"https://www.example.com.cy/img/arduino-uno-r4-minima-1.jpg",
"https://www.example.com.cy/img/arduino-uno-r4-minima-2.jpg"
],
"sku": "ARD017",
"mpn": "ABX00080",
"gtin13": "0000000000000",
"brand": { "@type": "Brand", "name": "Arduino" },
"category": "Πλακέτες Arduino",
"offers": {
"@type": "Offer",
"url": "https://www.example.com.cy/arduino-uno-r4-minima",
"price": "29.95",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": { "@id": "https://www.example.com.cy/#organization" }
}
}
Το gtin13 είναι ο barcode EAN του προϊόντος. Βάλτε το μόνο αν τον ξέρετε, όχι με μηδενικά όπως στο παράδειγμα. Το price γράφεται με τελεία και χωρίς σύμβολο νομίσματος, ακόμα κι αν η σελίδα δείχνει «29,95 €».
Τι εκπέμπει στην πράξη ένα κατάστημα; Στη σελίδα αυτού ακριβώς του προϊόντος στο antoniadis.com.cy, το native Product του PrestaShop έχει name, description, image, sku, mpn, brand, category και Offer με τιμή, νόμισμα, availability και priceValidUntil. Είναι καλή βάση. Λείπουν το itemCondition, το GTIN και οποιαδήποτε πολιτική επιστροφών ή αποστολής, είτε στο Offer είτε στο Organization. Και οι πολιτικές είναι ακριβώς ό,τι μπορεί να δείξει η Google δίπλα στην τιμή.
3. BreadcrumbList: φθηνό, και συνήθως ήδη εκεί
Η διαδρομή «Αρχική › Ρομποτική › Arduino › Πλακέτες» βοηθά τη Google να καταλάβει τη δομή των κατηγοριών σας και να τη δείξει στη θέση του URL. Τα περισσότερα themes το εκπέμπουν ήδη. Αυτό που αξίζει να ελέγξετε είναι αν το εκπέμπουν μία φορά:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Αρχική", "item": "https://www.example.com.cy/" },
{ "@type": "ListItem", "position": 2, "name": "Ρομποτική & STEM", "item": "https://www.example.com.cy/robotiki/" },
{ "@type": "ListItem", "position": 3, "name": "Arduino UNO R4 Minima" }
]
}
Το τελευταίο στοιχείο, η σελίδα που βλέπετε, δεν χρειάζεται item. Στο pythia.works το BreadcrumbList παράγεται από το ίδιο component που ζωγραφίζει τη διαδρομή στη σελίδα. Έτσι το ορατό και το δομημένο δεν μπορούν να διαφωνήσουν ποτέ, γιατί έχουν μία πηγή.
4. FAQPage: τι μένει μετά την κατάργηση
Εδώ χρειάζεται ειλικρίνεια, γιατί κυκλοφορούν ακόμα οδηγοί που υπόσχονται FAQ snippets. Τον Αύγουστο του 2023 η Google περιόρισε τα FAQ rich results σε γνωστά κυβερνητικά και υγειονομικά sites. Στις 8 Μαΐου 2026 ανακοίνωσε ότι σταματούν εντελώς από τις 7 Μαΐου 2026, και τον Ιούνιο αφαίρεσε την τεκμηρίωσή τους. Σήμερα το FAQPage δεν δίνει κανένα rich result, σε κανένα site.
Αξίζει τότε; Κοστίζει ελάχιστα, είναι έγκυρο schema.org και δεν σας τιμωρεί κανείς επειδή το έχετε. Η μόνη αξία που του μένει είναι ότι κάνει τις ερωτήσεις και τις απαντήσεις σας αναγνώσιμες από μηχανή, για όποιο εργαλείο τις διαβάζει. Αυτό είναι κομμάτι του GEO. Προσέξτε όμως: κανένας μεγάλος πάροχος AI δεν έχει δηλώσει ότι χρησιμοποιεί το FAQPage, και η Google γράφει ρητά στον οδηγό για τα AI features ότι δεν χρειάζεται ειδικό schema. Αυτό που μετράει είναι το ορατό κείμενο των ερωτήσεων στη σελίδα, όπως εξηγούμε στον οδηγό για το πώς να ετοιμάσετε το site σας για την AI αναζήτηση. Το schema είναι απλώς η ετικέτα πάνω του.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Είναι συμβατό με shields για UNO R3;",
"acceptedAnswer": {
"@type": "Answer",
"text": "Ναι, έχει το ίδιο σχήμα και την ίδια διάταξη pins με το UNO R3."
}
}
]
}
5. Review και AggregateRating: μόνο με αληθινές κριτικές
Τα αστεράκια είναι το πιο ορατό rich result που έχει μείνει σε ένα προϊόν, και γι’ αυτό το πιο παρεξηγημένο. Οι κανόνες της Google: οι βαθμολογίες πρέπει να προέρχονται από χρήστες, να φαίνονται στη σελίδα, και απαγορεύονται οι ψεύτικες ή οι κρυφά επιβραβευμένες κριτικές. Επιπλέον, κριτικές για την ίδια την επιχείρηση, που τις διαχειρίζεστε στο δικό σας site, δεν δίνουν αστεράκια στο Organization. Η Google τις θεωρεί self-serving. Στο Product όμως μπαίνουν κανονικά:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "23"
}
Το μπλοκ αυτό μπαίνει μέσα στο Product. Αν δεν έχετε σύστημα κριτικών, μην το προσθέσετε. Είναι το τελευταίο στη σειρά ακριβώς επειδή εξαρτάται από κάτι που δεν γράφεται στον κώδικα.
Πέντε αστοχίες που βρίσκουμε συχνά
Τις 1, 2 και 4 τις βρήκαμε στο antoniadis.com.cy, και η 3 είναι ο κίνδυνος που προσέχουμε όταν δουλεύουμε πάνω του. Δεν είναι λάθη κάποιου developer. Είναι αυτό που βγάζουν το theme και η πλατφόρμα αν δεν τα ελέγξετε.
- Το ίδιο πράγμα δηλωμένο δύο φορές. Το theme εκπέμπει BreadcrumbList σε JSON-LD και ταυτόχρονα σε microdata πάνω στο ορατό μενού. Η Google δέχεται και τα δύο format, άρα δεν είναι παράβαση. Είναι όμως δύο πηγές για το ίδιο δεδομένο, και την ημέρα που θα αλλάξει η μία θα διαφωνήσουν. Κρατήστε μόνο το JSON-LD.
- Κενό
"description": "". Το PrestaShop παίρνει την περιγραφή του Product από τη σύντομη περιγραφή του προϊόντος. Όπου αυτή λείπει, εκπέμπει κενό string αντί να παραλείψει το πεδίο. Η λύση δεν είναι στον κώδικα: γράψτε σύντομες περιγραφές. Είναι και αυτό που διαβάζει πρώτο ο πελάτης. - Δεύτερο Product πάνω στο native. Ένα SEO module που «προσθέτει rich snippets» σε PrestaShop που ήδη εκπέμπει Product δημιουργεί δύο Product στην ίδια σελίδα, συχνά με διαφορετική τιμή ή διαθεσιμότητα. Πριν εγκαταστήσετε τέτοιο module, ανοίξτε τον κώδικα μιας σελίδας προϊόντος και ψάξτε
"@type": "Product". Αν υπάρχει ήδη, διορθώστε το υπάρχον αντί να προσθέσετε δεύτερο. - HTML entities μέσα στο JSON. Στην ίδια σελίδα, το breadcrumb γράφει
"Ρομποτική & STEM". Το JSON-LD δεν είναι HTML, άρα ο μηχανισμός που το διαβάζει βλέπει κυριολεκτικά&. Είναι μικρό λάθος, αλλά δείχνει ότι το template περνάει τα κείμενα από escape για HTML αντί για JSON. - Markup που λέει άλλα από τη σελίδα. Τιμή έκπτωσης στη σελίδα και παλιά τιμή στο schema, «Διαθέσιμο» στο schema και «Εξαντλήθηκε» στο κουμπί, αστεράκια χωρίς ορατές κριτικές. Η Google ζητάει το markup να περιγράφει ό,τι βλέπει ο επισκέπτης, και η ασυμφωνία μπορεί να σας κάνει μη επιλέξιμους για rich results. Συνήθως οφείλεται σε cache ή σε module που ξαναγράφει την τιμή μόνο στο ορατό κομμάτι.
Για τα δύο τελευταία, ο πιο απλός έλεγχος είναι το Rich Results Test της Google σε τρεις-τέσσερις σελίδες: ένα προϊόν σε έκπτωση, ένα εξαντλημένο κι ένα με παραλλαγές.
Και τα PrestaShop modules;
Κανένα από τα έτοιμα PrestaShop modules μας δεν αγγίζει τα δομημένα δεδομένα. Δεν πρόκειται λοιπόν να σας δημιουργήσουν δεύτερο Product. Για το ίδιο το schema, στις περισσότερες περιπτώσεις δεν χρειάζεστε module. Χρειάζεστε διόρθωση στο template του theme, που επιβιώνει και από τις ενημερώσεις αν γίνει σε child theme.
Τι να κάνετε αύριο
Ανοίξτε μία σελίδα προϊόντος στο Rich Results Test και μετρήστε πόσα Product βλέπετε. Αν είναι ένα, ελέγξτε ότι έχει εικόνα, τιμή, νόμισμα και διαθεσιμότητα, και ότι η τιμή συμφωνεί με τη σελίδα. Μετά προσθέστε στο Organization την πολιτική επιστροφών σας. Είναι το μόνο κομμάτι που τα περισσότερα καταστήματα δεν έχουν καθόλου.
Αν προτιμάτε να το δει κάποιος άλλος, το δωρεάν mini-audit ελέγχει πέντε σελίδες προϊόντων, και το πλήρες audit των €390 περιλαμβάνει έλεγχο των δομημένων δεδομένων. Η διόρθωση στο theme κοστίζει από €290. Αν στήνετε κατάστημα από την αρχή, ρωτήστε τον developer πριν υπογράψετε ποια από τα παραπάνω περιλαμβάνονται. Είναι από τα πράγματα που κάνουν τη διαφορά ανάμεσα στις τιμές του άρθρου μας για το πόσο κοστίζει μια ιστοσελίδα στην Κύπρο. Και αφού αποφασίσετε ποιοι AI crawlers θα διαβάζουν αυτά τα δεδομένα, ο οδηγός για το llms.txt και τους AI crawlers είναι το επόμενο βήμα.