Free cookie consent management tool by TermsFeedAktualizacja preferencji plików cookie

Magento 2 Module — SEO Rich Data (JSON-LD)

€30.75 €25.00
COMPOSER Installation
M2-SEO-RICH-DATA

Zobacz DEMO modułu

username: seorichdata
hasło: M2Seorichdata

Requires changes to the template
No
Minor changes
Significant changes
Requires programming knowledge
No
Basic
Advanced
Difficulty in configuration
Impact on performance
Compliance with Magento standards
  • Polnisch Polnisch
  • English English
  • 2.4.8
  • 2.4.7
  • 2.4.6
  • 2.4.5
  • 2.4.4
  • 2.4.3
  • 2.4.2
  • 2.4.1
  • 2.4.0

What is SEO Rich Data?

The SEO Rich Data module for Magento 2 adds complete schema.org-compliant structured data in the JSON-LD format supported by Google to your store. This allows your products, categories, tabs, and content to appear in search results as rich snippets, directly improving visibility, CTR, and SEO.

Key module features:

Supported data types:

  1. Product

    Detailed product description: name, description, price, currency, stock status, manufacturer, brand, SKU, MPN.

  2. Offer

    Information about offer availability and terms (new condition, availability, price validity date).

  3. Brand / Manufacturer

    Automatic brand and manufacturer markup based on product data.

  4. Organization

    Your company data (seller name, contact details, website).

  5. BreadcrumbList

    Breadcrumbs that help Google better understand the page structure.

  6. SearchAction (WebSite)

    A signal for Google showing how the store internal search engine works.

  7. ItemList (for category pages)

    A list of products in a category (name, image, link) — speeds up indexing and gives Google context.

  8. Reviews (Review + AggregateRating)

    Automatic generation of structured data based on customer reviews: rating, number of reviews, review content, and author data. The module creates both individual Review entries and an aggregated AggregateRating summary, enabling star ratings to appear in Google results (rich snippets) and significantly increasing CTR.

  9. VideoObject (NEW)

    Detects videos in the product gallery and adds them as structured data (thumbnail, link, date).

  10. FAQPage (INTEGRATION WITH THE Ask About Product MODULE)

    If you have our Ask About Product module installed, all questions with answers for a given product are automatically converted into FAQPage data. This allows Google to display a questions and answers section directly in search results!

Integration with the Ask About Product module

If you use our second module — Ask About Product, FAQ structured data is generated dynamically based on real questions and answers provided by the seller. This increases the authenticity of the data and its SEO value.

In addition, questions and answers can be visible as a tab on the product page — with the option to enable it and set its title from the configuration.

Why use Rich Data in Magento?

  • Higher visibility in Google results – your products can appear with price, availability, reviews, and other information.

  • Better CTR – users are more likely to click rich results.

  • Improved indexability – Google better understands the page structure and indexes new content faster.

  • Unmatched content quality – you show Google data that was previously hidden only in HTML.

Configuration

  • Option to enable/disable individual components (e.g., FAQ, VideoObject).

  • Custom title for the questions tab (for the Ask About Product module).

  • Automatic mechanism for detecting and generating JSON-LD data.

Requirements

  • Magento 2.4.x (tested on 2.4.7)

  • PHP 8.1+

  • Recommended: Ask About Product module for full functionality (FAQ)

What you get:

  • Ready-to-install module via Composer

  • Complete documentation

  • Code compliant with Magento guidelines

  • Technical support during implementation

Want your store to stand out in Google? This module is your SEO in the PRO version. Order now and increase your visibility!

Version: 1.0.17

05/19/2026

Added

  • Added support for the shippingDetails field in the offers structure for JSON-LD product data.
  • Added support for the hasMerchantReturnPolicy field in the offers structure for JSON-LD product data.
  • Added shipping data configuration:
    • enabling/disabling generation of shippingDetails,
    • shipping country,
    • shipping cost,
    • minimum and maximum order handling time,
    • minimum and maximum transit time.
  • Added return policy configuration:
    • enabling/disabling generation of hasMerchantReturnPolicy,
    • country where the policy applies,
    • return policy type,
    • number of days for returns,
    • return method,
    • return fees,
    • optional return shipping fee amount.
  • Added EAN / GTIN attribute selection in the product configuration.
  • Added automatic mapping of EAN / GTIN values to gtin8, gtin12, gtin13, gtin14, or gtin properties, depending on the number length.
  • Added source models for return policy configuration options:
    • ReturnPolicyCategory,
    • ReturnMethod,
    • ReturnFees.

