Microdata (OG, Schema.org, JSON-LD)
Available since v2.1
Automatically inject the structured product data that Meta requires for dynamic ads and that search engines use to understand your product pages.
Overview
When you run dynamic product ads on Facebook or Instagram — where Meta automatically shows visitors the exact products they viewed on your site — Meta needs to read structured data from your product pages to match pixel events to catalogue items. This structured data comes in three formats: Open Graph tags, Schema.org microdata, and JSON-LD.
Many PrestaShop themes include some of these formats but not all. Missing or incomplete structured data is one of the most common reasons dynamic ads stop working or product catalogues fail validation in Meta Commerce Manager.
The Microdata panel includes a built-in scanner that fetches one of your product pages and reports which formats are present and which are missing. Based on the scan result, it shows targeted toggles so you can enable injection of only what is actually absent — without duplicating data your theme already provides.
Configuration
First-time setup
- Go to Modules > Module Manager > Pixel Plus for Facebook > Configure.
- Scroll to the Micro Data panel.
- Enable Review Micro Data? and click Save. The page reloads and the scanner fetches a random active product page from your store.
- The scan result appears in the panel. If any data types are missing, the corresponding toggles appear.
- Enable Fill in the missing OG/Schema microdata? (the master switch for OG and Schema injection).
- Enable the specific type toggles — OG, Schema — as recommended by the scan.
- To inject JSON-LD (Meta's preferred format), enable Inject JSON-LD structured data? separately.
- Click Save.
- Verify the result using Meta's Microdata Debug Tool.
| Field | Values | Default | Description |
|---|---|---|---|
| Fill in the missing OG/Schema microdata? | Enabled / Disabled | Enabled | Master switch for OG and Schema injection. When enabled, the module injects the data types detected as missing by the last scan. Disabling this stops all OG and Schema injection regardless of the sub-toggles. |
| Inject JSON-LD structured data? | Enabled / Disabled | Disabled | Injects a complete Product JSON-LD block on every product page, but only if no JSON-LD block is already present on the page. Works independently of the master switch above. |
| Review Micro Data? | Enabled / Disabled | Off | Enable and save once to trigger the scanner. The toggle resets automatically after the scan runs. |
| Fill in the OG-related microdata? | Enabled / Disabled | Enabled | Injects Open Graph meta-tags on product pages. Only appears in the panel when the scanner detected missing OG tags. |
| Fill in the Schema-related microdata? | Enabled / Disabled | Disabled | Injects Schema.org itemprop attributes on product pages. Only appears when the scanner detected missing Schema tags. |
| Ignore cover? | Enabled / Disabled | Disabled | When enabled, uses the first image in the product gallery instead of the designated cover image. Applies to both OG tags and JSON-LD. |
| Images limit | Number | — (all images) | Limits how many product images are included in the injected data. Leave blank to include all images. |
If you enable Fill in the missing OG/Schema microdata? but leave both the OG and Schema sub-toggles disabled, the module will display a warning and no microdata will be injected. You need at least one sub-toggle enabled for the master switch to have any effect.
After updating your theme, run the scanner again (Review Micro Data? > Save) to make sure your theme still provides the same data types.
How It Works
Meta's dynamic product ads work like this: a visitor views a product on your site, the pixel fires a ViewContent event with the product ID, and later Meta shows that visitor an ad for the exact product. For this matching to work end-to-end, Meta also needs to read structured data directly from the product page — its name, price, image, brand, and availability — and validate that data against your product catalogue.
Think of structured data as machine-readable labels on your product pages. Open Graph tags are one labelling format (<meta property="og:..."> tags), used primarily by Facebook and Instagram. Schema.org microdata uses itemprop attributes embedded in your page HTML, used by Google and general web tools. JSON-LD is a self-contained structured data block embedded in a <script> tag — it is Meta's preferred format for product data and the one most likely to resolve catalogue warnings.
How the scanner works
When you trigger the scanner, the module fetches a random active product page from your store using an HTTP request. It then parses the HTML to check for the presence of each expected OG property and each expected Schema itemprop attribute. It also detects any existing JSON-LD blocks and identifies their @type values. Tags that are already present are removed from the list of missing items. The result is stored so the panel can show you exactly what is absent.
The scanner checks for these Open Graph properties: og:type, og:title, og:url, og:description, og:image, og:locale, product:retailer_item_id, product:item_group_id, product:price:amount, product:price:currency, product:condition, product:availability, brand, product:category, product:sale_price:amount, product:sale_price:currency, and sale price date ranges.
For Schema.org, it checks for: url, image, description, productID, name, brand, price, salePrice, priceValidUntil, originalPrice, priceCurrency, itemCondition, and availability.
OG and Schema injection
Once the scan is complete and you enable injection, the module hooks into the page output on every product page. Before the page is delivered to the visitor's browser, the module appends the missing tags. The visitor sees no difference, but Meta and search engines can now read complete product information.
OG injection adds only the properties that were missing — it does not replace tags your theme already generates. Schema injection works the same way.
JSON-LD injection
JSON-LD injection is controlled by its own toggle and works independently of the master OG/Schema switch. When enabled, the module checks the rendered page for any existing <script type="application/ld+json"> blocks. If one is already present, the module skips injection entirely to avoid conflicts. If none is found, it appends a complete schema.org/Product block containing:
- Product name, SKU (using your catalogue ID prefix), URL, and description
- Brand name (from the manufacturer, or your shop name if no manufacturer is set)
- Product images (respecting the Ignore cover? and Images limit settings)
- Offer block with price, currency, availability (
InStock,OutOfStock, oravailable for order), and condition (NewCondition,UsedCondition, orRefurbishedCondition)
The SKU in the JSON-LD block uses the same product ID prefix and combination suffix configured in your catalogue settings, ensuring it matches the product IDs in your Meta pixel events.
Scanner JSON-LD report
The scanner also reports the JSON-LD status of your theme: whether a JSON-LD block was found, what @type values it contains, and whether the module's own JSON-LD injection is enabled. If your theme already injects a Product JSON-LD block, the scanner tells you — and enabling Inject JSON-LD structured data? would have no effect since the module detects the existing block and skips injection.
Usage Examples
Example: Theme with partial Open Graph support
Your theme generates og:title and og:description but not product:price:amount, product:availability, or product:retailer_item_id. The scanner detects those properties as missing. Enable Fill in the missing OG/Schema microdata? and the OG toggle. The module injects the missing properties on every product page. Meta's Microdata Debug Tool now shows a complete product record, and your catalogue can use the pixel as a data source.
Example: Adding JSON-LD for Meta's preferred format
Your theme has complete OG tags but no JSON-LD. Meta recommends JSON-LD for product catalogues. Enable Inject JSON-LD structured data?. The module adds a schema.org/Product block to every product page. This often resolves catalogue warnings about missing or incomplete product data in Meta Commerce Manager.
Example: Products with a gallery where the cover is a placeholder Your store uses a small thumbnail as the product cover image, but the actual product photos are in the gallery. Enable Ignore cover? so the module uses the first gallery image instead of the cover in all injected data — both OG tags and JSON-LD.
Example: Fixing a theme that generates malformed microdata Your theme generates OG tags, but they contain errors (wrong property names, missing required fields). Comment out the microdata section in your theme's TPL files, then run the scanner once. The module detects the now-missing tags and offers to inject them correctly. Enable the relevant toggles and save.
Important Notes
- The scanner runs once on demand — it does not re-run automatically when you update your theme or PrestaShop. Re-trigger it manually after any theme change.
- The scan fetches one random active product page. If your theme generates microdata conditionally (for example, only for products with images or only for products in specific categories), the scan result may not reflect all products. Check a few product pages manually using Meta's Microdata Debug Tool if in doubt.
- The Images limit setting is useful for stores with many product photos. Sending 20 or 30 image URLs per product increases page weight. Limiting to 5–10 images is usually sufficient for Meta's requirements.
- JSON-LD injection will not fire on pages where the module detects an existing JSON-LD block. If you want the module to take over JSON-LD from your theme, remove the theme's implementation first, then re-trigger the scanner.
- In multi-shop setups, all Microdata settings are per-shop. The scanner also runs per-shop, storing separate results for each shop.
- The scanner runs automatically once during module installation to perform an initial review.
Troubleshooting
| Problem | Solution |
|---|---|
| Meta Commerce Manager shows catalogue errors about missing product data | Run the scanner, enable the missing microdata types, save, then re-test with Meta's Microdata Debug Tool. |
| Duplicate OG tags appear in the page source | Your theme already generates those OG tags. Disable the OG toggle and let the theme handle them, or remove them from the theme and let the module inject them instead. |
| JSON-LD block is not appearing on product pages | Confirm Inject JSON-LD structured data? is enabled and that your theme does not already contain a <script type="application/ld+json"> block — the module skips injection when one is detected. |
| The scan shows no issues but Meta still rejects catalogue items | The scanner checks for presence of structured data, not validity. Use Meta's Microdata Debug Tool to see exactly what Meta reads and whether any values are malformed. |
| Master switch enabled but nothing is being injected | Check that at least one of the sub-toggles (OG or Schema) is also enabled. If both are disabled, the module shows a warning and injects nothing. |
| Scanner fails or returns no result | The scanner fetches your product page via an internal HTTP request. If your store requires authentication, uses IP restrictions, or has SSL mismatches in the Back Office URL, the request may fail. Check that your store's front-end is publicly accessible. |
Frequently Asked Questions
What are Open Graph tags and why do they matter for ads?
Open Graph tags are HTML meta-tags (<meta property="og:...">) that tell social platforms — primarily Facebook and Instagram — what a page is about. For dynamic product ads, Meta reads these tags to match the product shown in an ad to the correct item in your catalogue, including its price, availability, and image.
My theme already has complete microdata. Should I enable anything?
Run the scanner first. If it reports no missing data for OG and Schema, and your theme already injects JSON-LD, you do not need to enable any injection. Enabling injection when data is already present can create duplicates.
Does enabling this feature affect SEO?
Yes, positively. Schema.org microdata and JSON-LD are read by search engines as well as Meta. Injecting complete structured data can improve how your product pages appear in Google Search — with price, availability, and other rich details shown directly in search results.
How often should I run the scanner?
Run it after installing or updating your theme, after any major PrestaShop upgrade, and whenever Meta reports missing product data in Commerce Manager. There is no need to run it more frequently unless your theme changes.
What is the difference between the OG toggle and the Schema toggle?
Open Graph tags (og: and product: meta properties) are what Facebook and Instagram primarily read for ads and sharing. Schema.org microdata (itemprop attributes) is a complementary format used by Google and other services. Most stores only need OG injection for Meta ads. Enable Schema if you also want richer Google Search appearance or if your theme is missing Schema data.
Why does the JSON-LD block use the same SKU as the pixel events?
For Meta's dynamic ads to work, the product ID in the pixel event and the ID in the structured data must match. The module builds the JSON-LD SKU using the same catalogue prefix and combination suffix you configured in the pixel settings — so the data is consistent across all channels Meta uses to validate your catalogue.
Can I use JSON-LD injection alongside my theme's existing Schema microdata?
Yes. JSON-LD injection and Schema microdata injection are independent. JSON-LD is a separate <script> block and does not conflict with itemprop attributes already in your page HTML. The module only prevents JSON-LD injection if another JSON-LD block already exists — it does not check for Schema itemprop attributes.
Related Features
- Pixel Setup — ViewContent events from the pixel are what feed Meta's dynamic ad matching; structured data is how Meta validates those events against your catalogue.