If you have a PrestaShop store and want ChatGPT, Gemini, and Google to see
your products as structured data, paste the
<script type="application/ld+json"> snippet with Product
schema data into your product page template. No PHP required.
The minimum fields are: name, image,
offers (with price, priceCurrency,
availability) and brand. Test after pasting:
Google Rich Results Test at
https://search.google.com/test/rich-results.
If you have a PrestaShop store, add JSON-LD Product schema to your
product.tpl file, because AI agents and Google Rich Results read
this data regardless of the page's appearance. Check: does the snippet have
name, image, offers.price,
offers.availability, and brand?
A customer asks ChatGPT: "Where can I buy running shoes with a carbon plate for under PLN 600?" or "What magnesium supplement is good for athletes?" If your PrestaShop store doesn't have Product schema, the AI model doesn't know you have that product, its price, or its availability. Google and AI agents read structured data as JSON text — independently of the page's appearance.
Lack of Product schema is the most common error detected by Audit AI in Polish e-commerce stores. Fixing it doesn't require a programmer — it requires knowing where to paste the ready-made code and what to change in it.
Key Takeaways
- JSON-LD is the preferred format for structured data according to Google — it doesn't require changes to HTML; it's inserted as a separate
<script>block. - Minimum Product schema consists of six fields:
name,image,description,brand,offers.price,offers.availability. Without these, Google displays an error in the Rich Results Test. - PrestaShop 1.7 and 8.x allow you to add JSON-LD by editing the
product.tplfile in the administration panel — no FTP, no PHP. - Not every store needs this. If you have fewer than 5 products or sell only services, the priority is low.
- Testing takes 5 minutes — paste the product URL into the Rich Results Test and you'll see errors immediately.
Why This Is Important in 2026
Google has been showing rich snippets for several years — products with schema appear in search results with stars, prices, and availability. This isn't new. What's new is a second dimension: ChatGPT Search and Gemini use structured data to build shopping responses.
When a user asks AI about a product with a price, the model looks for data it can repeat without guessing. PrestaShop 1.7.x and 8.x do not generate full Product schema by default — the ps_shoppingcart module and the default Classic theme only create Open Graph metadata, not JSON-LD compliant with Google's requirements. Most Polish PrestaShop stores have this gap without realizing it's a gap.
Schema.org/Product has over 50 properties. Google and AI agents require just a few key ones — the rest are a bonus for specific categories (electronics, clothing, supplements).
Check now, before proceeding: go to https://search.google.com/test/rich-results and paste the URL of your main product. If you don't see a "Product" tab in the results — you have this gap, and this article is for you. Without Product schema, Google will not display the product's price or availability in search results, even if the page is indexed.
How JSON-LD Differs from Other Structured Data Formats
There are three ways to encode structured data: JSON-LD, Microdata, and RDFa. PrestaShop sometimes generates Microdata embedded in HTML — but Google officially recommends JSON-LD as the preferred format because it is easier to maintain.
| Format | Location | Editing Difficulty | Google Recommendation |
| --------- | ------------------------- | ------------------ | --------------------- |
| JSON-LD | Separate <script> block | Easy | ✅ Preferred |
| Microdata | Intertwined with HTML | Difficult | ⚠️ Accepted |
| RDFa | Attributes in HTML tags | Difficult | ⚠️ Accepted |
JSON-LD is a single, separate block. You edit it without touching the HTML structure — not hundreds of tags spread across the template.
Step-by-Step: How to Add Product Schema in PrestaShop
- Find the Product Template File
In the PrestaShop panel, go to Design → Theme & Logo → Edit active theme. Look for the
catalog/product.tplfile. If your hosting has a file manager (cPanel File Manager or Plesk), you can edit the file directly under the path:themes/{your-theme-name}/templates/catalog/product.tplBefore editing: download a copy of the file to your computer. 30 seconds that can save several hours.
BadI edit the file without a backup, because 'you can always undo it.'BetterI download a copy of product.tpl locally. If something goes wrong, uploading the original file restores the store in 2 minutes. - Prepare the JSON-LD Snippet
Basic Product schema snippet — contains all fields required by Google:
<script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Product", "name": "PRODUCT NAME", "image": [ "PRODUCT IMAGE URL" ], "description": "PRODUCT DESCRIPTION (max 5000 characters)", "brand": { "@type": "Brand", "name": "BRAND NAME" }, "offers": { "@type": "Offer", "url": "PRODUCT PAGE URL", "priceCurrency": "PLN", "price": "NUMERIC PRICE", "priceValidUntil": "2026-12-31", "itemCondition": "https://schema.org/NewCondition", "availability": "https://schema.org/InStock" } } </script>This is a static version — manually filled. For a few products, this is sufficient.
Shoe Store: for running shoes, enter the manufacturer's name in
brand(e.g.,"ASICS"), the full model name with size inname, and the current price in PLN inprice.Supplement Store: in
name, provide the full name with grammar ("Magnesium B6 forte 60 tablets"), and indescription, the ingredients and dosage. - Replace Static Values with Dynamic Ones (Optional)
For more than 10 products, manually filling each snippet is too much work. PrestaShop uses the Smarty templating engine — allowing you to insert variables from the database.
Dynamic version for PrestaShop 1.7/8.x:
<script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Product", "name": "{$product.name|escape:'html':'UTF-8'}", "image": [ "{$product.cover.bySize.large_default.url}" ], "description": "{$product.description_short|strip_tags|escape:'html':'UTF-8'}", "brand": { "@type": "Brand", "name": "{if $product.manufacturer_name}{$product.manufacturer_name|escape:'html':'UTF-8'}{else}Store{/if}" }, "offers": { "@type": "Offer", "url": "{$product.url}", "priceCurrency": "{$currency.iso_code}", "price": "{$product.price_amount}", "priceValidUntil": "2026-12-31", "itemCondition": "https://schema.org/NewCondition", "availability": "{if $product.availability == 'available'}https://schema.org/InStock{else}https://schema.org/OutOfStock{/if}" } } </script>Don't know Smarty? Paste the static version for your main products. The dynamic version is useful if you want to show the file to a programmer or handle the entire catalog at once.
- Paste the Snippet in the Correct Place
In the
product.tplfile, find the closing</head>tag or{'{block name=\'head_end\'}'}. Paste the snippet just before this tag.{_ JSON-LD Product schema — added 2026-05-27 _} <script type="application/ld+json"> {...snippet...} </script> {/block}A comment with the date helps identify the change after a year when you don't remember what you edited.
The snippet must be in the
<head>section or directly in the<body>— not below the footer. - Save the File and Check in Rich Results Test
After saving
product.tpl, open any product page in your store. Copy the URL and paste it into:https://search.google.com/test/rich-results
Click Test URL. Google will fetch the page and show the result:
- ✅ Green checkmark: snippet is correct, qualifies for rich results
- ❌ Error: list of missing or incorrect fields with a description of what to change
If you see
Missing field "offers"— check if the variable$product.price_amountreturns a value. Some PrestaShop versions use$product.priceinstead of$product.price_amount. - Check Additional Properties for Your Category
For products where customers compare technical details, add category-specific fields:
For Clothing and Footwear:
"color": "Black", "size": "42", "material": "natural leather", "audience": { "@type": "PeopleAudience", "suggestedGender": "male" }For Supplements and Cosmetics:
"additionalProperty": [ { "@type": "PropertyValue", "name": "Weight", "value": "500g" } ]For Electronics:
"model": "GX-500", "gtin13": "1234567890123"
Do not add fields whose values you are unsure of — incorrect structured data is worse than no data.
- Monitor in Search Console Monthly
The Rich Results Test checks one URL at a time. For regular monitoring, use Google Search Console — the Enhancements tab shows the status of structured data for the entire site, grouped by errors and warnings.
A store with 50 products will see a list of problems there immediately — instead of checking each page individually.
Ready-to-Copy Snippets
Minimal Snippet (Static Version)
Fill in the CAPS_LOCK values from your store:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "FULL PRODUCT NAME",
"image": "https://yourstore.com/img/p/IMAGE-NAME.jpg",
"description": "SHORT PRODUCT DESCRIPTION",
"brand": {
"@type": "Brand",
"name": "BRAND"
},
"offers": {
"@type": "Offer",
"url": "https://yourstore.com/product/product-name",
"priceCurrency": "PLN",
"price": "199.00",
"priceValidUntil": "2026-12-31",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock"
}
}
</script>Snippet with Reviews (Aggregate Ratings)
Only if you have visible reviews on the product page:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "FULL PRODUCT NAME",
"image": "IMAGE URL",
"brand": { "@type": "Brand", "name": "BRAND" },
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "23"
},
"offers": {
"@type": "Offer",
"priceCurrency": "PLN",
"price": "199.00",
"availability": "https://schema.org/InStock"
}
}
</script>ratingValue and reviewCount must match the reviews visible on the page. If you don't have reviews — do not add aggregateRating. Google penalizes for fake ratings.
Product Schema Implementation Checklist for PrestaShop
- Downloaded a copy of product.tpl before editing
- JSON-LD snippet added to the <head> or <body> section of the product page
- name field contains the full product name
- image field is a working full URL to the product image (not a relative path)
- description field is filled (min. 50 characters)
- brand.name field contains the manufacturer or brand name
- offers.price field is a number without a currency symbol ("199.00", not "199 zł")
- offers.priceCurrency field is the ISO currency code ("PLN")
- offers.availability field is the full scheme URL ("https://schema.org/InStock" or "https://schema.org/OutOfStock")
- Product page URL in offers.url leads to the correct product
- Test in Rich Results Test — no critical errors
- No warnings for the "Product" section in Enhancements in Google Search Console
- Structured data corresponds to what the user sees (price, availability, reviews)
- Price in the snippet matches the price displayed on the page (including VAT if displayed that way)
- priceValidUntil set to a future date
- For product variants — snippet dynamically loaded for the active variant
- For reviews: aggregateRating.reviewCount matches the number of reviews on the page
- Reminder for monthly check in Search Console
7-Day Implementation Plan
Choose 3 products with the most traffic. Check Google Analytics or Search Console to identify which product pages have the most sessions. Note their CTR — this is your baseline for measuring effects.
Download product.tpl, make a copy. Prepare a static snippet for each of the 3 products — manually fill in prices, names, and image URLs.
Paste the snippet into product.tpl. Save. Check each of the 3 products in Rich Results Test. Correct any errors.
Log into Google Search Console. Check if the "Product" tab appears under Enhancements. If not — wait 48 hours, Google has not indexed the changes yet.
If you have more than 10 products — convert the snippet to a dynamic version with Smarty variables or give the static version to a programmer with a request for automation.
Fill in category-specific fields: color/size for clothing, gtin13 for electronics, additionalProperty for supplements.
Check Search Console again. Set a reminder for 14 and 30 days. Paste your store URL into Audit AI — a full AI Readiness report with the status of all structured data, robots.txt, llms.txt, and compliance with AI agents.
Common Mistakes When Implementing Product Schema
Google expects a number, not text. A decimal comma is also an error — use a dot.
Google checks the consistency of structured data with page content. Inconsistency can result in rich results being disabled.
JSON-LD requires full URLs. A relative path does not work in a context parsed by external tools.
Some PrestaShop themes have non-standard template structures. A snippet pasted
after the closing </html> will not be detected by the
validator.
Always check in Rich Results Test — if the result is empty despite the snippet
being pasted, it likely ended up outside the <body>.
How to Measure Effects After Implementation
Google needs to re-index the pages after the change — for active stores, this takes several hours to several days. Do not check the effects on the first day.
Signals worth tracking:
- Rich Results in Search Console → Enhancements → Product: green status and number of valid items
- CTR in Search Console: products with rich snippets may have a higher CTR — note the CTR for 3 key products today and compare after 30 days
- Clicks from AI Search: traffic from OpenAI, Google Gemini, or Perplexity domains — visible in Google Analytics 4 with appropriate settings
- Rich snippet in Google results: type
site:yourstore.com product-name— does the result show stars and price?
Set a calendar reminder for 7 and 14 days after implementation. For stores with low organic traffic, changes may only be visible after 30 days.
Who This Solution Is Not Good For
You don't need to implement this if:
- You sell only services, not physical products (
schema.orghas separate types:Service,LocalBusiness) - The store is closed to the public, B2B with login access — Google will not index these pages
- You have fewer than 5 products and no scaling plans — the effort is disproportionate to the gain
- Your PrestaShop theme is heavily modified and you don't have access to
product.tpl— without template editing or a dedicated plugin, implementation is not possible
Wait with implementation if:
- Prices or availability change several times a day without automatic updates — the risk of inconsistency between the snippet and the actual state is too high
- The store is migrating to a new theme — implementing schema after stabilization will yield a more reliable result
Summary
Product schema JSON-LD in PrestaShop takes one afternoon: file copy, snippet paste, Rich Results Test. The effects are visible in two places — rich snippets in Google and better visibility in AI answers to shopping queries.
Start with three products with the most traffic. Check the Rich Results Test. Return to Search Console after a week. If you want to see a full AI Readiness report for your store — including structured data status, robots.txt, llms.txt, and compatibility with AI agents — run a free audit on Audit AI.



