Help center

Everything you need to move your OpenCart store to Shopify with GSP OpenCart Migration: from installing the OpenCartextension to switching your domain.

Getting started

  1. Install GSP OpenCart Migration from the Shopify App Store and open it in your Shopify admin.
  2. Download the OpenCart extension for your version (shown at the bottom of every OpenCart admin page): OpenCart 3.0.x or OpenCart 4.x. Both are also on the app's home page and New migration page.
  3. Install it from your OpenCart admin and copy its connection code (how: 3.0.x, 4.x). On OpenCart 1.5 or 2.x, upload the bridge file instead.
  4. Paste the code and click Test connection. You'll see how many products, categories, customers, orders, coupons and information pages your store has.
  5. Choose what to migrate. Everything is selected by default.
  6. Run a free preview, or buy a plan and start the full migration.
  7. Review the result and the report, keep Shopify up to date with Migrate changes, follow the go-live checklist, then uninstall the extension.
Your OpenCart store keeps running during the whole process. The extension (or bridge file) only reads from it; your products, customers and orders in OpenCart are never changed.

Before you start

Install the OpenCart 3.0.x extension

OpenCart has no built-in API that can read a whole store, so the app connects through a small, read-only OpenCartextension, installed from your OpenCart admin like any other module: no FTP needed. There is one package for OpenCart 3.0.x (below) and one for OpenCart 4.x. Both keep working while your store is in maintenance mode, and you uninstall them when you're done. OpenCart 1.5 and 2.x use the bridge file.

  1. Download gsp-shopify-migration-oc3.ocmod.zip (download; it's also on the app's home page and New migration page). Don't unzip it.
  2. In your OpenCart admin, go to Extensions → Installer, click Upload and choose the zip. Wait for the progress bar to finish.
  3. Go to Extensions → Extensions, choose Modules in the filter, find GSP Shopify Migration and click Install (the green +). Then click Edit (the blue pencil).
  4. The module's page shows a connection code starting with gspoc1.. Copy it, paste it into the app and click Test connection.
The extension creates its own secret key when you install it, and the connection code carries that key: treat the code like a password and don't share it. The extension is read-only: it only answers requests signed with that key, only runs read queries on a fixed list of store tables, and never reads customer passwords, admin users, API keys or your payment and shipping module settings. Generate new key on the module's page replaces the key: the old code stops working, and you paste the new one into the app.

Install the OpenCart 4.x extension

For OpenCart 4.0.x and 4.1.x. It works like the 3.0.x extension, with one extra click in the Installer.

  1. Download gsp_migration.ocmod.zip (download; it's also on the app's home page and New migration page). Don't unzip it and don't rename it: OpenCart 4 names the extension after the file, and it only works when the file is called exactly gsp_migration.ocmod.zip. If your browser saved it as gsp_migration (1).ocmod.zip, rename it back.
  2. In your OpenCart admin, go to Extensions → Installer, click Upload (the blue button) and choose the zip. It appears in the list below as GSP Shopify Migration.
  3. Click Install (the green +) on that row and wait for the progress bar to finish. This step doesn't exist in OpenCart 3.
  4. Go to Extensions → Extensions, choose Modules in the filter, find GSP Shopify Migration and click Install (the green +). Then click Edit (the blue pencil).
  5. Copy the connection code (it starts with gspoc1.), paste it into the app and click Test connection.
Security is the same as on OpenCart 3: the extension creates its own key on install, is read-only, and Generate new key replaces the key. The Status switch (then Save) pauses access.

Update the extension

If we ask you to install a newer version:

OpenCart 1.5 and 2.x: the bridge file

