How to connect OpenCart with easySales: a complete integration guide

Connect your OpenCart store with easySales in three steps — start the wizard in easySales and download the OpenCart module, install and refresh it in your OpenCart admin, then paste the token from easySales back into the module. Centralize orders, sync stock, generate invoices and AWBs automatically, and reuse the same catalog as offers on every marketplace you sell on.

Why connect OpenCart with easySales

Sell on OpenCart and want one place to manage orders, generate invoices, push AWBs to couriers, and reuse the same products as offers on marketplaces? easySales handles all of it from a single dashboard.

Once connected, easySales pulls products and options from OpenCart and centralizes incoming orders. From there you generate invoices, create AWBs with any supported courier, and turn those products into offers on eMAG, Allegro, Kaufland, Trendyol, and 80+ other channels. Stock and order status stay in sync in both directions.

You'll start the wizard in easySales, download the OpenCart module that matches your store version, install it in your OpenCart admin, then paste the token from easySales back into the module — no code, no FTP access, no theme changes.

How the OpenCart connector works

easySales connects to OpenCart through a small .ocmod.zip module you download from your easySales account and install through your OpenCart admin. The module exposes a private endpoint easySales calls to read your catalog and orders, and registers two webhooks so order and stock changes reach easySales in near real time.

The module never connects out. easySales talks to it, authenticated with a per-website token easySales generates. OpenCart database credentials, admin passwords, and gateway secrets stay inside your OpenCart install.

Which OpenCart versions easySales supports

easySales ships a separate module build for each major OpenCart version so the integration matches your store's API and admin layout:

  • OpenCart 1.5.6.4
  • OpenCart 2.0.0.0 – 2.1.0.2
  • OpenCart 2.2.0.0
  • OpenCart 2.3.0.0 – 2.3.0.2
  • OpenCart 3.0.0 – 3.0.2.0
  • OpenCart 4.0 – 4.1.0.3

The wizard picks the build when you choose your version. If you're on a patch release between two of these (for example 2.3.0.1), the build for the closest lower version applies. Forked OpenCart distributions and older 1.5.x patch levels are not officially supported — the module may install but admin paths can differ.

Interactive tour

Don't feel like reading? Take the interactive tour.

Interactive walkthrough — connect OpenCart with easySales

Prerequisites — what to prepare before you start

A few requirements keep products from being skipped at import.

OpenCart admin access

You need admin permissions on the store to install the module, refresh modifications, and read the generated token.

A supported OpenCart version

easySales ships builds for OpenCart 1.5, 2.0–2.1, 2.2, 2.3, 3.0, and 4.0. Forked distributions and unsupported patch levels may install but are not guaranteed.

Publicly reachable storefront

easySales calls your OpenCart store to read the catalog and orders, so the storefront must be reachable from the public internet — not behind HTTP basic auth, IP allow-lists, or a maintenance-mode page.

Unique SKU per product and saleable option

Two products with the same SKU collide — only one is imported. Audit and de-duplicate before connecting, including across option combinations sold separately.

Numeric stock per product

Stock has to be a numeric value on every product.

Step 1 — Start the wizard in easySales and download the module

In easySales, go to Integrations → Online Shops → Connect Website, then select OpenCart and pick your store version. The wizard opens on the Download Module step.

easySales Connect Website wizard on the Download Module step with OpenCart selected, the version picker visible, and the module download button highlighted
After selecting OpenCart and your version, the wizard opens on the Download Module step — click to download the matching `.ocmod.zip` archive.

Click the download button to grab the module archive (easysales.ocmod.zip or a version-specific filename like 2market-oc3x.ocmod.zip). Keep this tab open — you'll come back to it in Step 3 to finish the configuration.

Step 2 — Upload and install the module in OpenCart

In your OpenCart admin, go to Extensions → Installer. Click Upload, select the .ocmod.zip archive you just downloaded, and wait for the green "success" confirmation.

OpenCart admin Extensions → Installer screen with the Upload button highlighted and the easySales .ocmod.zip archive ready to upload
In OpenCart admin, open Extensions → Installer and upload the easySales `.ocmod.zip` archive.

Next, open Extensions → Extensions, filter by Modules in the top dropdown, find easySales in the list, and click the green Install (+) button. After install, click the blue Edit (pencil) button to open the module's settings — you'll see a Token field. Leave this tab open; you'll paste the token from easySales here in the next step.

Step 3 — Configure the site in easySales and paste the token in OpenCart

Return to your easySales tab — the wizard is now on the Configuration step and displays your generated token. Copy the token, switch back to OpenCart, and paste it into the Token field on the EasySales module edit page. Set Status to Enabled, leave the other defaults as they are, then click Save in OpenCart.

OpenCart admin EasySales module edit page with the token from easySales pasted into the Token field and Status set to Enabled
Paste the token from easySales into the Token field on the EasySales module edit page in OpenCart and set Status to Enabled.

