OpenCart · Self-hosted ecommerce

OpenCart SEO audit: the issues built into OpenCart — and how to fix them

A OpenCart SEO audit checks your store across search, AI visibility, accessibility and security — with a fix for each issue we find.

A lightweight open-source cart. Simple to run — but several SEO essentials are off by default, so stock OpenCart stores leak duplicate URLs.

How does OpenCart's architecture shape your SEO?

OpenCart is self-hosted and deliberately lightweight, which means a lot of SEO hygiene is opt-in. By default it serves ugly query-string URLs (index.php?route=…), SEO URLs and per-product SEO keywords must be switched on manually, and it doesn't emit canonical tags or structured data on its own. The result is that a default install exposes the same product under both the SEO URL and the route URL, with no canonical to reconcile them. Most fixes are admin toggles plus a few extensions for schema and canonicals.

Reference: OpenCart SEO documentation →

What issues show up most on OpenCart sites?

Why these happen on OpenCart

Specific to how OpenCart is built — not generic checklist advice.

SEO

SEO URLs are off by default

Until you enable SEO URLs and set an SEO keyword on each product/category, OpenCart serves index.php?route= URLs that are unfriendly and non-descriptive. Enable SEO URLs and populate keywords across the catalog.

SEO

Duplicate route URLs with no canonical

Even with SEO URLs on, the underlying route URLs often remain reachable, and OpenCart doesn't add canonical tags by default — so the same product is indexable at two addresses. Add canonical tags (via extension or template edit) pointing to the SEO URL.

AEO

No structured data out of the box

Stock OpenCart emits no Product/Offer JSON-LD. Without an extension or template change, your products have no structured data for rich results or AI shopping answers. Add Product schema with price and availability bound to your catalog data.

Fixes written for OpenCart

We catalog 68 OpenCart fixes — exact steps for OpenCart's admin and theme, each with a link to the official docs.

Duplicate meta descriptionSEO

Write a unique, page-specific meta description for every page on your store so Google can display a compelling, accurate snippet for each one in search results.

On OpenCart
  1. 1For a product: go to Catalog → Products, edit the product, open the 'SEO' tab, and fill in the 'Meta Tag Description' field.
  2. 2For a category: go to Catalog → Categories, edit the category, open the 'SEO' tab, and fill in 'Meta Tag Description'.
  3. 3For information/CMS pages: go to Design → Information, edit the page, and fill in 'Meta Tag Description'.
  4. 4Install an SEO extension from the OpenCart Marketplace (e.g. 'SEO Pack' or 'Ultimate SEO') for bulk editing capabilities.
  5. 5After saving, clear the OpenCart cache via Dashboard → Settings (wrench icon) → Refresh or by deleting the /system/storage/cache/ folder via FTP.
  6. 6Verify the new description appears in page source, and submit to Google Search Console.
Code · Generic HTMLhtml
<head>
  <meta charset="UTF-8">
  <meta name="description" content="Shop women's running shoes at Acme Store — lightweight, cushioned designs for road and trail. Free shipping on orders over $50.">
  <title>Women's Running Shoes | Acme Store</title>
</head>

Place inside the <head> element of every page. Replace the content value with a unique 120–160 character description for that specific page.

OpenCart docs →
Duplicate titleSEO

Give every page a unique, descriptive title tag that accurately reflects that page's specific content.

On OpenCart
  1. 1For products: go to Catalog → Products → edit a product → 'SEO' tab → enter a value in 'Meta Tag Title'.
  2. 2For categories: Catalog → Categories → edit a category → 'SEO' tab → 'Meta Tag Title'.
  3. 3For information pages: Catalog → Information → edit a page → 'Meta Tag Title'.
  4. 4For the default title on the homepage and layout: System → Settings → your store → 'Meta Tag Title'.
  5. 5Install an SEO extension from the OpenCart marketplace (e.g. SEO Pack Pro) to manage bulk title updates and set dynamic title templates across your catalog.
Code · Generic HTMLhtml
<head>
  <title>Merino Wool Running Socks – Free UK Shipping | BrandName</title>
</head>

Place inside <head>. Make the title unique per page — include the specific item name and brand.

OpenCart docs →
Faceted url indexableSEO

Point the rel=canonical on every faceted/filter URL to its clean parent category URL (or add noindex), so Google treats filtered pages as a single authoritative page instead of thousands of duplicates.

On OpenCart
  1. 1OpenCart category pages with filters append query strings like ?filter_color=10&filter_size=5 to category URLs.
  2. 2Install an SEO extension from the OpenCart marketplace that supports canonical tag management (e.g., 'SEO Pack Pro', 'D_SEO Module') — these allow you to define that filtered category URLs should output a canonical pointing to the base category URL.
  3. 3Without an extension: edit the catalog/view/theme/[your-theme]/template/product/category.tpl (or .twig in newer OpenCart) file. Find or add the canonical tag in the <head> section and output the base category URL without filter params: <link rel='canonical' href='<?php echo $category_url; ?>'> — where $category_url is the clean category URL passed from the controller.
  4. 4In catalog/controller/product/category.php, ensure the $data['canonical'] variable is set to the clean category URL (without filter params) and pass it to the template.
  5. 5Verify with Google Search Console URL Inspection.
Code · Generic HTMLhtml
<head>
  <!-- Canonical points to the CLEAN category URL, not the filtered variant -->
  <link rel="canonical" href="https://www.example.com/womens-pants">
</head>

Place this in the <head> of every filtered/faceted page. The href must be the clean parent category URL — never the filtered URL itself.