For OpenCart 1.5 and 2.x, or if your store can't install extensions (see Troubleshooting), the app connects through a small PHP file you upload to your store instead: gsp-bridge.php. It reads your database settings from OpenCart's own config.php and answers the app's requests with your catalog, customers and orders.

  1. In the app, click New migration, choose OpenCart 1.5 or 2.x as your version, then click Download bridge file. The file contains a secret key that is unique to your Shopify store, so only this app can use it. Don't share it.
  2. Find your OpenCart folder: the one that contains config.php and the admin, catalog, image and system folders. On most hosts it's public_html (or public_html/shop if OpenCart is in a subfolder).
  3. Upload gsp-bridge.php into that folder, next to config.php. Not into admin.
    • FileZilla / FTP: connect to your host, open the folder on the right-hand side and drag the file into it.
    • cPanel File Manager: open File Manager, go to the folder, click Upload and choose the file.
  4. Upload it unchanged: don't rename it, and don't open and re-save it in an editor (some editors change it). To check, open https://your-store.com/gsp-bridge.php in your browser: it should show a short line of text starting with {"ok":true.
The bridge is read-only: it can only run read queries on a fixed list of store tables. It never reads customer passwords, admin users, API keys or your payment and shipping module settings, and it ignores every request that isn't signed with your key. Regenerate key (next to the download button) replaces the key: the file already on your server stops working until you upload a newly downloaded one.

Connect your store

With the extension, paste the connection code from the module's page and click Test connection. Spaces or line breaks copied along with it don't matter.

