Installing SEO Suite and scoring your catalog for the first time
Requirements
- Magento Open Source or Adobe Commerce 2.4.7 - 2.4.9 (
magento/framework>=103.0.7 <103.0.10); 2.4.10 and later are blocked by a Composer conflict rule - PHP 8.2, 8.3, or 8.4
- Luma, or Hyva with the
ocmlabs/module-seo-hyvacompanion package - A working Magento cron if you want the nightly re-scoring - see Set up cron
Install via Composer
Composer access to the package is granted with purchase through the OCMLabs Packagist repository, the same as the other OCM Labs modules. The license is $500 for Magento Open Source (ocmlabs/module-seo) and $999 for Adobe Commerce (ocmlabs/module-seo-commerce); pick the edition on the product page at checkout. Each license includes 12 months of updates and support, and renewing for another year costs the full license price.
composer require ocmlabs/module-seobin/magento module:enable OCMLabs_Seobin/magento setup:upgradebin/magento setup:di:compilebin/magento cache:flushAdobe Commerce customers instead run composer require ocmlabs/module-seo-commerce. It is a metapackage that licenses the module for Adobe Commerce and pulls in ocmlabs/module-seo automatically. The remaining bin/magento steps are identical, and both packages install the same module.
composer require resolves only if the OCMLabs Packagist repository is in your project’s composer.json with the access key from your purchase.
Hyva stores
Stores on a Hyva theme also install the companion package:
composer require ocmlabs/module-seo-hyvabin/magento module:enable Hyva_OCMLabsSeobin/magento setup:upgradebin/magento setup:di:compilebin/magento cache:flushIt registers the module with Hyva’s compatibility fallback and stops Hyva’s own breadcrumb JSON-LD from rendering while SEO Suite’s structured data is on, so a page never carries two BreadcrumbList blocks. It adds no settings of its own. The SEO panel lives in the Magento admin, which is the same on Luma and Hyva stores, so the companion covers storefront output only.
On a store in production mode, also deploy static content so the SEO panel’s admin components are current:
bin/magento setup:static-content:deploy -fbin/magento cache:flushVerify the installation
bin/magento module:status OCMLabs_SeoThe output should read Module is enabled. In the admin, check for:
- Marketing > SEO & Search > SEO Dashboard - scores and flags for the whole catalog
- Stores > Configuration > OCM Labs > SEO - module settings
- The SEO Score panel on any product, category, or CMS page edit screen, above Magento’s own Search Engine Optimization section
The module creates one table, ocmlabs_seo_entity, and is enabled by default with storefront output on.
Grant admin access
ACL resources live under Marketing > OCM Labs SEO in System > Permissions > User Roles:
- OCMLabs_Seo::dashboard - view the SEO Dashboard
- OCMLabs_Seo::dashboard_manage - the dashboard’s Re-score and Set Robots mass actions (nested under the dashboard)
- OCMLabs_Seo::analyze - Live Analysis: the SEO panel and its analysis requests
- OCMLabs_Seo::config - the configuration section
A user without Live Analysis does not see the panel, and Magento’s own SEO section works for them exactly as before.
Score your catalog
Pages are scored when they are saved, so on a new install the dashboard would show “Not scored” for everything nobody has opened. Run the bulk scorer once:
bin/magento ocmlabs:seo:rescoreIt works through products, categories, and CMS pages in batches of 500 with a progress bar. See SEO Dashboard for the options.
Set up cron
A nightly job re-scores anything changed since its last score, and anything with no score. It needs Magento cron:
bin/magento cron:installcrontab -l # as the web server user; should show a bin/magento cron:run lineIf your hosting runs cron another way (a container sidecar, a Kubernetes CronJob, a supervisor loop), make sure it invokes bin/magento cron:run. The job is in the default cron group:
| Job | Schedule | Behavior |
|---|---|---|
ocmlabs_ | Daily, 03:00 | Re-scores pages changed since their last score, plus pages with no score. Does nothing while the module is switched off. |
Without cron, the panel, save-time scoring, and every storefront feature still work. Only the nightly catch-up is lost.
First steps
- Review the settings. Open Stores > Configuration > OCM Labs > SEO and look through Meta Templates, Robots, Canonical, Hreflang, and Structured Data. See System Settings.
- Map structured data. In Structured Data, enter the attribute codes that hold your brand, GTIN, and MPN, and your organization name, logo, and profile URLs.
- Flush the full page cache. Changes to meta templates, robots, canonical, and hreflang settings appear on cached pages only after a flush:
bin/magento cache:flush, or System > Cache Management. - Score the catalog with
bin/magento ocmlabs:seo:rescore. - Try the panel. Open a product, type a focus keyword, and watch the score and checklist update.
If you already use another SEO extension
Extensions such as Amasty or MageWorx SEO that also set canonical tags or robots values will conflict with this module. Switch off the overlapping feature in one of the two. If your store already outputs Product or Organization JSON-LD from another module, turn off Enable JSON-LD here, or retire the other module, before running both.
Uninstalling
bin/magento module:uninstall OCMLabs_Seo --remove-dataWith --remove-data the module removes its own table, its configuration rows, and its cron timestamp. Products, categories, and CMS pages are left exactly as they are, because titles, descriptions, and keywords never left Magento’s own fields.