# OpenCart migration in Europe: products, options, customers and SEO

OpenCart migration for EU stores, step by step: options into variants, customers and GDPR consent, index.php 301 redirects and extensions.

Source: https://cloudcart.com/en/blog/opencart-migration · CloudCart · 2026-11-10

In short: an OpenCart migration to CloudCart moves your products with their options, images, categories, manufacturers, customers, articles and old URLs, and our team moves the order history. OpenCart options become variants with a final price, every old URL gets a 301 redirect, including the index.php?route= forms, and a move by our team takes up to 45 days and costs €0 with a 24-month contract, through Dec 31, 2026.

OpenCart is open-source PHP software with no license fee that you install on your own hosting, so the server, security, updates and every extension for shipping, payments, invoices and VAT are your job. This guide is for owners of a working OpenCart store anywhere in Europe who want to leave without losing Google rankings or customers. The facts about OpenCart come from its official documentation, linked at each point, and the terms of the move are on the [OpenCart to CloudCart migration page](https://cloudcart.com/en/offer/migrate-from-opencart).

## When is it worth leaving OpenCart?

Leaving OpenCart is worth it when hosting, extensions and developer hours cost more each month than a hosted plan, or when every update breaks an extension. An up-to-date, stable store with its own developer has no technical reason to move.

| What you see | What it means | What to do |

| The OpenCart version hasn't been updated in years | the core and extensions keep their known security holes | plan the migration before your next peak season |

| Some extensions stop working after an update | each extension has a different author and nobody answers for the whole store | compare the cost of the update with the cost of moving |

| The site slows down when a campaign starts | the hosting can't take the traffic, and a bigger server costs more | a platform with hosting included |

| You pay separately for shipping, payment, invoice, VAT, SEO and filter extensions | a platform with no license fee costs money every month | add up the renewals and compare them with a monthly plan |

Add up 12 months of hosting, developer hours, extension licenses and paid changes and divide by 12. CloudCart plans billed annually, excluding VAT, are Baby Pack €14, Starter Pack €33, CC Pro €83 and CC Master €249 a month, according to [CloudCart pricing](https://cloudcart.com/en/pricing), with hosting, security, updates and the SSL certificate included.

> 0% commission on sales A fixed plan, however many orders you take With OpenCart your costs grow with traffic and with the number of extensions. In CloudCart the hosting is part of the plan, and no plan takes a percentage of your orders. How 0% commission works →

## What moves from OpenCart and what doesn't

The catalog, customers, content and old URLs move from OpenCart, and our team moves the order history. Customer passwords, the theme and the extensions don't move.

| Data in OpenCart | How it goes into CloudCart | What to know |

| Products | CSV or XML import, the Admin API or our team | name, description, price, SKU, barcode, weight and tags each have their own field |

| Options (size, color, material) | variants, up to 3 option groups in the CSV import | each combination gets a final price instead of "+€5"; details in the next section |

| Images | with the products, as comma-separated URLs | they are downloaded and stored in CloudCart, so you can shut down the old server |

| Categories | with the products or by our team | the tree is rebuilt with the same hierarchy |

| Manufacturers | the manufacturer (vendor) field in the import | each manufacturer page also gets a new URL for the redirect map |

| Customers | Customers → Import from CSV, the Admin API or our team | a CSV brings in name, email, group, note and marketing consent; addresses come through our team or the Admin API |

| Order history | moved by our team | kept separately with us, for reference and accounting |

| Blog posts and information pages | the Blog CSV Import app or our team | check the images inside the text before you shut down the old server |

| Old URLs | 301 redirects from a CSV file | they cover pages; PDF files and images don't go through them |

| Theme and extensions (OCMOD, vQmod) | don't move | replaced by a CloudCart theme and built-in features |

Important: the standard OpenCart admin has no product CSV export. According to the [OpenCart maintenance documentation](https://docs.opencart.com/admin-interface/system/maintenance.md), System → Maintenance → Backup & Restore saves the database as an .sql backup. For a CSV you need an export extension; without one, our team takes the data directly from the old store.

## OpenCart options and CloudCart variants

In OpenCart each product option has separate values, and each value can add to or subtract from the base price. According to the [OpenCart documentation on options](https://docs.opencart.com/admin-interface/overview/options.md), the types are Select, Radio, Checkbox, Text, Textarea, File, Date, Time and Date & Time. In CloudCart a variant is a full combination, such as "M, red", with its own price, SKU and stock.

During the migration the price of each combination is worked out from the base price plus the option adjustments. A T-shirt example:

| In OpenCart | The sum | The variant in CloudCart |

| Base price €39, size M no adjustment, color red no adjustment | 39 + 0 + 0 | M, red: €39 |

| Size XL +€5, color red no adjustment | 39 + 5 + 0 | XL, red: €44 |

| Size XL +€5, color black +€3 | 39 + 5 + 3 | XL, black: €47 |

- Pick the options that change the product. Size, color, material or weight become variant groups. The CSV import takes up to 3 groups per product, in columns v1, v2 and v3.

- Work out the price of each combination. Base price plus adjustments, as in the table.

- Group the rows by product. Each variant row has a variant.parent_id column with the same identifier as the product in the file, so all combinations land under one product.

- Add the variant image. If a color has its own photo, its URL goes on the variant row and shows for that combination.

- Check stock. OpenCart counts quantity per option value. CloudCart counts it per combination, so split the quantities before the import.

Text, File, Date and Time options hold what the shopper types at checkout, such as an engraving, and don't become variants. List those products separately.

Important: the CSV import always creates new products and doesn't update existing ones. If you run the same file twice, you get duplicate products. Test with 20 to 30 products first, check the variants, and only then upload the full catalog. Column mapping is explained in [bulk product import from CSV, Excel and XML](https://cloudcart.com/en/blog/product-import-csv-xml).

> Migration from OpenCart €0 migration with a 24-month contract, up to 45 days The CloudCart team moves the products with variants, the customers, articles and content, keeps the order history and sets up a 301 redirect from every old URL. The offer is valid through Dec 31, 2026. How we move an OpenCart store →

## OpenCart URLs and 301 redirects

301 redirects keep your Google rankings after an OpenCart migration when every old URL leads to the same page in the new store. OpenCart URLs depend on the "Use SEO URL" setting. Without it, according to the [OpenCart SEO URL documentation](https://docs.opencart.com/design/seo-url.md), a product URL looks like /index.php?route=product/product&path=20_27&product_id=45. With the setting on, the URL is the keyword from Design → SEO URL. The same documentation warns that changing a keyword breaks old links.

| Page type | What it can look like in OpenCart | What goes in the map |

| Product without SEO URL | /index.php?route=product/product&product_id=45 | one row to the same product |

| Product through a category path | /index.php?route=product/product&path=20_27&product_id=45 | every form of the URL leads to the same new URL |

| Product with SEO URL | /espresso-coffee-1kg | one row to the same product |

| Category | /coffee or the form with route=product/category | one row to the same category |

| Information page | /delivery , /terms | to the same information page |

| Deleted product | any URL with no new match | to its category or a replacement product, never to the homepage |

In a multilingual OpenCart store each language version is its own URL in Google and needs its own row in the map.

If you switched SEO URLs on later, Google may have indexed both forms, so add the index.php URLs to the map as well. In CloudCart the redirect keeps the part after the question mark, so an OpenCart URL with route and product_id redirects exactly. The * character stands for any text: /index.php?route=product/product&path=*&product_id=45 catches product 45 from any category. Use it carefully, because a row ending in product_id=4* also catches products 41, 450 and so on.

Build the list from the sitemap, Design → SEO URL and 12 months of the Search Console Performance report. [Google Search Central's guide to moving a site with URL changes](https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes) recommends keeping redirects for at least a year. In CloudCart they live in Marketing → SEO → 301 redirects: you add them one by one or upload a two-column CSV, up to 100 rows on Baby Pack, up to 2,000 on Starter Pack and unlimited on CC Pro and CC Master. The gclid, fbclid and main UTM parameters pass through the redirect, so Google and Meta ads keep being tracked. In one URL change in a live store, 13,418 redirects went through the Admin API in 30 minutes, with no errors.

## Customers, passwords and newsletter subscribers

OpenCart customers move with name, email and group, and their passwords don't. OpenCart stores passwords as a hash, a one-way form, so no platform can read them. In CloudCart every imported customer gets an automatically generated new password.

- Prepare the file. Columns for first name, last name, email, customer group, note and marketing consent (yes or no). OpenCart groups such as "Wholesale" or "Resellers" are created automatically by name; customer groups are available from Starter Pack up.

- Open the import. In CloudCart go to Customers → Import. Before the upload the admin asks for a two-factor authentication code.

- Match the columns. For each column you choose the CloudCart field and start the import, which runs in the background.

- Tell customers about the new password. At their first sign-in customers set a new password through "Forgot password".

Important: put "yes" in marketing consent only for customers who subscribed to the newsletter in the old store, and import everyone else with "no" (also the value when the column is missing). Under [Article 7(1) of the GDPR](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679) you must be able to prove consent. A customer who unsubscribed gets no marketing email in the new store either.

The new platform processes customer data on your behalf, so Article 28 requires a written processing contract with it, and your privacy policy should name it before the switch. Move your 14-day withdrawal terms and returns page across unchanged; the rules for them are in [EU returns policy for online stores](https://cloudcart.com/en/blog/returns-consumer-rights-online-store), and the cookie banner in [cookie banner and GDPR for an online store](https://cloudcart.com/en/blog/gdpr-cookies-legal).

The CSV import doesn't take delivery addresses; our team or your developer moves them through the Admin API.

## Replacing OpenCart extensions for shipping, payments, VAT and invoices

OpenCart extensions for shipping, card payments, VAT and invoices don't move, because they are code installed on your server. In CloudCart they are built in and switched on from the admin with your existing contracts.

| The OpenCart extension | What you have in CloudCart | More |

| Shipping | GLS, DHL and DHL Express built in, plus Sendcloud and EuShipment for shipping across Europe: shipping labels and tracking from the order | shipping and couriers |

| Card payments | CloudCart Pay with Visa, Mastercard, Apple Pay and Google Pay, or Stripe, PayPal, Mollie and Revolut with your own account | CloudCart Pay |

| EU VAT and OSS | VAT rates by country, OSS for cross-border B2C sales and the no-VAT reason printed on the invoice | OSS VAT for online stores |

| Invoices | invoices and credit notes issued from the order | invoices |

| Inventory and ERP | ready-made connections with inventory and ERP software | integrations |

| Product feeds | Google Shopping, the Meta catalog, Glami, Skroutz, Compari and eMAG from one catalog | sales channels |

| Search and filters | Aura Search finds products by meaning and with typos | AURA |

| One store per language | a separate store per country with its own language and currency, fed from the same catalog | multilingual online store in Europe |

On launch day turn off invoicing in OpenCart so no order gets two documents, and keep access to recent orders for returns. If you sell in or into Bulgaria, the Bulgarian couriers are built in too, see [Econt, Speedy and BOX NOW shipping labels](https://cloudcart.com/en/blog/shipping-couriers).

> CloudCart Pay 0% transaction fee through Dec 31, 2026 Card payments are built in and switched on from the admin, with no extension to update and no separate bank contract. After that the fee is 1.29% + €0.05, with no monthly fee. How CloudCart Pay works →

## OpenCart migration in 6 steps

- Inventory. Count products, option combinations, categories, manufacturers, customers, orders and articles, and list the old URLs and active extensions.

- Backup. Download the database from System → Maintenance → Backup & Restore and keep the image folder from the server before you change anything.

- Import. CSV or XML for products, Customers → Import for customers, Blog CSV Import for articles, or our team. You request a move by our team in the new store's admin, Services → Migration.

- Redirect map. Every old URL gets a new one, including the index.php forms and every language version. The map is uploaded as a CSV.

- Tests. Compare the counts in the old and new store and launch only at zero difference. Place a test order with every carrier and payment method, and check the VAT for each country you sell to and the invoice.

- Switch and monitor. Point the domain at a quiet hour, the SSL certificate is issued automatically, and email stays with your current provider through its MX records. Watch 404 errors in Search Console for 60 days.

The move-day list is in the [ecommerce replatforming checklist](https://cloudcart.com/en/blog/switch-ecommerce-platform-checklist), and every way to move data in [importing products into CloudCart](https://cloudcart.com/en/blog/platform-migration-import).

## Who does the move: our team, you or your developer

There are three ways to the same result; the choice depends on the catalog size and your time.

| The path | Best for | Cost |

| The CloudCart team | large catalogs, many option combinations, several languages, a store with no CSV export | €0 with a 24-month contract, through Dec 31, 2026; up to 45 days |

| You, with the CSV and XML imports | catalogs you know well | only the plan price |

| Your developer, through the Admin API | teams that want to check every record | the developer's time; the API is available from Starter Pack up, up to 10,000 products at a time |

The CSV import takes up to 100 products on Baby Pack, 2,000 on Starter Pack, 7,500 on CC Pro and 10,000 on CC Master. Details are on the [online store migration page](https://cloudcart.com/en/offer/online-store-migration).

## Which platform to move to from OpenCart

The choice after OpenCart depends on who will maintain the store and where you sell, and sometimes the sensible answer is to stay.

| Choose | When | What you take on |

| CloudCart | you sell in one or several EU countries, want EU VAT with OSS, couriers, payments and invoices built in, and don't want to look after a server and extensions | a monthly plan; theme and features within the platform |

| WooCommerce | you already have a WordPress site and a developer and want full control of the code | hosting, security, updates and plugins, as with OpenCart |

| Shopify | you want a large international app store and accept paying for apps on top of the plan | a monthly plan plus apps for local couriers, invoices and VAT reporting |

| Stay on OpenCart | the store is up to date, the extensions work and you have a regular developer | the same as now |

The two open-source platforms are compared in [WooCommerce vs OpenCart for EU sellers](https://cloudcart.com/en/blog/woocommerce-vs-opencart), the hosted option in [Shopify vs WooCommerce for EU sellers](https://cloudcart.com/en/blog/shopify-vs-woocommerce), and all three side by side in [the best ecommerce platform in Europe](https://cloudcart.com/en/blog/best-ecommerce-platform-europe).

> A store for €1 €1/month for the first 3 months, on every plan While the new store is built and tested, OpenCart keeps selling. For new stores through Dec 31, 2026, every plan from Baby to CC Master is €1/month for the first 3 months, and the discount applies automatically, with no code. Create a store for €1 →

## Frequently asked questions

**How do I export products from OpenCart?**

The standard OpenCart admin has no product CSV export. System → Maintenance → Backup & Restore downloads the database as an .sql file, which serves as a backup. For a CSV file you use an export extension, and if you don't have one, our team takes the data directly from the old store.

**What happens to product options in an OpenCart migration?**

Options that change the product, such as size or color, become variants in CloudCart. Each combination gets a final price, the base price plus the OpenCart adjustments, and its own stock. Text, File and Date options are not variants, so list them separately.

**Will I lose Google rankings if I leave OpenCart?**

Not if every old URL, including the index.php?route= forms and each language version, has a 301 redirect to the same new page and titles and texts move unchanged. Some movement in the first weeks is normal. Watch 404s in Search Console for 60 days and keep the redirects for at least a year.

**What does the GDPR require when I move my OpenCart customers?**

Import marketing consent only for customers who gave it and be able to prove it. The new platform processes the data on your behalf, so you need a written processing contract with it and an updated privacy policy before the switch.

**How much does an OpenCart to CloudCart migration cost?**

A move by the CloudCart team is €0 with a 24-month contract, for requests through Dec 31, 2026, and takes up to 45 days. If you move on your own, you pay only the plan, which for new stores is €1/month for the first 3 months. The commission on sales is 0%.

Questions about moving from OpenCart? Write to [support@cloudcart.com](https://cloudcart.commailto:support@cloudcart.com).