With the bridge file, enter your store URL (e.g. https://your-store.com, including the folder if OpenCart is installed in one, e.g. https://your-store.com/shop), then click Test connection. The app looks for the bridge file at your store URL + /gsp-bridge.php. If you uploaded it somewhere else, click Bridge file is somewhere else? and enter its full address.

You'll see a summary of your store and can choose what to migrate: products, categories, customers, coupons, information pages and orders. Categories are always included with products, so products land in the right collections.

Free preview

Before buying, run a free preview: 10 products (plus all categories, and up to 10 customers, orders, coupons and information pages) are imported so you can check how your data looks in Shopify. Preview products and pages are hidden drafts and no redirects are created. When you run the full migration, the preview records are updated and published, never duplicated. Previews can be deleted from your migration history.

Plans and pricing

One-time payments, billed through Shopify on your Shopify invoice. No subscription.

Basic

$49

one-time

  • Unlimited products, customers and orders
  • 1 OpenCart store, migrated once
  • Everything listed below: all products, customers, orders, content and SEO
  • Free preview before you buy
  • Detailed migration report
  • Email support

Advanced

$99

one-time

  • Unlimited products, customers and orders
  • Unlimited OpenCart stores, each migrated once
  • Everything listed below, for every store
  • Merge several stores into one Shopify store
  • Free preview before you buy
  • Priority support

Migration Update add-on

$29

one-time, per store

  • 30 days of unlimited Migrate changes runs for one store
  • Available on both plans

What's migrated

Products

  • Name, description, status, tags, manufacturer (vendor) and model
  • Select, radio and image options (size, colour…) become variants (up to 3 options), with their price adjustments and stock
  • Other options (checkbox, text, file, date…) saved in a metafield; show them on your product page, with prices, using LivePrice Variants
  • Quantity discounts saved as metafields and shown on your product page by the OpenCart product details theme block
  • Prices and special prices (compare-at price), SKUs and barcodes (UPC/EAN/JAN/ISBN)
  • Stock levels at a location that fulfils online orders, weight, taxable status and the “Requires shipping” setting
  • Main and additional product images
  • Product attributes (e.g. Material: Cotton) as metafields, shown as a Specifications table by the theme block
  • Enabled products published to your Online Store and to market catalogs with their own product list

Categories

  • Categories become collections, with description and image
  • Products are added to their collections

Customers

  • Name, email and phone number
  • Address book
  • Newsletter opt-in
  • Tagged “opencart-migration”; existing Shopify customers are updated, not duplicated

Orders

  • Original order numbers, dates and totals, in your store's default currency
  • Line items linked to the migrated products and variants, with their chosen options
  • Taxes, shipping, coupons and order totals
  • Payment status, fulfillment status and payment method; finished orders archived, as Shopify does (Orders → Archived)
  • Linked to the customer, guest orders by email
  • Order comments
  • No emails to customers, stock levels untouched

Coupons

  • Percentage, fixed and free-shipping coupons become discount codes
  • Start and end dates, minimum total, total usage limit, once per customer
  • Product and category restrictions

Information pages

  • Information pages (About us, Delivery information, Privacy policy, Terms…) become Shopify pages
  • Images inside pages copied to Shopify

SEO

  • Meta titles and meta descriptions
  • SEO keywords (SEO URLs) kept as URL handles
  • 301 redirects from old product, category and page URLs, so you keep your Google rankings

Safety and control

  • Choose exactly what to migrate
  • Read-only extension for OpenCart 3.0.x and 4.x (bridge file for 1.5 and 2.x): your OpenCart store is never changed
  • Currency check before migrating
  • Safe to re-run: records are updated, never duplicated
  • Resumes automatically after interruptions
  • Detailed report of every warning and error

How your data is mapped

OpenCartShopifyNotes
Product without optionsProduct with one variantPublished to the Online Store (and to active market catalogs with their own product list) if it was enabled in OpenCart; otherwise a draft. Products marked Requires shipping: No (services, downloads) are imported with This is a physical product unticked.
Product with select, radio or image optionsProduct with options and variantsOption price adjustments (+, − or a fixed price) are applied to each variant's price. Shopify allows up to 3 options and 2,048 variants per product: further options are saved in the opencart.custom_options metafield and reported. See Product options.
Checkbox, text, textarea, file, date, time and date & time optionsMetafield opencart.custom_optionsShopify variants can't represent them. They're saved with their values and prices and reported. Show these options on your product page, with prices, using LivePrice Variants. See Product options.
Special pricePrice + compare-at priceThe default customer group's current special price is used; the regular price becomes the struck-through compare-at price. Specials for other customer groups or future dates are saved in a metafield and reported. A special with an end date is reported, because Shopify has no scheduled price end. On OpenCart 4.1, specials and quantity discounts can be a fixed price, a percentage off or an amount off: each is converted to the price OpenCart would charge.
Quantity discountsMetafield opencart.quantity_discountsShopify has no tiered pricing per product; the discounts are saved and reported so you can rebuild them.
Quantity (subtract stock)Tracked inventory at a location that fulfils online ordersProducts that don't subtract stock are imported as untracked (if they're out of stock and out-of-stock checkout is off, they're tracked at 0 so they stay unavailable). For options, each variant gets the lowest stock of its option values.
Manufacturer / modelVendor / SKU (when the SKU is empty)The first of UPC, EAN, JAN or ISBN becomes the barcode; the others and the MPN are saved as metafields. On OpenCart 4.1, these product codes (SKU, UPC, EAN, JAN, ISBN, MPN) are read from its product code list.
AttributesMetafields attributes.<name>e.g. Material = Cotton, as a list field.
Other product fieldsMetafields opencart.<field>With definitions, so they're editable in Shopify admin.
CategoryCollectionShopify collections are flat; sub-categories become their own collections.
SEO keyword (SEO URL)URL handle + 301 redirectOld product, category and information page URLs redirect to the new ones. Pages without an SEO keyword (or stores with SEO URLs off) are redirected from their /index.php?route=… address. If a handle is already used by another product, collection or page in Shopify, the record is imported with its OpenCart ID added (e.g. t-shirt-30) and reported: your own Shopify items are never overwritten.
CustomerCustomer with addressesPhone numbers are converted to international format; a number Shopify rejects (invalid, or already used by another customer) is kept on the address only. Customers are subscribed to email marketing only if they ticked the newsletter box in OpenCart. A Shopify customer with the same email is updated, not duplicated. Customer groups other than the default become tags. Passwords can't be migrated (see What isn't migrated).
OrderOrder with the same numberThe status sets the payment and fulfillment status, and finished orders are archived. See Orders.
CouponDiscount codeLogin-required coupons and restrictions Shopify can't express are reported. A limit of 1 use per customer becomes “once per customer”; any other per-customer limit becomes unlimited (reported). Disabled coupons aren't migrated. Existing Shopify codes with the same name are never overwritten.
Information pagePageEnabled pages: content, images, meta title and meta description.

