Product Health Scoring, filter-blind detection, and a revenue-weighted Catalog Health Index — know exactly which products are hurting your conversion rate before your customers find out.
composer require magendoo/module-catalog-quality
Every product gets a 0–100 score and an A–E letter grade based on two axes: Enrichment (are the important attributes filled in?) and Consistency (do they meet your content rules?). Instantly see which products are dragging down your catalog.
A single revenue-weighted number that summarises catalog quality across your entire store. Weights products by 90-day revenue so that gaps on your best-sellers count more than gaps on slow movers. Nightly snapshots power a 30-day trend chart on the dashboard.
Flags every product that has no value for a filterable attribute — products that vanish completely when shoppers use category filters in layered navigation. Red chips in the Gap List show exactly which filterable attributes are causing each product to disappear.
A heatmap of attribute fill rates per category, colour-coded from green (≥90%) to red (<35%). Click any cell to open the Gap List pre-filtered to exactly those products — the fastest path from diagnosis to action.
P1–P4 and Ignore priority levels, configurable per attribute, attribute set, and category. Filterable attributes auto-floor at P2. An inline-editable grid lets you adjust priorities without leaving the listing — no developer required.
6 REST endpoints for scores and priority rules. CLI commands for full reindex, single-SKU debugging, and CSV export. Incremental MView updates mean products are re-scored on save — no nightly full reindex needed.
composer require magendoo/module-catalog-quality
bin/magento module:enable Magendoo_CatalogQuality
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f
bin/magento cache:flush
app/code/Magendoo/CatalogQuality/After installation, run the full indexer to score all products. This may take several minutes on large catalogs — batch size is configurable under Stores → Configuration → Magendoo Extensions → Catalog Quality → Performance.
bin/magento indexer:reindex magendoo_cq_product_score
Then navigate to Catalog Quality in the top-level admin menu to see the dashboard, Product Gap List, Filter Coverage Matrix, and Attribute Priorities.
All endpoints require an admin bearer token. Authenticate with POST /V1/integration/admin/token.
| Method | Endpoint | Description |
|---|---|---|
GET | /V1/catalog-quality/scores/:sku | Quality score for a single SKU |
GET | /V1/catalog-quality/gaps | List gap records with search criteria support |
POST | /V1/catalog-quality/priorities | Create or update a single priority rule |
POST | /V1/catalog-quality/priorities/bulk | Bulk upsert priority rules |
GET | /V1/catalog-quality/priorities | List all priority rules |
DELETE | /V1/catalog-quality/priorities/:id | Delete a priority rule |
Navigate to Stores → Configuration → Magendoo Extensions → Catalog Quality.
| Setting | Default | Description |
|---|---|---|
| Enabled | Yes | Master switch for the module |
| Revenue-weighted CHI | Yes | Weight the Catalog Health Index by 90-day product revenue. Disable for equal-weight averaging. |
| Indexer Batch Size | 500 | Products scored per batch during full reindex. Reduce on low-memory servers. |
| Snapshot Retention | 90 days | How long nightly CHI snapshots are kept before automatic cleanup. |
| Screen | Description |
|---|---|
| Dashboard | CHI score, grade distribution, filter-blind product count, 30-day trend chart |
| Product Gap List | All scored products with grade, PHS, gap counts, and filter-blind chips. Filterable by grade and filter-blind status. |
| Filter Coverage Matrix | Heatmap of filterable attribute fill rates per category. Click-through to filtered Gap List. |
| Attribute Priorities | Inline-editable P1–P4/Ignore priority rules per attribute, attribute set, and category. |
Every module is built for production, but every store is different. If you need integration, customization, or enterprise support — let's talk.
Get in Touch GitHub