Changed

  • Improved retrieval of brand and manufacturer attribute values for JSON-LD.
  • Added fallback retrieval of attribute values from raw EAV value when getAttributeText() or getData() does not return a value.
  • Added fallback retrieval of brand / GTIN values from simple products for configurable and grouped products.
  • Replaced the deprecated BlockProduct::getResultArray() method with shared ModelJsonLdProductInfo logic to keep product data generation consistent on the product page and in category lists.
  • Extended the offers cache key with shipping and return policy configuration so configuration changes affect the generated JSON-LD.

Fixed

  • Fixed a case where the configured Brand attribute did not appear in product JSON-LD.
  • Completed missing data required by Google Search Console for merchant listings:
    • shippingDetails,
    • hasMerchantReturnPolicy,
    • global product identifier via EAN / GTIN.

Questions and Answers

Question
Does the module support the latest version of Magento 2 (e.g., 2.4.7)?
Answer
Yes — the module has been tested on Magento 2 version 2.4.7 and is also compatible with versions 2.4.0–2.4.8.
Question
What types of structured data (JSON-LD) does this module support?
Answer
The module supports, among others, the following types: Product, Offer, Brand/Manufacturer, Organization, BreadcrumbList, SearchAction (WebSite), ItemList (for category pages), VideoObject (if the product includes a video), and FAQPage (when integrated with the “Ask about a product” module).
Question
Can I enable or disable individual structured data elements?
Answer
Yes — in the module configuration, you can enable or disable individual components (e.g., FAQPage, VideoObject) according to your needs.
Question
Does the module automatically detect videos in the product gallery and create the VideoObject type?
Answer
Yes — if there is a video in the product gallery, the module automatically generates a VideoObject structured data element for it (thumbnail, link, date).
Question
Does this module work with the Ask About Product module and generate FAQPage?
Answer
Yes — if you have the “Ask About Product” module installed, all questions and answers assigned to the product are automatically converted into FAQPage, which allows the search engine (e.g., Google) to display the questions and answers section directly in the results.
Question
What are the system requirements for the module?
Answer
The required environment is Magento 2 version 2.4.x (tested on 2.4.7 and 2.4.8) and PHP version at least 8.1
Question
What exactly do I receive after purchasing the module?
Answer
After purchase, you receive: a ready-to-install module via Composer, complete documentation, code compliant with Magento 2 guidelines, and technical support during implementation.
Question
Does the module help increase the store’s visibility in search results?
Answer
Yes — by using structured data in JSON-LD format, your products, categories, and CMS pages can be displayed in search results with an image, price, availability, and other enhancements, which improves CTR and indexing.
Question
Do I have to fill in all the data manually—for example, brand, manufacturer, MPN?
Answer
The module automatically retrieves certain data from standard product fields (e.g., brand/manufacturer) — however, it is important that this data is correctly filled in in the product catalog so that the JSON-LD output is complete.
Question
Can I set a custom title for the questions (FAQ) tab on the product page?
Answer
Yes — in the module configuration, you have the option to set a custom title for the questions tab (if you use the “Ask about Product” module).
Question
Does the module help make the main product image appear in Google search results?
Answer
Yes — the module generates a valid @type='Product' markup with an image property containing the URL of the main product image, which helps search engines (including Google) recognize the image and consider displaying it in enhanced search results (“rich snippets”). However, it is worth remembering that Google does not guarantee that the image will be displayed — structured data provides an opportunity, but Google decides whether and when it will be shown.
Question
Does the module allow automatic generation of structured data in JSON-LD format for products in a Magento 2 store?
Answer
Yes — the module is designed to add or extend JSON-LD structured data (schema.org) in a Magento 2 store to improve visibility in search engines.
Question
Can I add data such as price, availability, brand, or reviews in these JSON-LD markups?
Answer
Yes — the standard for good JSON-LD product markup includes, among other things, the name, price, currency, availability status (“InStock”), brand, as well as reviews/ratings.
Question
Does the module require modifying Magento core files or the store theme?
Answer
No — as an extension for Magento 2, it should work without the need to overwrite core files. (However, it is always recommended to make a backup before installation and test in a staging environment.)
Question
Does the module work in multi-store or multilingual installations?
Answer
Yes — because the module focuses on generating JSON-LD, it can be used in Magento 2 stores with multiple stores or views. However, it is worth making sure that the configuration allows different settings for individual views.
Question
Can the module improve the store’s visibility in search results, such as displaying prices and ratings in Google results?
Answer
Yes — correctly implemented structured data increases the chance of so-called rich snippets (e.g., price, availability, rating) appearing in search results, which can increase CTR.
Question
Can I set a default value or attribute template if the product does not have all the data (e.g., the brand has not been assigned)?
Answer
Usually, yes — good modules allow you to set default or fallback values when data is not fully available. Before installation, it is worth checking the module documentation.
Question
Does this negatively affect the store’s performance — for example, with a very large number of products?
Answer
In most cases, the impact is minimal — adding a JSON-LD script to the product page is a small load. However, with a huge catalog and number of requests, it is worth testing how it works in a test environment.
Question
After installation, do I need to manually add JSON-LD scripts to the template or modify the product page layout?
Answer
No — the module automates the generation of JSON-LD scripts, eliminating the need to manually edit the template. However, it is worth checking the module settings to see whether minor theme modifications are required.
Question
Does the module work with other SEO modules or modules that generate structured data?
Answer
It is worth being careful — if the store already uses another extension that generates JSON-LD or schema.org scripts, data duplication may occur, which Google may evaluate negatively. It is recommended to check the configuration and avoid conflicts.
Question
Do I receive technical support and updates after purchasing the module?
Answer
Yes — the manufacturer states that technical support and updates are available for its modules.
Write Your Own Review
You're reviewing:Magento 2 Module — SEO Rich Data (JSON-LD)
Your Rating