Back in easySales, finish configuring the site. The form below the wizard collects everything easySales needs to drive the integration.

Website name and URL

  • Website name — a label you choose. Only visible inside easySales.
  • Website URL — your OpenCart storefront. Use the exact URL where OpenCart runs, including https:// and the www prefix if your domain uses it. If OpenCart lives in a subdirectory (example.com/shop), include it.

VAT and VAT for shipping

If you're a VAT payer, enter the rate for your products and a separate rate for shipping (e.g. 21 for the current Romanian standard rate). Leave blank if you're not. OpenCart's tax classes are not auto-detected — the rate you set here is what easySales uses on invoices and outbound marketplace offers.

Language and currency

Pick the storefront language (Romanian, Bulgarian, Hungarian, Polish, or English) and currency (RON, BGN, HUF, PLN, or EUR). These act as defaults for imported products and as a fallback when an order doesn't carry an explicit currency. They never override individual orders — each order keeps the currency OpenCart reported.

Product stock source

The most important decision on the form. It tells easySales where the authoritative stock value lives:

  • Website — OpenCart is the source of truth. easySales reads stock from OpenCart and never overwrites it.
  • easySales — easySales is the source of truth. Stock changes inside easySales (sales, manual edits, marketplace deductions) are pushed to OpenCart.
  • Connected integration — your stock lives in a third-party system already wired to easySales (billing software like SmartBill, Oblio, Fakturownia or FacturisOnline; an ERP such as NexusERP or Sedona; a fulfilment partner like Fulfillro or Huboxx; and many others). easySales reads stock from that integration and pushes it to OpenCart. Connect the integration and declare its warehouse first — you can't pick this option otherwise.

Running a multi-warehouse operation? Switch to Advanced warehouse mode. Instead of binding the store to one stock source, pick one or more easySales warehouses and define how their stock is aggregated, prioritized, or split per channel. The standard setup when the same catalog ships from several locations or channels draw from different warehouses.

Default package type

Used at AWB generation when the order doesn't specify a package. Pick the type that matches most of your orders.

Step 4 — Refresh OpenCart Modifications and finalize in easySales

This is the OpenCart-specific step that catches most new connections, and it has to be the last thing you do.

Open Extensions → Modifications in your OpenCart admin and click the blue Refresh button in the top right. OpenCart compiles ocmod overrides on refresh — until you click it, the module is installed but its hooks aren't active.

Now return to easySales and click Save to finalize the connection. easySales tests the connection, registers the webhooks on your OpenCart site, and starts importing your catalog.

What happens automatically after you save

easySales handles webhook setup and the initial import.

  1. Two webhooks are registered on your OpenCart site: one for order changes and one for stock changes. Every order created, updated, or cancelled in OpenCart reaches easySales in near real time, and the same applies to stock updates.
  2. Your product catalog is imported — products and their option combinations appear in Online Shops → Products, where you can browse, edit, and turn them into offers for marketplaces.
  3. Incoming OpenCart orders appear in your Orders screen, where you generate invoices, AWBs, and run automation flows.
  4. Stock syncs according to the source you picked. If you chose easySales, stock pushes start running continuously and your OpenCart storefront reflects centralized inventory.
From OpenCart → easySales From easySales → OpenCart
Orders (create, update, cancel) Stock updates
Products and option combinations Order status changes
Stock levels Fulfillment status from AWB generation
Product prices
Categories
Order custom fields (CUI, locker ID, courier choice)
Customer details and addresses
Image URLs
Bilateral sync covers orders inbound and stock, status, and fulfillment outbound.

Fine-tuning your OpenCart connection

After saving, open the OpenCart website's Preferences tab. Two groups of settings are worth a quick pass.

Order Behavior

  • Allow reopening completed orders — by default, terminal statuses like "Complete" cannot revert to "Processing". Enable if you need to reopen orders.
  • Allow reopening cancelled orders — same logic for cancelled orders (useful when a temporarily cancelled unpaid order is finally paid).

Synchronization

  • Fetch orders — automatic import of new OpenCart orders.
  • Update order status on OpenCart — push status changes from easySales back to OpenCart so both systems stay in sync.
  • Update product stock on OpenCart — push easySales stock levels to your OpenCart storefront. Turn off if OpenCart is your stock source.

Click Save at the bottom of the page to apply your changes.

Options, lockers, and other OpenCart quirks

