
CatCode SEO Pack — SEO Module for OpenCart 2.3, 3.x and 4.x
All of a shop's SEO in one OpenCart 3 and 4 module: meta tags, sitemap, structured data, redirects with a 404 log, clean URLs by transliteration and a catalogue audit.
- Compatibility
- OpenCart 2.3.0.x, 3.0.3 – 3.0.5.0 and 4.0.2 – 4.1.x
- Version
-
v2.0.4 (OpenCart 4)
v2.2.1 (OpenCart 3.x)
v2.2.1 (OpenCart 2.3) - Licence
- two sites, lifetime
- Trial
- 7 days, no card, one per site
- Updated
- 26.10.2026
The module in action — 40 sec
Clear even without sound: Ukrainian subtitles
What Free has,
and what Pro adds
The free version works with no time limit. Pro adds the rest of the features in the table.
Key points
XML sitemap
An index plus separate files by type, with product images, and hreflang alternates for multilingual shops as well (on OpenCart 3 and 2.3 since version 2.2.0, when the language is part of the page address).
Structured data for Google
JSON-LD with Product and Offer — name, SKU, brand, image, and exactly the price the shopper sees: with any promotion applied, in the storefront currency, with stock availability.
Redirects and the 404 log (Pro)
Every address that isn’t found lands in the log along with the referrer and a hit counter — rules are written from facts, not guesswork.

The trial starts when you ask
A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — two sites
Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. For studios — keys for 5 or 25 sites, or unlimited.
Technical requirements
OpenCart 2.3.0.x, 3.0.3 – 3.0.5.0 and 4.0.2 – 4.1.x
Version history
301 redirects now fire for visitors from ads and newsletters too.
Language versions: when the shop language is part of the page address (ocStore SEO Pro, a /ru/ language-prefix extension), the sitemap lists every language version with hreflang alternates…
Licence: the “Save” button no longer resets the purchased-licence mark, the trial now ends correctly after 7 days, and “Release the licence” removes Pro from this site.
All versions (4)
An XML sitemap, structured data for Google, redirects and a 404 log, SEO URLs by transliteration, meta tag templates, catalogue audit; builds for OpenCart 3 and OpenCart 4; works with no core patches.
Frequently bought with CatCode SEO Pack
4 modules in one order — 40% cheaper than separately


Nova Poshta Premium — a Nova Poshta module for OpenCart 2.3, 3.x and 4.x

LiqPay — Card Payments for OpenCart 2.3, 3.x and 4.x

