Orange Collar Media
Orange Collar Media
DOCS
OCMLABS/MODULE-SEO · INSTALLATION

Installing SEO Suite and scoring your catalog for the first time

  • Magento
  • Adobe Commerce
  • Hyvä

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-hyva companion 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.

Terminal window
composer require ocmlabs/module-seo
bin/magento module:enable OCMLabs_Seo
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

Adobe 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:

Terminal window
composer require ocmlabs/module-seo-hyva
bin/magento module:enable Hyva_OCMLabsSeo
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

It 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:

Terminal window
bin/magento setup:static-content:deploy -f
bin/magento cache:flush

Verify the installation

Terminal window
bin/magento module:status OCMLabs_Seo

The 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:

Terminal window
bin/magento ocmlabs:seo:rescore

It 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:

Terminal window
bin/magento cron:install
crontab -l # as the web server user; should show a bin/magento cron:run line

If 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:

JobScheduleBehavior
ocmlabs_seo_rescore_changedDaily, 03:00Re-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

  1. Review the settings. Open Stores > Configuration > OCM Labs > SEO and look through Meta Templates, Robots, Canonical, Hreflang, and Structured Data. See System Settings.
  2. 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.
  3. 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.
  4. Score the catalog with bin/magento ocmlabs:seo:rescore.
  5. 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

Terminal window
bin/magento module:uninstall OCMLabs_Seo --remove-data

With --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.