A few OpenCart-specific behaviors worth knowing:

  • Product options. OpenCart products carry options (size, color, etc.) with optional per-option SKUs. easySales imports each saleable combination as a separate variation tied to the parent product by SKU. If your store uses options without SKUs, those products are imported as a single entry — set SKUs per option before connecting if you need them tracked individually on marketplaces.
  • Lockers. If your shop uses a supported locker module — Sameday EasyBox, InPost, and other locker networks across the markets we serve — easySales reads the locker ID from the order custom fields automatically. No configuration needed. The locker is then used as the delivery point at AWB generation.
  • Custom payment methods. OpenCart lets you add any payment method through extensions. easySales maps standard methods (bank transfer, COD, card via the common gateways) automatically. Non-standard methods come through as Unknown — contact support so we can extend the mapping for your specific gateway.
  • Image URLs. OpenCart serves images from image/catalog/... relative to your storefront root. The module rewrites these to absolute URLs at export. If product images don't appear in easySales, the most common cause is missing files on disk — OpenCart records the path even when the file is gone.
  • Modification cache. If you change OpenCart admin extensions or themes after the easySales module is installed, refresh Extensions → Modifications again. OpenCart silently disables ocmod overrides on certain admin updates.
  • Module updates. When a new module version is published, easySales shows a red warning in the website's Preferences. Download the new build, remove the old module from your OpenCart admin (Extensions → Extensions → Modules → Uninstall), then install the new archive following Step 2 again. Save in both OpenCart and easySales, then refresh Extensions → Modifications.
  • Invoice series prefix. If you want a specific invoice series on documents generated downstream of OpenCart, set it in OpenCart admin under Settings → Option → Checkout → Invoice Prefix. easySales reads this value alongside the order.

You're connected — what's next

Once orders start arriving, the next step is automation. Set up flows to generate invoices, create AWBs, and send tracking notifications. If you also sell on marketplaces, turn your OpenCart catalog into offers and let easySales push them out.

No card required
14 days free
You can cancel anytime

Connect your OpenCart store in minutes

Try easySales free for 14 days. No credit card and no code changes.

Frequently asked questions

Four causes account for most cases. First and most common: Extensions → Modifications was never refreshed after the module was installed and configured — until you click Refresh, the module's hooks aren't active. Second: the easySales module status is not set to Enabled in Extensions → Extensions → Modules. Third: the token saved in OpenCart doesn't match the one in easySales. Fourth: your site isn't reachable from the public internet — staging behind HTTP basic auth, IP allow-lists, or maintenance-mode pages blocks webhooks silently. If all four check out, open the Errors page in easySales to find orders that failed validation on import (a missing address field or a product SKU that doesn't exist in easySales are typical causes).

Yes — easySales ships a separate `.ocmod.zip` module for each major OpenCart version: 1.5.6.4, 2.0–2.1, 2.2, 2.3, 3.0, and 4.0. The wizard picks the right build when you select your version. If you're on a patch release between two supported versions (for example 2.3.0.1), the build for the closest lower version applies. Heavily forked OpenCart distributions are not officially supported — the module may install but admin paths can differ, and we can't guarantee the same behavior.

easySales reads the OpenCart order status when the order arrives and maps it to the easySales payment state internally. Stock OpenCart statuses (Complete, Processing, Pending, Cancelled) are mapped automatically. If you've renamed statuses or added custom ones that easySales doesn't recognise, contact support so we can extend the mapping for your store. Custom payment gateways come through as Unknown by default — contact support to extend the mapping for your specific gateway too. Cash on Delivery orders typically stay unpaid until the courier confirms delivery and you advance the order status manually or through an automation flow.

OpenCart products carry options (size, color, material, etc.) with optional per-option SKUs. easySales imports each saleable combination as a separate variation tied to the parent product by SKU. The parent provides the title, description, images, and characteristics; each variation carries its own SKU, price, stock, and attribute values. If your store uses options without SKUs (the OpenCart default), those products are imported as a single entry — set SKUs per option before connecting if you need them tracked individually on marketplaces.

OpenCart serves images from the `image/catalog/...` path relative to your storefront root. The easySales module rewrites these to absolute URLs at export. The most common cause of missing images is that OpenCart records the path in the database even when the file is no longer on disk — a typical leftover from theme switches or manual file management. Audit your products in OpenCart admin and re-upload any missing files, then trigger a manual product re-fetch in easySales. If images exist but still don't reach easySales, your storefront might be behind HTTP basic auth or a CDN with hotlink protection — easySales fetches over public HTTPS and won't follow auth-protected URLs.

Yes — if your shop uses a supported locker extension (Sameday EasyBox, InPost, and other locker networks across the markets we serve), easySales reads the locker ID from the OpenCart order custom fields automatically. No additional configuration is needed — the locker is used as the delivery point at AWB generation. Locker network not yet on the auto-detect list, or stored under a non-standard custom field? Contact support so we can extend it.

Only new ones. Orders flow through a webhook the easySales module registers when you save the connection — it fires for every order created or updated in OpenCart from that moment on. Orders placed before the connection was set up are not back-filled automatically. If you need historical orders inside easySales for reporting or continued fulfilment, contact support to discuss a one-time import.

Was this guide helpful?