Telegram notifications and Viber/SMS for customers for OpenCart
Full module description
CatCode SEO Pack for OpenCart 2.3, 3.x and 4.x — all of a shop’s SEO in one module: an XML sitemap, structured data for Google, a canonical on filters, meta tag templates, redirects with a 404 log, bulk SEO-URL generation by transliteration, and a catalogue audit.
XML sitemap
An index plus separate files by type, with product images, and hreflang alternates for multilingual shops as well (on OpenCart 3 and 2.3 since version 2.2.0, when the language is part of the page address). Rows are read page by page, and the sitemap is split into separate part files, so a catalogue of 100,000 items doesn’t assemble a 30-megabyte string in memory. Only what the shopper can see goes into the map: enabled items in the current shop, once their availability date has arrived.
Structured data for Google
JSON-LD with Product and Offer — name, SKU, brand, image, and exactly the price the shopper sees: with any promotion applied, in the storefront currency, with stock availability. AggregateRating is only added when there are approved reviews: a made-up rating is the fastest way to lose a rich snippet. Plus BreadcrumbList, Organization with social profiles, and WebSite with a search box on the homepage.
Redirects and the 404 log (Pro)
Every address that isn’t found lands in the log along with the referrer and a hit counter — rules are written from facts, not guesswork. A log row turns into a redirect with one click, and wildcard masks for a whole branch (blog/*) are supported. The response is returned before the shop even starts building a page, so the rule also works for addresses that no longer exist in the catalogue.
SEO URLs by transliteration (Pro)
Bulk generation of clean URLs using the Ukrainian KMU 55/2010 transliteration standard, separately for each language: the Ukrainian page gets a Ukrainian link, the English one an English link. OpenCart 2.3 stores one keyword per product for all languages, so there the link is shared. On OpenCart 4, the run also creates the missing route rows for languages that lack them — those missing rows are usually exactly why a clean URL on a second language silently returns the home page.
Catalogue audit (Pro)
Duplicate titles and descriptions, empty and overly long descriptions, products with no clean URL, no image, or a too-short description — each issue comes with a count and the first ten pages that need fixing.
Three builds: OpenCart 2.3, 3 and 4
Each OpenCart version gets its own build, not a “compatible” compromise. The functionality is the same; the difference is only where the platform differs: in stock OpenCart 3 and 2.3 the language is stored in the session, not the address, so all language versions of a page share one address and the sitemap is single-language. When the language is in the address (on OpenCart 3, ocStore SEO Pro or a language-prefix extension such as /ru/; on OpenCart 2.3, a language-prefix extension), the module detects it since version 2.2.0 and adds hreflang with x-default to the sitemap and to the page <head>. The clean URL keyword must be unique within the shop rather than the language in OpenCart 3, and in OpenCart 2.3 there is one keyword for all languages. Redirects in OpenCart 3 and 2.3 are wired through the generic controller event, because the pre-actions of these versions provide no events.
Meta tag templates
Meta tags are described with a formula using placeholders — product name, category, manufacturer, model, SKU, price, an attribute or option value, shop name, year, page number. In Pro, rules can be narrowed by category, manufacturer and language with a managed priority. Generation runs in batches with a progress bar (up to 200 rows per run without a key); in Pro every run is stored in history and rolls back with one click.
Why a shop needs this
SEO for OpenCart is usually pieced together from four or five separate modules: a sitemap from one author, structured data from another, redirects from a third. They fight over the same spots in the template, and half of it breaks after a shop update.
Here it’s all gathered into one module with a single settings screen — and, crucially, a single point of responsibility for compatibility.
How it works, step by step
1. You turn on the blocks you need: sitemap, structured data, redirects, meta tag templates, URL transliteration.
2. You set title and description templates from product variables — for the whole catalogue at once.
3. You run a catalogue audit (Pro): the module shows empty, overly long and duplicate meta tags, and products with no clean URL, no image or a too-short description.
4. You fix what was found, and keep an eye on the 404 log (Pro) afterwards to set redirects for real traffic losses.
Under the hood
The module doesn’t patch the core — everything runs through OpenCart’s standard events, so a shop update doesn’t wipe out its changes, and removing it leaves no trace in the files.
The sitemap is generated on the fly on every request, rather than a static file you’d have to rebuild by hand after every catalogue change.
How to install
1. Upload the archive via “Extensions → Installer” and install the module.
2. Turn on the blocks you need — not necessarily all at once.
3. Run a catalogue audit and look at the list of issues.
4. Add the sitemap to Search Console.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
What exactly works with no key?
The sitemap, structured data, canonical and robots, and meta tag templates with a limit of 200 rows per run. Pro removes the limit and adds rules, redirects, clean URL generation and an audit.
Will the module overwrite my hand-written meta tags?
Only if you choose the "Overwrite all" mode yourself. By default only empty fields are filled in, and every run can be rolled back.
Is the sitemap available at /sitemap.xml?
Yes, the documentation includes a rule for Apache and nginx. Without it, the sitemap works at the module's direct address — a shop with no access to server configuration isn't left without a sitemap.
Why does a clean URL on the second language return the home page?
OpenCart only creates route rows for the installation language. The module adds them for the other languages itself during generation.
Will it hold up on a catalogue of 20,000 products?
Yes. Generation runs in batches with a progress bar, and the sitemap is streamed out without assembling the whole XML in memory.
Does the licence need renewing?
No. For OpenCart the licence is perpetual: one payment, and the Pro features stay with you. Only the 7-day trial ends — after it Pro switches off and the free version keeps working.
No reviews yet. Be the first.
No questions yet. Ask one — we answer within 24 hours.
Not quite what you are looking for?
We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.
Order a custom module
Buying the module
—



