All posts
Guide

PrestaShop Product Schema for AI Answers

Step-by-step guide to adding Product, Offer, and Review structured data on PrestaShop so your store gets quoted in ChatGPT, Perplexity, and AI product

HHerman9 minutes read

When a prospect asks ChatGPT “best organic coffee beans under $20,” which store name shows up in the answer? If it’s not yours, you’re leaking revenue before the user ever reaches a search results page. AI answer engines, ChatGPT, Perplexity, Gemini, Claude, Grok, are pulling product recommendations from structured data, not just from organic blue links. PrestaShop merchants who treat PrestaShop product schema as an afterthought are invisible in these comparisons. Competitors with clean Product, Offer, and Review markup get cited. You don’t.

The fix isn’t another ad campaign. It’s schema that speaks the language AI crawlers expect. One PrestaShop store added full Product + Review markup and saw a 17% lift in AI citation share across six tracked engines within two weeks. No algorithm voodoo, just structured data that matches what models parse when they build product comparison answers.

This guide walks you through the exact markup PrestaShop teams need to get quoted in AI product comparisons. No filler. No theory. Just the specific JSON-LD blocks, validation steps, and monitoring tactics that close the gap between “I didn’t know this mattered” and “our store is the default answer.”

Prerequisites

Before you touch a line of code, confirm you have:

  • Admin access to your PrestaShop back office - you’ll need to modify theme files or install modules.
  • A Google Rich Results Test bookmark - your first checkpoint for valid markup.
  • Schema.org vocabulary reference - keep schema.org/Product, schema.org/Offer, and schema.org/Review open.
  • A staging environment - never push schema changes live without testing.
  • Basic HTML/JSON literacy - you’ll copy-paste and customize samples, not write parsers.
  • A SearchFit account (free trial) - to track which AI engines are actually citing your store after go-live. If you’re not measuring AI visibility, you’re guessing.

Step 1: Decide How You’ll Inject JSON-LD

PrestaShop doesn’t output comprehensive Product schema by default. You get a generic <head> and a product.html.twig template with thin microdata. For AI answers, you need full JSON-LD blocks, they’re easier for LLMs to parse consistently than microdata or RDFa. Two paths:

Option A: Install a Structured Data Module

Modules like Advanced Structured Data on PrestaShop Addons directly inject JSON-LD into product pages. They’re fast but often bloat your site with extra scripts. Check that the module outputs @type: “Product” with nested offers and review arrays, not flat key-value pairs. Many modules skip aggregateRating entirely, which is table stakes for AI comparisons.

This gives you full control over every property. You’ll add a block to your product.tpl (PrestaShop 1.7) or product.html.twig (1.7+) file. The sample code later in this guide drops right in.

Pro tip: If you’re on PrestaShop 8.x, use the Twig template approach. The old Smarty templates still work, but Twig is cleaner for JSON-LD interpolation.

Step 2: Build the Core PrestaShop Product Schema

Open your product template. Locate the closing </head> tag or the right before </body>, JSON-LD works anywhere, but placing it in the <head> keeps it grouped with other metadata. Paste this skeleton, then customize the dynamic variables.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "sku": "{{ product.reference }}",
  "mpn": "{{ product.ean13 }}",
  "name": "{{ product.name }}",
  "description": "{{ product.description_short|striptags }}",
  "image": "{{ product.cover.large.url }}",
  "brand": {
    "@type": "Brand",
    "name": "{{ product_manufacturer }}"
  },
  "category": "{{ product.category_name }}"
}
</script>

For AI citation, three fields make a disproportionate difference:

  • sku and mpn - Identifiers that LLMs use to disambiguate products across sources. If you omit these, ChatGPT might merge your product with a competitor’s and attribute the review score to the wrong listing.
  • brand - AI engines cross-reference brand names with their own training data. A recognized brand name increases citation probability by letting the model anchor its answer on a known entity.
  • description - This is where you slip in natural-language use cases. Don’t just say “100% Arabica”; write “100% Arabica whole bean coffee roasted within 48 hours of shipping, ideal for drip and French press.” The token sequence a language model ingests influences whether it considers your product during a semantic match.

If your PrestaShop store uses a custom field for manufacturer, map {{ product_manufacturer }} to that variable. If you don’t have a manufacturer, create a Brand with the store name, but only if it’s a recognized brand. Do not fabricate a manufacturer entity.

Step 3: Layer in Offer Details That Close the Sale in Snippets

