Troubleshooting a missing SEO panel, unchanged storefront tags, empty scores, and duplicate markup
The SEO panel does not appear on an edit screen
- Permission. The admin user’s role needs Marketing > OCM Labs SEO > Live Analysis (
OCMLabs_Seo::analyze). Without it, Magento’s own SEO section shows as before and the panel is hidden. - Switches. Both Enable SEO Module and Enable SEO Panel on Edit Screens under Stores > Configuration > OCM Labs > SEO > General must be Yes.
- Production mode. After installing or upgrading, run
bin/magento setup:static-content:deploy -fandbin/magento cache:flushso the panel’s admin components are deployed.
A settings change does not show on the storefront
Changes to meta templates, robots, canonical, hreflang, and structured data settings show on pages as they are generated. Pages already in the full page cache keep the old output until the cache is flushed: run bin/magento cache:flush or use System > Cache Management.
Changes to a single product, category, or page (robots, canonical, social fields) do not need a flush; the module cleans that page’s cache tag on save.
A meta template is not used
- The page has its own meta title or description. A value entered on the page always wins over the template.
- The template is empty at the store view’s scope. Check the field at each scope level.
- An
{{attribute:<code>}}variable renders nothing because the attribute is not visible on the storefront. Set Visible on Catalog Pages on Storefront to Yes, or use one of the always-allowed attributes. See Meta Templates.
The dashboard shows Not scored
Pages are scored when they are saved. Anything nobody has saved since install shows Not scored until you run:
bin/magento ocmlabs:seo:rescore --only-unscoredAfter that, the nightly ocmlabs_seo_rescore_changed job picks up new and changed items. If scores stay stale, check that Magento cron is running and that cron_schedule has recent ocmlabs_seo_rescore_changed entries with status success. The job does nothing while Enable SEO Module is No.
--store scores no CMS pages, because CMS pages have no store-view rows. Run without --store to score them.
The rescore command exits with an error
ocmlabs:seo:rescore exits with a non-zero status when any item fails to score, after finishing the rest. The failures are in var/log/ocmlabs_seo.log.
Readability checks are skipped
Reading ease and Sentence length run only on store views whose locale is English. On any other locale they are skipped, the panel says so, and they do not count toward the score. Paragraph length still runs. Readability checks are also skipped when the content has no text yet.
The score seems low for a good page
- No focus keyword: every keyword check is skipped and Focus keyword set fails, so the page practically cannot reach Good.
- The panel scores the page’s own meta title and description, not template output. A page that relies on a template is scored on its name and an empty description.
- Thresholds may not suit your content. Adjust them under Analysis, then re-run
bin/magento ocmlabs:seo:rescoreso existing scores reflect the new rules.
Remember that the score is guidance on common on-page practice, not a ranking prediction.
Two canonical tags, or a canonical you did not set
- With Manage Canonical Tags on, the module removes core’s canonical tag and adds its own. If a page still has two, another SEO extension is adding one after it. Switch off the canonical feature in one of the two.
- A page canonical you did not expect is usually the page’s own Canonical URL override, set at default or store view scope. Check both.
Duplicate structured data
- Product JSON-LD twice: another module outputs Product JSON-LD. Turn off Enable JSON-LD here, or retire the other module.
- Product microdata alongside JSON-LD: expected. Luma’s and Hyva’s product templates keep their own microdata, and Google accepts both.
- Two BreadcrumbList blocks on Hyva: install and enable the
ocmlabs/module-seo-hyvacompanion, which switches off Hyva’s own breadcrumb JSON-LD. - No Product node at all: a product with no valid price, rating, or review gets no Product markup, by design.
Hreflang is missing
- Enable Hreflang Alternates must be Yes at the store view’s scope.
- The page must exist in at least two store views.
- Filtered and paginated category pages and search results never get hreflang.
- Two store views on the same locale produce the same code, and a code is never emitted twice. Use Locale Override to give one of them a distinct code such as
en-GB.
The social preview shows no image for a product
The admin preview shows only the Social Image override. On the storefront, a product without one still shares its base image as og:image. Categories and CMS pages share no image unless you set one.
A Social Image or Canonical URL is rejected
- Social Image must be a path relative to the media folder, with no scheme, no leading slash, and no
..segment. - Canonical URL must be an absolute
http://orhttps://URL or a path starting with/.
Conflicts with other SEO extensions
Amasty, MageWorx, and similar suites that set canonical tags or robots values compete with this module for the same tags. Switch off the overlapping feature in one of the two.