OpenCart docs →
Images missing altSEO

Add descriptive alt text to every product and content image so search engines and screen readers can understand what the image shows.

On OpenCart
  1. 1FOR PRODUCT IMAGES: Admin > Catalog > Products > open a product > Image tab. The main image alt text is pulled from the Product Name by default; for gallery images, there is no native alt field — install the 'Image Alt Tag' extension from the OpenCart marketplace to add per-image alt fields.
  2. 2FOR CMS/BANNER IMAGES: Admin > Design > Banners > edit banner > fill in the 'Title' field, which renders as the alt attribute.
Code · Generic HTMLhtml
<!-- BEFORE (missing alt — bad) -->
<img src="/images/red-leather-bag.jpg">

<!-- AFTER (descriptive alt — correct) -->
<img src="/images/red-leather-bag.jpg" alt="Red leather crossbody bag with gold buckle clasp">

<!-- Decorative image (intentionally empty alt — correct) -->
<img src="/images/divider-line.png" alt="">

Place this wherever an <img> tag appears in your HTML. Replace the placeholder text with your real description.

OpenCart docs →

Browse all 68 OpenCart fixes →

How AI reads OpenCart sites · AEO

49% of OpenCart sites publish structured data

JSON-LD is the schema.org markup AI answer engines read to understand — and cite — a page. But 1.8% of OpenCart sites add it only after JavaScript runs, so non-JS AI crawlers never see it. SEOLZ checks whether your structured data is present, valid, and visible to AI.

49%
publish JSON-LD
65%
have Open Graph
1.8%
JSON-LD only via JS

Source: HTTP Archive — structured-data probes on static + rendered HTML across 31,945 OpenCart sites.

The typical OpenCart site · HTTP Archive

How OpenCart sites measure up

Performance — median

2.6 MB
page weight
74
requests
8.9s
load time

Accessibility gaps — share of sites

70%
empty image alt
85%
unlabelled fields
24%
non-semantic controls

Source: HTTP Archive lab performance + accessibility probes across 31,945 OpenCart sites. SEOLZ measures your site against these.

Every scan checks all six pillars

You can't rank what AI can't read. SEO, AEO, and GEO tell you where you rank; WCAG, OWASP, and Lifecycle determine whether search and AI can read and trust you at all. SEOLZ scores all six as one system.

🔍
SEO

Your catalog pages may be invisible to Google right now and you'd have no way to know. Indexability gaps, canonical conflicts, and faceted navigation issues silently kill organic traffic — we surface every one and tell you which to fix first.

Learn how to fix SEO issues →
✨
Answer Engine (AEO)

When someone asks ChatGPT to recommend a product in your category, is your store in the answer? Often it isn't. We check the structured data, page structure, and brand signals that help search and AI understand your products and describe them accurately — and we measure whether they actually cite you, or a competitor.

Learn how to fix Answer Engine (AEO) issues →
🌐
AI Visibility (GEO)

AI search is eating traditional organic traffic. We track your actual brand mentions across ChatGPT, Perplexity, and other AI engines — and tell you what's pushing you down in the results.

Learn how to fix AI Visibility (GEO) issues →
♿
Accessibility (WCAG)

Ecommerce stores are among the most frequent recipients of ADA accessibility demand letters. We run WCAG 2.1 AA checks across your catalog, surface the barriers that most often appear in demand letters, and track each one through to a verified fix.

Learn how to fix Accessibility (WCAG) issues →
🛡️
Security (OWASP)

A missing security header exposes your customers, and a compromised or flagged site loses search visibility fast. We check the server configuration, HTTPS setup, and email authentication issues that erode trust — before they become an incident.

Learn how to fix Security (OWASP) issues →
⏳
Site Lifecycle

SSL expires. Plugin versions fall behind. GTM containers go unverified. These aren't hypothetical risks — they're the operational failures that cause outages, ranking drops, and security incidents. We catch them before they happen.

Learn how to fix Site Lifecycle issues →

Start free. Upgrade when ready.

Scout
Free
1 site · 50 pages/audit · monthly audits
6-pillar welcome scan
  • ✓Composite + pillar scores
  • ✓Issue counts
  • ✓Recurring five-pillar re-scan
  • ✓Free forever
Start free
Starter
$49/mo
1 site · 500 pages/audit · weekly audits
All 6 pillars
  • ✓Every finding across all 6 pillars, with step-by-step fixes for your platform
  • ✓Template fixes: fix it once, clear it on every page built from that template
  • ✓Fix tracking: mark it fixed and the next audit confirms it
  • ✓Email alerts for score drops, new security issues, and SSL / domain expiry
  • ✓Report builder with PDF, HTML and Markdown export
  • ✓GTM & tracking audit, plus Search Console topic gaps
Choose Starter

Questions about OpenCart audits

Does SEOLZ work with OpenCart?+

Yes — we crawl your live OpenCart store and write fixes for the OpenCart admin (SEO settings, keywords) and template/extension changes where needed.

Why does OpenCart show two URLs for the same product?+

Because SEO URLs sit on top of the original index.php?route= URLs, and OpenCart adds no canonical by default. Both can be indexed. We flag the duplicates and how to canonicalise them.

Do OpenCart SEO fixes need a developer?+

The basics (enabling SEO URLs, setting keywords) are admin-level. Canonicals and structured data usually need an extension or a small template edit — we tell you which.

See what's holding back your OpenCart site

Free scan, no credit card, results in minutes. We've got you.

Scan My OpenCart Site Free