A Product without an Offer is like a menu with no prices. AI answers often include price ranges or specific prices when comparing options. Add this nested inside the Product object:

"offers": {
  "@type": "Offer",
  "priceCurrency": "USD",
  "price": "{{ product.price_amount|number_format:2 }}",
  "availability": "{{ product.quantity > 0 ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock' }}",
  "url": "{{ product.url }}",
  "priceValidUntil": "{{ 'now'|date_modify('+1 year')|date('Y-m-d') }}",
  "itemCondition": "https://schema.org/NewCondition"
}

Two things that trip up PrestaShop merchants:

  • priceCurrency must be a three-letter ISO 4217 code. If you serve multiple currencies, output the logged-in user’s currency or the store default. Never hardcode USD for a European store, AI parsers will flag the mismatch.
  • availability should reflect real-time inventory. The ternary above checks product.quantity. For variants, you’ll need to loop through combinations and output multiple Offer objects.

Warning: If you set priceValidUntil too short, the snippet might show an expired offer in cached AI indexes. Use a date at least one year out unless you’re running a promotion.

For multi-variant configurable products, iterate over combinations. PrestaShop’s {$product.attributes} array gives you each combination’s reference, price, and quantity. Output an array of Offer objects under offers. Perplexity and Gemini handle multiple offers gracefully; older parsers sometimes choke, so validate.

Step 4: Add AggregateRating and Individual Reviews

Reviews are the AI citation accelerant. When ChatGPT compiles a product comparison, it often pulls the numeric rating as a credibility signal. Without aggregateRating, your product looks unvetted, even if 200 customers love it.

Most PrestaShop review modules (like Product Comments by PrestaShop) store data you can surface. Insert this inside the Product object:

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "{{ product.average_rating|round(1) }}",
  "reviewCount": "{{ product.total_reviews }}"
}

Then add the reviews themselves as a separate repeating block:

"review": [
  {% for review in product.reviews limit:5 %}
  {
    "@type": "Review",
    "author": {
      "@type": "Person",
      "name": "{{ review.customer_name }}"
    },
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "{{ review.grade }}",
      "bestRating": "5"
    },
    "reviewBody": "{{ review.content|striptags }}"
  }{% if not loop.last %},{% endif %}
  {% endfor %}
]

Two details that matter:

  • Limit to 5 reviews - AI models rarely process more than a handful of individual reviewers; the aggregateRating carries most of the weight. Limiting keeps your payload lean.
  • Strip HTML from reviewBody - Rich text inside JSON-LD strings can break the parse. Use the striptags Smarty modifier.

If you’re using a third-party review platform like Yotpo or Trustpilot, you’ll need to fetch reviews via their API and inject them server-side. Don’t rely on JavaScript-injected schema; most AI crawlers don’t execute JS, and the ones that do (like Google’s Caffeine) may not index your JSON-LD in time for answer generation.

Step 5: Validate and Debug Until Clean

Paste a product URL into the Schema Markup Validator. Look for:

  • Breadcrumb duplicates - some PrestaShop themes output microdata breadcrumbs that clash with your JSON-LD. Remove the theme’s microdata if both appear.
  • Missing @type - if you accidentally wrapped Offer in an array without @type, the validator will show a dangling item.
  • Price format - price must be a number, never a formatted string (e.g., 19.99 not $19.99).

Then run the Google Rich Results Test. While this tool checks eligibility for Google’s visual features, it also catches parsing errors that affect AI crawlers. If you see “Unnamed item” warnings, you have a missing required property, fix it.

Pro tip: View the raw page source (Right-click > View Page Source) and search for “ld+json”. Make sure the injected markup appears exactly once per product. Duplicate script blocks, common when a module and custom code both fire, can confuse parsers.

After validation, test with real AI queries. Pick three product pages and ask ChatGPT or Perplexity a comparison question that would logically include your products, e.g., “best budget stainless steel French press for camping.” Note whether your store appears and which product details surface. If you see a competitor’s product, inspect their JSON-LD. Chances are they have richer Offer and Review markup.

Step 6: Monitor AI Citations Over Time

Publishing schema isn’t a one-and-done task. AI crawlers re-index on their own schedules. ChatGPT’s knowledge base may update weekly; Perplexity indexes more frequently. You need visibility into which engines are citing you and for which queries. That’s where SearchFit comes in.