Module Installation Instructions

SEO Rich Data - installation and configuration

Module purpose

The Kowal_SeoRichData module adds schema.org structured data in JSON-LD format to Magento 2. Generated data may include products, offers, prices, availability, ratings, reviews, breadcrumbs, organization data, site name, search box, social profiles, FAQ, and video.

The module configuration is available in the Magento admin panel:

Stores > Configuration > Kowal > SEO Rich Data

Requirements

  • Magento 2.
  • Access to Magento CLI.
  • Access to the Composer repository with the kowal/module-seo-rich-data package.
  • Required base package: kowal/base.
  • Permissions to run bin/magento commands.

Installation via Composer

  1. Add the package repository:
composer config repositories.seo.rich.data vcs https://github.com/kowalco/magento-2-seo-rich-data
  1. If the repository is private, add a GitHub access token:
composer config --global --auth github-oauth.github.com 
  1. Install the module:
composer require kowal/module-seo-rich-data
  1. Enable the module:
php bin/magento module:enable Kowal_SeoRichData
  1. Run the Magento upgrade:
php bin/magento setup:upgrade
  1. In a production environment, run DI compilation:
php bin/magento setup:di:compile
  1. In a production environment, if the project requires it, generate static files:
php bin/magento setup:static-content:deploy
  1. Flush the cache:
php bin/magento cache:flush

Manual installation

  1. Copy the module to the directory:
app/code/Kowal/SeoRichData
  1. Enable the module:
php bin/magento module:enable Kowal_SeoRichData
  1. Run the Magento upgrade:
php bin/magento setup:upgrade
  1. Flush the cache:
php bin/magento cache:flush

Post-installation steps

After installation, the module adds the product attribute:

AttributeMeaning
offer_item_conditionProduct condition used to generate itemCondition in offers.

The attribute supports the following values:

Value in MagentoJSON-LD value
DamagedConditionhttps://schema.org/DamagedCondition
NewConditionhttps://schema.org/NewCondition
RefurbishedConditionhttps://schema.org/RefurbishedCondition
UsedConditionhttps://schema.org/UsedCondition

If the product has no attribute value set, the module treats it as NewCondition.

Configuration scope

All configuration fields are available for the Default, Website, and Store View scopes, according to Magento settings.

Enabled, Show ..., and similar fields use standard Magento values:

ValueMeaning
YesThe feature is enabled and can generate JSON-LD data.
NoThe feature is disabled.

This section is responsible for structured data for the navigation path.

FieldMeaningValues
EnabledEnables generation of BreadcrumbList data.Yes, No
Fixed Category PathOn the product page, uses the most specific category path when Magento does not provide full category context.Yes, No
TypeDefines the length of the breadcrumbs path generated for the search engine.Default (Long), Short

Values for the Type field:

ValueMeaning
Default (Long)Full path, e.g. Store > Category > Subcategory > Product.
ShortShortened path, e.g. Store > Subcategory > Product.

Include Your Site Name in Search Results

This section is responsible for WebSite data, which may help Google recognize the website name.

FieldMeaningValues
EnabledEnables generation of WebSite data.Yes, No
Website NameWebsite/store name passed in structured data.Text, e.g. store name.

Organization

This section is responsible for Organization data.

