Gatemi Order Import for WooCommerce brings orders and coupons into your shop from a spreadsheet: a migration from another platform, a batch from a marketplace, or a hundred coupons a colleague wrote in Excel.
Running the same file twice does not import it twice. A coupon is recognised by its code and an order by a reference you put in the file, so a second run updates what is already there rather than adding a copy of it. Re-running a file is the most common thing anybody does with an importer — you are never quite sure the first run worked — and the defining failure of this category is a shop with four hundred duplicate orders, doubled revenue in every report, and no way back that does not involve deleting orders by hand.
A dry run first, and it is the same importer. Tick "dry run" and every decision a real run would take is taken — the file is read, the columns matched, the products looked up, the statuses checked — and nothing is written. A separate "validate" routine is how a preview passes and the import then fails on row 812; here there is only one code path, so a clean dry run means a clean run.
Every problem names its line. "Import finished: 412 of 500" is you opening a five-hundred-row spreadsheet and comparing it to your orders screen by hand. "Line 213: no product with SKU MUG-B" is you fixing one cell.
Nothing is guessed. A product that cannot be found by SKU or id is reported and left off the order, never invented. A status your shop does not have is refused rather than quietly becoming "processing". A column this plugin does not recognise is left alone and named in the report rather than being read as something it is not.
An order's money is what the file said. Totals are set from the file and never recomputed: a migration is historical, and those orders were placed at last year's prices with a shipping rate you may no longer offer. Recomputing them from today's catalogue is how an import produces a revenue report that is wrong in a way nobody can trace.
Features
- Import orders — addresses, statuses, dates, payment method, totals and line items
- Import coupons — every field WooCommerce has, including restrictions and limits
- Export every coupon to a CSV in exactly the columns the importer reads back
- Idempotent: coupons by code, orders by your own reference
- A dry run that is the importer with its hands tied
- Row-by-row reporting, every problem naming its line
- Headers matched loosely: "Billing Email", "billing_email" and "BILLING EMAIL" are one column
- Comma, semicolon, tab or pipe delimited — detected, not assumed
- Amounts read the way people type them, so 1.250,00 is 1250 and not 1
- Streamed a row at a time, so a fifty-thousand-row file is not held in memory
- No database tables, no generated files and no storefront surface at all
Every license includes
- One year of updates and priority support, delivered straight to your WordPress dashboard.
- Use on 1, 5 or 25 sites depending on your license — local, staging and development sites are always free.
- 30-day money-back guarantee — full refund, no questions asked.
- Keeps working after expiry — if you choose not to renew, the plugin keeps running exactly as installed; it simply stops receiving updates and support until you do.
Requires WordPress 6.4+ · PHP 7.4+ · tested up to WordPress 7.0. Works with the classic and block checkout alike.

David G. (verified owner) –
Set it up on a staging copy first out of habit. Didn’t need to. Sensible defaults meant I barely had to configure Order Import.
Gary R. (verified owner) –
The core of it is right. The edges need a bit of work. I would like one more option in Order Import, but it is fine as it is.
Peter C (verified owner) –
Does the important bits well.
Andrea S. (verified owner) –
Vale il prezzo solo per il tempo che mi ha fatto risparmiare. Order Import è tra i quattro plugin che metto sempre. Lo consiglio.
Cristina M. (verified owner) –
Configurato una volta e mai più toccato. Nessun errore nei log da quando ho installato Order Import. Compratelo e pensate ad altro.