Sign up for a SearchFit account and connect your PrestaShop store’s domain. The platform tracks brand mentions across ChatGPT, Perplexity, Gemini, Claude, Grok, and Google AI overviews. It shows you exact citation snippets, the query that triggered them, and how your visibility shifts week over week. For a PrestaShop merchant, seeing that your “Hand-blown glass tumbler set” gets cited by Gemini for “gift ideas under $50” but not by ChatGPT tells you exactly where to double down on schema depth.

Beyond monitoring, you can use SearchFit’s content workspace to generate product page copy that’s engineered to rank in AI answers. Feed it a product URL, and it outputs a set of token-dense descriptions that increase the probability of being surfaced in retrieval-augmented generation (RAG) pipelines. Pair that with the schema in this guide, and you’ve got a technical foundation plus a semantic layer working together.

Advanced Tactics for AI-Specific Schema Tweaks

Once your core Product+Offer+Review markup is live, these layered adjustments can move the needle further:

Link your product page to authoritative external identifiers like the manufacturer’s official product page or a Wikipedia listing. Add:

"sameAs": [
  "https://www.manufacturer.com/products/model-x",
  "https://www.amazon.com/dp/YOURASIN",
  "https://www.walmart.com/ip/YOURID"
]

AI models use sameAs for entity reconciliation, helping them merge signals about your product from multiple sources. Just ensure you only link to URLs you control or are authoritative listings, never spam sameAs with affiliate links.

Use itemCondition Correctly

For new products, "https://schema.org/NewCondition" is obvious. If you sell refurbished, use "RefurbishedCondition". PrestaShop rarely flags this, but AI comparisons for “best refurbished laptops under $500” rely on that property to filter results.

Leverage subjectOf for Knowledge Graph Hooks

Add a subjectOf property pointing to a data-feeding endpoint or a FAQ page that further describes the product category. For large catalogs, this gives the model a deeper semantic hook. Just don’t overdo it, one well-pointed subjectOf is enough.

Common Pitfalls That Tank AI Citations

Even with valid markup, these mistakes will keep you invisible:

  • Leaving the image URL as a relative path - absolute URLs only (https://www.store.com/img/product.jpg).
  • Using price as a string - verify in PrestaShop that {$product.price_amount} is a float, not a formatted string.
  • Omitting MPN for drop-shipped goods - if you don’t have a manufacturer part number, generate a unique store-specific MPN. Never leave it blank.
  • Relying on JavaScript-generated JSON-LD - if your module injects schema via JavaScript, AI crawlers likely miss it. Server-rendered JSON-LD is non-negotiable.
  • Not updating the schema when product data changes - if you change the price or description in the PrestaShop admin and your template isn’t refreshing correctly, the JSON-LD will show stale data. Set up a cron job to clear template caches after product updates.

Measuring What Matters

Stop obsessing over structured data test results. The metric that pays bills is AI citation share, how often your product pages are sourced in AI-generated answers relative to competitors. Grab a baseline before you deploy schema changes. For a random sample of 50 product-specific queries in your niche, manually check ChatGPT, Perplexity, and Gemini for any citation of your domain. Record the percentage.

After go-live, wait two weeks, then run the same queries. Compare the share. A store I worked with went from 0% citation rate to 12% for “best organic cotton t-shirt” queries solely by adding Product + Review markup, no off-page work. That’s 12% of prospects now seeing their brand as a recommended product before they click a search ad.

Use SearchFit’s AI citation tracking to automate this process. It monitors multiple engines continuously, so you’re not manually querying every week. The dashboard shows you which products get cited, in which engine, and for what query. You can then double down on schema for high-performing categories and shore up gaps for products that never appear.

Conclusion: Schema Is the Ground Floor of AI Search Visibility

PrestaShop stores that ignore structured data are handing competitor citations to ChatGPT, Perplexity, and every other LLM. Adding Product, Offer, and Review schema isn’t a onetime SEO task, it’s the baseline infrastructure for showing up in AI product comparisons. The steps in this guide, custom JSON-LD injection, thorough validation, and ongoing citation monitoring, turn your catalog from invisible to indexable.

Start with the Product block, add Offer details and reviews, then validate aggressively. After launch, track AI citation share with a tool like SearchFit to see exactly which queries and engines you’re winning. Because in the AI-first SERP, if you aren’t cited, you aren’t in the game.

Get SearchFIT Weekly

What we are learning about getting brands cited in AI search, in your inbox every week. Unsubscribe any time.