FieldMeaningValues
EnabledEnables generation of organization data.Yes, No
Organization NameCompany or store name.Text; required after enabling the section.
Logo UrlFull URL of the organization logo.URL to the image file.
DescriptionOrganization description.Text.
Description LengthMaximum number of description characters.Number; empty means no truncation.
CountryOrganization country.Country code from the Magento list.
Region/StateRegion or state.Text.
ZIP/Postal CodeZIP/postal code.Text.
CityCity.Text.
Street AddressStreet and number.Text.
SalesSales department phone number.Number in international format, e.g. +48....
Technical SupportTechnical support phone number.Number in international format.
Customer ServiceCustomer service phone number.Number in international format.

The country from this section can be used as a fallback for the shipping country and return policy country if the relevant fields in the product section are empty.

Social Profiles

This section adds the organization social profiles. For the data to make sense, the Organization section should be enabled.

FieldMeaningValues
EnabledEnables generation of social profile links.Yes, No
FacebookFacebook profile URL.Full URL.
TwitterTwitter / X profile URL.Full URL.
Google+Google+ profile URL.Full URL; historical configuration field.
InstagramInstagram profile URL.Full URL.
YouTubeYouTube channel URL.Full URL.
LinkedInLinkedIn profile URL.Full URL.
MyspaceMyspace profile URL.Full URL; historical configuration field.
PinterestPinterest profile URL.Full URL.
SoundCloudSoundCloud profile URL.Full URL.
TumblrTumblr profile URL.Full URL.

Empty fields are skipped.

This section is responsible for SearchAction data, which may allow the store search box to appear in Google results.

FieldMeaningValues
EnabledEnables generation of website search data.Yes, No

Category Rich Data

This section is responsible for generating product data on category pages.

FieldMeaningValues
Show Products DataAdds structured data for products visible on the category page.Yes, No

Enabling this option may reduce category page performance because the module must collect data for many products.

Product Rich Data

This section is responsible for the main Product product data and offers data.

Basic product fields

FieldMeaningValues
EnabledEnables generation of product JSON-LD on the product page.Yes, No
Show AvailabilityAdds availability in offers.Yes, No
priceValidUntil Default ValueDefault price validity date.Date.
Use “Special Price To” Value for priceValidUntil SnippetIf the product has an active special price and a Special Price To date, that date replaces the default value.Yes, No
Show ConditionAdds itemCondition in offers.Yes, No
DescriptionDefines the source of the product description in JSON-LD.None, Product Short Description, Product Full Description, Page Meta Description

Values for the Description field:

ValueMeaning
NoneDoes not retrieve the description from configuration; the code may use the product name as a fallback if the description is empty.
Product Short DescriptionUses the product short description.
Product Full DescriptionUses the product full description.
Page Meta DescriptionUses the page meta description.

Configurable and grouped products

FieldMeaningValues
Show Configurable Products asDefines how offers are generated for configurable products.Main Offer, List of Associated Products Offers, Aggregate Offer
Show Grouped Products asDefines how offers are generated for grouped products.Main Offer, List of Associated Products Offers, Aggregate Offer

Values:

ValueMeaning
Main OfferGenerates one offer for the main product.
List of Associated Products OffersGenerates a separate offer for each simple or associated product.
Aggregate OfferGenerates AggregateOffer with the lowest price, highest price, and number of offers.

Ratings and reviews

FieldMeaningValues
Show RatingAdds aggregateRating and review to product data.Yes, No
Use Yotpo Reviews instead of Magento ReviewsRetrieves reviews from Yotpo instead of Magento Reviews.Yes, No
Rating FormatDefines the rating scale.Percentage Scale, Numeric Scale
Number of ReviewsLimit for the number of latest reviews added to JSON-LD.Number; empty means all reviews.

Values for the Rating Format field:

ValueMeaning
Percentage ScaleRatings are interpreted on a percentage scale.
Numeric ScaleRatings are interpreted on a numeric scale.

Integration with Yotpo requires the availability of a module supporting Yotpo. If the module is not installed, the Yotpo configuration should not be enabled.

Brand, manufacturer, and product identifiers

FieldMeaningValues
BrandProduct attribute used to generate the brand property.Any product attribute from the list.
EAN / GTIN AttributeProduct attribute used as a global product identifier.Any product attribute from the list.
ManufacturerProduct attribute used to generate the manufacturer property.Any product attribute from the list.

The EAN / GTIN Attribute field generates the property depending on the number of digits:

Number of digitsJSON-LD property
8gtin8
12gtin12
13gtin13
14gtin14
Other positive number of digitsgtin

The module removes non-digit characters from the EAN / GTIN value before generating JSON-LD.

Shipping details