If your store has several languages, the default language is migrated. In a multi-store setup, OpenCart keeps one shared catalog, customer list and order history, so all of them are migrated; SEO keywords and store settings (currency, weight unit, order statuses) come from the default store. Country and region names are read in the default language too (on OpenCart 4.1 they're stored per language) and matched to Shopify's countries and provinces; a region Shopify doesn't know is left out of the address and reported.

Re-runs update the app's own records. Every product, collection, customer, page and order the app creates carries a hidden opencart.source_ref metafield that identifies its OpenCart record. You may see it in a record's Metafields, as an unstructured metafield. Don't delete it if you plan to run Migrate changes or resume a migration: it's how the app recognises what it created.

Orders

Each OpenCart order becomes a Shopify order with the same number (#1234), its original date and its OpenCart totals. The order's OpenCart ID, invoice number, payment method and (in multi-store setups) store name are added as order attributes, the customer's comment becomes the order note, and order custom fields become order metafields. Orders with status 0 (“missing orders”: checkouts that were never completed) aren't migrated.

Order statuses

OpenCart statusPayment statusFulfillment statusArchived
PendingPayment pendingUnfulfilledNo
ProcessingPaidUnfulfilledNo
ProcessedPaidUnfulfilledNo
ShippedPaidFulfilledNo
CompletePaidFulfilledYes
CanceledVoidedUnfulfilledYes
Canceled ReversalPaidUnfulfilledNo
ChargebackRefundedUnfulfilledYes
DeniedVoidedUnfulfilledYes
ExpiredVoidedUnfulfilledYes
FailedVoidedUnfulfilledYes
RefundedRefundedUnfulfilledYes
ReversedRefundedUnfulfilledYes
VoidedVoidedUnfulfilledYes
Your “Complete Order Status” statuses (System → Settings → Option)PaidFulfilledYes
Custom statusesMatched by name: “complete” or “delivered” like Complete, “shipped” or “dispatched” like Shipped, “awaiting” or “on hold” like Pending, “cancel”, “declined”, “fail” or “void” like Canceled, “refund” or “reversed” like Refunded. Other statuses (and your “Processing Order Status” statuses) are imported as paid and unfulfilled; a status the app doesn't recognise is reported.
Status 0 (missing orders)Not migrated

Every migrated order is tagged opencart-migration and opencart-<status> (e.g. opencart-complete), so the original status is kept. Shopify can't create an order as cancelled, so canceled, denied, expired, failed and voided orders are imported with a voided payment and archived. Refunded orders also get a Refunded in OpenCart attribute with the amount.

Archived orders: where to find them

Orders that are finished in OpenCart (complete, refunded, cancelled and the other statuses marked “Yes” above) are created archived, as Shopify itself does with orders that are paid and fulfilled (“Automatically archive the order”, Shopify's default). Archived orders don't appear under Orders → All: open Orders and choose the Archived view. The migration page shows how many orders were archived, with a button that opens that list. To move an order back to your open orders, select it and choose Unarchive orders.

Currency

OpenCart records order amounts in your store's default currency, so orders are imported in that currency. When the customer paid in another currency, a Customer currency attribute shows that currency, the exchange rate and the total the customer saw, and the order is reported. If Shopify refuses the order's currency, the amounts are imported in your Shopify store currency without conversion, and reported.

Taxes, shipping and discounts

Customers and guest orders

Line items

Good to know

Product options

Shopify builds product choices from up to 3 options and their variants. OpenCart has more option types, so each type is migrated like this:

OpenCart option typeIn ShopifyWhy
Select, Radio, ImageProduct options + variants (up to 3 options; prices and stock per combination)Each combination of values becomes a variant with its own price, stock and weight.
CheckboxSaved in the opencart.custom_options metafieldCustomers can tick several values; a Shopify variant is one choice per option.
Text, TextareaSaved in the metafieldText the customer types in; Shopify variants have no input fields.
FileSaved in the metafieldA file the customer uploads; Shopify variants can't take uploads.
Date, Time, Date & TimeSaved in the metafieldA date or time the customer picks; Shopify variants have no pickers.
A 4th+ Select/Radio/Image optionSaved in the metafieldShopify allows 3 options per product.
Options Shopify can't show as variants aren't dropped. They're saved in each product's custom_options metafield, so nothing is lost. Show these options on your product page, with prices, using LivePrice Variants.

The metafield. opencart.custom_options is a JSON product metafield in a stable, documented format (gsp.custom_options, version 1) that any product options app or developer can import. For each option it records the name, OpenCart type, whether it's required, its sort order, why it isn't a variant (its type, or Shopify's 3-option limit), the default value of text and date options, and each value with its price change (excluding tax, in your store currency), weight change and stock. To see it, open a product in Shopify admin and scroll to Metafields (or go to Settings → Custom data → Products). Each affected product is also listed in the migration report.

Show specifications on your product page

Shopify themes don't show everything OpenCart showed on a product page. The app includes a theme app block, OpenCart product details, that displays the migrated data:

To add it (Online Store 2.0 themes, such as Dawn):

  1. In Shopify admin, go to Online Store → Themes and click Customize.
  2. In the page picker at the top, choose Products → Default product.
  3. In the product information section, click Add block, open the Apps tab and choose OpenCart product details. Drag it where you want it, turn parts on or off in its settings, and click Save.
Why a block? Quantity discounts and the extra options are saved as JSON metafields, and the attributes as several separate metafields. A theme's plain dynamic sources (“Connect dynamic source”) can only insert one simple value into a text field: they can't turn JSON data or a group of metafields into a table. The block reads them for you, and shows nothing on products that don't have the data.

What isn't migrated

Checkbox, text, file and date/time options, and options beyond Shopify's 3, aren't lost: they're saved in a metafield (see Product options).

Customer passwords can't be migrated: OpenCart stores them as one-way hashes that Shopify can't accept (and the bridge never reads them). To let customers log in, invite them from Shopify (Customers → select → Send account invite), or turn on Shopify's passwordless customer accounts.

During the migration

Migrate changes (updates)

Your OpenCart store keeps taking orders while you set up Shopify. With the Migration Update add-on, click Migrate changes on a completed migration to bring over what changed since the last run. Only changes are read, so it's fast even for large stores. The extension must still be installed (or the bridge file on your server). If you clicked Generate new key in OpenCart, paste the new connection code on the migration's page first; with the bridge file, upload the newly downloaded file if you regenerated its key.

Nothing is duplicated, customers are never emailed, and inventory isn't restocked when an order is cancelled. Records you deleted in Shopify are not brought back for orders.

Go-live checklist

  1. Review products (variants, prices, images, stock), collections, customers and a few orders.
  2. Set up shipping rates, taxes and payment providers in Shopify Settings.
  3. Choose and customise your theme; add menus (Online Store → Navigation).
  4. Place a test order.
  5. Shortly before switching, run Migrate changes to bring over the latest orders and customers.
  6. Point your domain to Shopify (Settings → Domains). The 301 redirects created by the migration (Online Store → Navigation → URL redirects) start working once your domain points to Shopify.
  7. Remove the store password, then invite customers to activate their accounts.
  8. Uninstall the extension (or delete the bridge file) from your OpenCart store.

After migrating: uninstall the extension

Once you no longer need Migrate changes, remove the app's access to your OpenCart store:

  1. In your OpenCart admin, go to Extensions → Extensions, choose Modules, and click Uninstall (the red −) next to GSP Shopify Migration. This deletes its key, so the connection code stops working immediately.
  2. Optional: in Extensions → Installer, remove the files. On OpenCart 3.0.x, delete gsp-shopify-migration-oc3.ocmod.zip from the upload history; on OpenCart 4.x, click Uninstall and then Delete on the GSP Shopify Migration row. If you need the app again later, upload and install it again and paste the new code.

Bridge file: delete gsp-bridge.php from your OpenCart folder (FileZilla: right-click → Delete; cPanel File Manager: select → Delete). The app can then no longer read your store. If you need it again later, download a fresh copy from the app and upload it again.

Uninstalling the Shopify app also deletes your stored connection and key from our servers right away, so an old extension or bridge file left on your store stops working with the app. Removing it is still the safest option.

Troubleshooting

The Installer shows a permission error (directory not writable, or asks for FTP)

OpenCart's Installer needs to write to its system/storage folder (in particular system/storage/upload and system/storage/modification). Ask your host to make it writable by the web server (usually permissions 755 for folders and 644 for files, owned by the web user), or, if OpenCart asks for FTP details, enter them under System → Settings → Option → FTP and enable FTP. On OpenCart 4.x, system/storage/marketplace and the extension folder must be writable. If your host doesn't allow either, use the bridge file instead.

The upload worked, but GSP Shopify Migration isn't in the list

Uploaded extensions don't appear on the Installer page itself. Go to Extensions → Extensions and choose Modules in the “Choose the extension type” filter: it's listed there as GSP Shopify Migration. Click Install (the green +), then Edit. On OpenCart 4.x, first click Install (the green +) on its row in Extensions → Installer: until then it isn't listed under Modules. On OpenCart 3.0.x, if it's still missing, refresh the cache under Extensions → Modifications (the blue refresh button) and upload the zip again.

The module's page says “Permission Denied” (OpenCart 4.x)

The zip was renamed before uploading (for example to gsp_migration (1).ocmod.zip), and OpenCart 4 names the extension after the file. Uninstall the module in Extensions → Extensions → Modules, then uninstall and delete it in Extensions → Installer, and upload gsp_migration.ocmod.zip with its original name, then install it again.

“The connection code changed in OpenCart — paste the new code”

Someone clicked Generate new key on the module's page, or the extension was uninstalled and installed again, so the code saved in the app no longer works. Open Extensions → Extensions → Modules → GSP Shopify Migration → Edit, copy the current code, paste it under Connection code on the migration's page in the app (or on New migration), then click Resume.

“The GSP Shopify Migration extension is uploaded but not installed”

The zip was uploaded but the module wasn't installed, or it was uninstalled (which deletes its key). Install it under Extensions → Extensions → Modules, open Edit and paste the new code.

“Your store didn't answer like the GSP Shopify Migration extension”

Check that the module is installed, copy the whole connection code again, and make sure your store isn't behind a login or password protection. Firewalls can also block our requests (see the next item).

“We couldn't reach your-store.com”

Check the URL (with https://, and the folder if OpenCart isn't at the root) and that your store opens in a browser. Firewalls (e.g. Cloudflare bot protection, Imunify360, ModSecurity) can block our requests: allow-list the app or pause the protection while migrating.

“We couldn't find gsp-bridge.php at …”

The file isn't at that address. Upload it to the folder that contains OpenCart's config.php, then open the address shown in the message in your browser to check. If you put it elsewhere, enter its full address under Bridge file is somewhere else?.

“… didn't answer like the GSP bridge file”

Something else answered at that address: a “page not found” page, a redirect, a maintenance page or a login page. Check the bridge file URL, make sure the file still ends in .php (not .php.txt), and that your host runs PHP files in that folder.

“The bridge file on your server doesn't match this app”

The key in the uploaded file isn't your current key: the file came from a different download (another Shopify store, or before you clicked Regenerate key), or it was edited. Download it again, upload it to replace the old one, and test again.

“The bridge file on your server has no security key”

The file wasn't downloaded from the app (for example it was copied from somewhere else). Download it from step 1 of New migration and upload it again.

“… can't find OpenCart's config.php next to it”

The file was uploaded to the wrong folder. Move it to the folder that contains config.php (not the admin folder, and not a folder above your store), then update the bridge file URL if it changed.

“The bridge file couldn't read your OpenCart database”

The bridge found config.php but the database connection or a query failed. Check that your store itself works (open a product page), then try again. If it keeps happening, email us: the database may be overloaded or a table may be damaged.

“Your host is limiting requests right now”

Your hosting provider is rate-limiting requests. Wait a minute and try again; the migration retries by itself.

“Your store returned an error”

Your server answered with an unexpected error (for example a 500 or 503 page). Try again in a few minutes; if it persists, email us the message shown.

The migration stopped after it was working

With the extension: it was uninstalled or its key was regenerated. Install it again if needed, paste the current connection code on the migration's page and click Resume. With the bridge file: it was deleted or replaced, or your key was regenerated. Upload the current file from the app and click Resume.

Products show “Sold out”

The stock is at a location that doesn't fulfil online orders or isn't in a shipping profile. Check the location in Settings → Locations and add it in Settings → Shipping and delivery. If products are unavailable only to visitors from some countries, those countries aren't in any of your markets: add them in Settings → Markets.

Orders seem to be missing

Finished orders (complete, refunded, cancelled…) are archived, so they aren't under Orders → All: look in Orders → Archived. Orders with status 0 (“missing orders” in OpenCart) aren't migrated. On development stores, orders are created at 5 per minute, so they arrive slowly.

Prices are in the wrong currency

Prices are copied as numbers. Set your Shopify store currency to match OpenCart, then run the migration again.

Images are missing

Shopify couldn't download them from your site: check they open in a private browser window, and that hotlink or bot protection isn't blocking them. Then run Migrate changes or Resume.

“Phone … not accepted by Shopify”

The phone number isn't valid for Shopify. The customer is still migrated; the number is kept on the address.

FAQ

Will my OpenCart store be changed or go offline?

No. The extension (or bridge file) only reads from your database, and your store keeps working normally. The extension adds a module entry and one setting (its key), both removed when you uninstall it.

Which OpenCart versions are supported?

OpenCart 1.5, 2.x, 3.x and 4.x, including stores on older PHP versions: OpenCart 3.0.x and 4.x (4.0.x and 4.1.x) with our extension, 1.5 and 2.x with the bridge file. Popular forks that keep OpenCart's database layout usually work too; run a free preview to check.

Is it safe to install the extension (or upload the bridge file)?

Both are read-only, answers only requests signed with your secret key, and never reads passwords or payment settings. Uninstall the extension (or delete the file) when you're done.

Can I run the migration more than once?

Each store is fully migrated once. Use Migrate changes to bring over later updates; existing records are updated, never duplicated.

How long does it take?

It depends on store size and how fast your host responds: small stores take minutes, stores with tens of thousands of orders can take a few hours. You can close the page while it runs.

Will I lose my Google rankings?

No: meta titles and descriptions are migrated, SEO keywords become URL handles, and 301 redirects send old product, category and page URLs to the new ones.

Are customers emailed during the migration?

No. No order confirmations, shipping notifications or account invites are sent by the migration.

Why aren't my old orders under Orders → All?

Orders that are finished in OpenCart are archived, as Shopify does with finished orders. Find them under Orders → Archived (see Archived orders).

What happens to my data if I uninstall?

Everything migrated stays in your Shopify store. The app deletes your bridge key and store connection right away, and its migration history 48 hours after uninstall.

Privacy and security

A read-only extension or bridge file that never reads passwords or payment settings, requests signed with a key unique to your store, encrypted storage of your connection, and customer and order details transferred straight to Shopify without being stored by us. Read the full privacy policy and terms of service.

Contact support

Email contact@gsptechnologies.com with your Shopify store address and, if possible, a screenshot of the migration report. We reply within 2 business days.