The Home for Magento 2 Excellence

Quality-tested Magento 2 modules. Explore. Evaluate. Elevate. #magento2

1090 Modules
618 Ready
472 Need Help
🏆 Leaderboard
Actively Maintained v1.2.0

Angeo Rich Data

angeo/module-rich-data

Injects spec-compliant JSON-LD structured data into Magento 2 — Product (with offers and AggregateRating), Organization, WebSite with SearchAction, BreadcrumbList, and auto-detected FAQPage schema on CMS pages — all configurable from the admin.

11
Downloads
Below average
5
GitHub Stars
Below average
7d ago
Last Release
0
Open Issues
Build Passing
Ready to install

Build Tests

Composer Install
DI Compile
Templates

Code Quality

CS Coding Standard
113 warnings
L1 PHPStan

Tested on Magento 2.4.9

Recent Test History

Each release is tested against the latest Magento version at that time.

v1.2.0 on Magento 2.4.9
Jun 14, 2026
v1.0.2 on Magento 2.4.9
Jun 7, 2026
v1.0.0 on Magento 2.4.9
Jun 1, 2026

Share This Module's Status

Angeo Rich Data Magento compatibility status badge

README

Loaded from GitHub

Angeo Rich Data — Magento 2

Fixes the "Product schema — JSON-LD structured data" signal in angeo/module-aeo-audit. Injects spec-compliant JSON-LD on product pages, CMS pages, and homepage.


What this module fixes

AEO Audit signal Before After
Product schema — JSON-LD structured data FAIL / WARN PASS
FAQPage schema — AI answer eligibility WARN PASS (on FAQ CMS pages)
Merchant policies — return & shipping schema FAIL PASS (when enabled & configured)
Product schema — AggregateRating WARN PASS (when reviews exist)
JSON-LD quality — BreadcrumbList WARN PASS (now rendered on product pages)

Schema types injected

Schema Pages Key fields
Product All product pages name, description, image, sku, gtin/mpn, offers.price, offers.priceCurrency, offers.availability, offers.hasMerchantReturnPolicy, offers.shippingDetails, aggregateRating
Organization All pages name, url, logo, sameAs, contactPoint
WebSite Homepage only name, url, potentialAction/SearchAction
BreadcrumbList Product pages category path
FAQPage CMS pages with FAQ content auto-detected Q&A pairs

Installation

composer require angeo/module-rich-data
bin/magento setup:upgrade
bin/magento cache:flush

Configuration

Stores → Configuration → Angeo → Rich Data (JSON-LD)

Product schema

  • Enable/disable
  • Include AggregateRating (from Magento reviews)
  • Include BreadcrumbList
  • Include SKU
  • Include Brand (configurable attribute)
  • Include GTIN / MPN (configurable attributes)
  • Item condition (New/Used/Refurbished)
  • In-stock / out-of-stock availability URLs

Merchant policies (return & shipping)

Injects offers.hasMerchantReturnPolicy and offers.shippingDetails — required by Google & ChatGPT Shopping since Jan 2026. Disabled by default; enable and fill in your real values.

  • Return policy: enable, return window (days), applicable country, return fee
  • Shipping details: enable, flat shipping rate, destination country, handling time (min/max days), transit time (min/max days)

Organization schema

  • Organization name (default: store name)
  • Logo URL
  • sameAs social URLs (comma-separated)
  • Contact telephone + type

WebSite schema

  • Enable/disable
  • Include SearchAction (Sitelinks Searchbox)

FAQPage schema

  • Enable/disable — auto-detected from CMS page content

FAQ page markup (recommended)

Add data-faq-question / data-faq-answer attributes to your CMS FAQ page for explicit Q&A detection:

<div data-faq-question="What is your return policy?"
     data-faq-answer="We offer 30-day returns on all items in original condition.">
</div>

Without these attributes the module uses heuristic detection: <h2>/<h3> followed by <p> are treated as question/answer pairs.


Extending with custom schemas

Implement Angeo\RichData\Api\Data\SchemaInterface and register via di.xml:

<type name="Angeo\RichData\Model\JsonLd\Renderer\SchemaRenderer">
    <arguments>
        <argument name="builders" xsi:type="array">
            <item name="my_schema" xsi:type="object">Vendor\Module\Model\JsonLd\Builder\MySchemaBuilder</item>
        </argument>
    </arguments>
</type>

CLI validation

# Validate on random product
bin/magento angeo:rich-data:validate --store=en_us

# Validate specific product on specific store
bin/magento angeo:rich-data:validate --store=en_us --product-id=42

Output example:

Validating JSON-LD for: [42] Alpine Hiking Jacket
  Store:   default
  URL:     https://mystore.com/alpine-jacket

Found 3 JSON-LD block(s):
  Block 1: @type:Organization — valid JSON ✓
  Block 2: @type:Product — valid JSON ✓
    PASS aggregateRating present
  Block 3: @type:BreadcrumbList — valid JSON ✓

All JSON-LD blocks are valid.

The Angeo AI Suite

Module Purpose
angeo/module-aeo-audit AEO audit — detects missing schema
angeo/module-rich-data This module — fixes missing schema
angeo/module-llms-txt Generates /llms.txt
angeo/module-openai-product-feed-api ACP REST API for ChatGPT Shopping

License

MIT — see LICENSE

This content is fetched directly from the module's GitHub repository. We are not the authors of this content and take no responsibility for its accuracy, completeness, or any consequences arising from its use.