The shipping section is responsible for generating shippingDetails in offers. Data is added only when the section is enabled and has the complete set of required values.

FieldMeaningValues
Show Shipping DetailsEnables generation of shippingDetails.Yes, No
Shipping CountryDelivery country.Country code from the Magento list; if empty, the country from the Organization section is used.
Shipping PriceShipping cost.Number equal to or greater than 0; 0 means free shipping.
Handling Time Min DaysMinimum order handling time.Integer, days.
Handling Time Max DaysMaximum order handling time.Integer, days.
Transit Time Min DaysMinimum transit time.Integer, days.
Transit Time Max DaysMaximum transit time.Integer, days.

The shipping cost currency is taken from the product offer currency.

Example meaning of values:

FieldExampleMeaning
Shipping Price0Free shipping.
Handling Time Min Days0The order can be handled on the same day.
Handling Time Max Days1Order handling takes a maximum of 1 day.
Transit Time Min Days1Delivery takes at least 1 day.
Transit Time Max Days5Delivery takes a maximum of 5 days.

Merchant return policy

The return policy section is responsible for generating hasMerchantReturnPolicy in offers. Data is added only when the section is enabled and has the required values.

FieldMeaningValues
Show Merchant Return PolicyEnables generation of hasMerchantReturnPolicy.Yes, No
Return Policy CountryCountry where the return policy applies.Country code from the Magento list; if empty, the country from the Organization section is used.
Return Policy CategoryReturn policy type.Finite Return Window, Returns Not Permitted, Unlimited Return Window
Merchant Return DaysNumber of days for returns.Integer; required for Finite Return Window.
Return MethodSupported return method.-- Empty --, Return By Mail, Return In Store, Return At Kiosk
Return FeesInformation about return fees.-- Empty --, Free Return, Customer Responsibility, Return Shipping Fees
Return Shipping FeeReturn shipping fee amount.Number greater than 0; required only for Return Shipping Fees.

Values for the Return Policy Category field:

ValueJSON-LD valueMeaning
Finite Return Windowhttps://schema.org/MerchantReturnFiniteReturnWindowReturns are possible for a specified number of days. Requires Merchant Return Days.
Returns Not Permittedhttps://schema.org/MerchantReturnNotPermittedReturns are not permitted.
Unlimited Return Windowhttps://schema.org/MerchantReturnUnlimitedWindowReturns are possible without a specified day limit.

Values for the Return Method field:

ValueJSON-LD valueMeaning
-- Empty --no valueThe return method is not added to JSON-LD.
Return By Mailhttps://schema.org/ReturnByMailReturn by mail.
Return In Storehttps://schema.org/ReturnInStoreReturn in a physical store.
Return At Kioskhttps://schema.org/ReturnAtKioskReturn at a point/kiosk.

Values for the Return Fees field:

ValueJSON-LD valueMeaning
-- Empty --no valueFee information is not added to JSON-LD.
Free Returnhttps://schema.org/FreeReturnThe return is free.
Customer Responsibilityhttps://schema.org/ReturnFeesCustomerResponsibilityThe customer bears the return cost.
Return Shipping Feeshttps://schema.org/ReturnShippingFeesThe return has a specified return shipping fee. Requires Return Shipping Fee.

The currency of the Return Shipping Fee field is taken from the product offer currency.

Custom Properties

The Custom Properties field lets you add custom properties to product JSON-LD.

Format:

wlasciwosc_jsonld,kod_atrybutu

If only one element is provided, the module treats it both as the JSON-LD property name and the attribute code.

Default value:

skumpn,sku

Meaning of the default value:

LineEffect
skuAdds sku based on the sku attribute.
mpn,skuAdds mpn based on the sku attribute.

Example of adding a custom attribute:

color,colormaterial,material

Recommended minimum configuration for products

To reduce Google Search Console warnings for product data, configure at least:

FieldRecommendation
Product Rich Data > EnabledYes
Show AvailabilityYes
BrandSelect the attribute containing the product brand.
EAN / GTIN AttributeSelect the attribute containing EAN / GTIN if the products have a global identifier.
Show Shipping DetailsYes, if the store has a uniform shipping policy that can be described in the configuration.
Show Merchant Return PolicyYes, if the store has a uniform return policy that can be described in the configuration.
Custom PropertiesKeep at least sku; optionally add mpn if the store has such an identifier.

Clearing cache after configuration changes

After changing the configuration, run:

php bin/magento cache:flush

If the store uses additional HTTP cache, Varnish, or a CDN, also clear those cache layers.

Verifying operation

  1. Open a product page on the frontend.
  2. Check the page source and find:
               
Products