Help Center

Importing a WooCommerce catalog

Chris Muench
Chris Muench
  • Updated

The item import understands the layout a WooCommerce product export uses, so variable products and their variations come in from the file WooCommerce gives you, with the common headings mapped for you.

WooCommerce exports its catalog in a particular shape: a parent row for the variable product, then one row per variation, each pointing back at its parent and carrying its own attribute values. The item import understands that shape directly, so you can export from WooCommerce and import the file more or less as it comes.

Step 3 of the item import wizard reporting a successful import of a WooCommerce product export

Everything here happens in the ordinary item import wizard described in importing your dataItems → … → Excel Import. This article covers the parts that are specific to a WooCommerce-shaped file. If you want a live, two-way connection instead of a one-off import, that is connecting WooCommerce.

Headings that map themselves

On step 2 of the wizard, columns whose headings match are mapped automatically. As well as PHP Point Of Sale's own template headings, these WooCommerce headings are recognized:

WooCommerce heading Maps to
SKU Item Number
Name Item Name
ID E-Commerce Product ID
Regular price Selling Price
Stock Quantity
Images Image URL
Parent Parent Item
Attribute 1 name, Attribute 2 name, … Variation Attribute 1 name, 2 name, …
Attribute 1 value(s), Attribute 2 value(s), … Variation Attribute 1 value(s), 2 value(s), …

Capitalization does not matter. Blank spacer columns — the empty columns WooCommerce sometimes leaves between groups — are tolerated and simply ignored. Anything that does not map itself you can map by hand in the same grid, and anything you leave unmapped is not imported.

Parent rows and variation rows

The Parent Item column is what ties a variation row to its product. Put the parent's identifier in it and the row is imported as a variation of that item rather than as an item of its own.

What the column accepts:

  • an item number or product id — the usual way to name a parent;
  • id:<value> — WooCommerce's own product ID, for parents exported without a SKU. This is exactly what WooCommerce writes in its Parent column for such products, so those rows work untouched.

The parent does not have to exist beforehand. A parent created earlier in the same import file is found, so a normal WooCommerce export — parent row first, its variations after it — imports in one pass.

If the parent cannot be found, that row fails with Parent item not found and names the identifier it could not resolve, so you can fix the file and re-run. A variation row with a Parent but nothing to identify the variation by fails with a similarly specific message rather than importing something half-formed.

Attribute columns

You get up to 10 attribute pairs — Variation Attribute 1 name / Variation Attribute 1 value(s) through 10. The name column holds the attribute (Size, Colour), the value column holds the value for that row (Large, Blue).

A value cell can hold several comma-separated values, and the import then generates one variation per combination. A parent row with Size = Small, Medium, Large and Colour = Red, Blue produces six variations in one go — handy when your source data describes the product rather than listing every variant.

The older single Variation column still works exactly as before, and takes priority when both are filled in on the same row. Existing import files do not need changing.

Two limits to know:

  • Shopify-synced items are capped at three attributes. If an item is set to sync with Shopify, a fourth attribute is rejected — Shopify products allow at most 3 attributes. Remove an attribute or disable e-commerce for this item. — and the check runs before anything is saved, so nothing is half-imported.
  • Adding a new attribute to a product that already has variations fills in a value for every existing variation automatically, rather than leaving them under-specified.

Product IDs

Two separate identifiers do two different jobs, and it is worth keeping them straight:

  • E-Commerce Product ID — the ID the online store uses for the item. WooCommerce heads this column ID, and it is what id: parent references resolve against.
  • Product ID — a field on the variation itself, separate from the item number. It is editable on the item's Variations tab and round-trips through import and export, so a variation keeps its own identifier when you export, edit and re-import. See variations, attributes and units.

Images

Variation image cells are imported too, when they are not simply repeating the parent row's images — WooCommerce exports often echo the parent's image list on every variation row, and re-importing those as variation images would be noise.

Blank rows and error messages

Blank rows anywhere in a spreadsheet are skipped rather than imported as empty records. That applies to every import — items, customers, suppliers, gift cards, item kits, receivings, sales, work orders, item counts and damages — which matters with exported files, where a trailing blank row or a spacer between sections is common. Rows that only look blank because they contain invisible whitespace are caught too.

When a row does fail validation, the error message points at the row's real position in your file, so the row number in the error matches the row number in your spreadsheet.

A suggested run-through

  1. Export your products from WooCommerce.
  2. Open Items → … → Excel Import and upload the file.
  3. On step 2, check the automatic mapping. Confirm Item Name is mapped — the wizard will not continue without it — and map anything else you want to keep.
  4. Run Complete Excel Import. If it fails, the errors name the file rows; fix them and re-run. A failed import is rolled back, so nothing is left half-applied.
  5. Spot-check a variable product afterwards: open it, look at the Variations tab, and confirm the attributes, their values and the variation product IDs came through as you expect.

Common questions

Do I have to reshape the WooCommerce file first? Usually not. The recognized headings map themselves and the parent/variation layout is understood as-is. You may still want to delete columns you do not need before importing.

My parent rows have no SKU. That is normal for WooCommerce. Keep the ID column mapped to E-Commerce Product ID and leave the Parent values as id:1234 — they resolve against it.

Can I re-import to update? Yes, with one setting turned on. A row is matched to an existing item by its Item Number (WooCommerce's SKU), then its Product ID, then its E-Commerce Product ID (WooCommerce's ID) — so you do not need to add PHP Point Of Sale item ids to the file. But the match only updates when Store Config → Application Settings → Overwrite existing items on excel import is enabled. With it off, a row matching an existing item is reported as an error and the import is rolled back rather than creating a duplicate. Turn it on before re-importing a catalog you have already loaded. See importing your data.

Should I import or connect instead? Import for a one-off migration. If WooCommerce is going to stay live alongside PHP Point Of Sale, connect the two so stock and orders stay in step — see connecting WooCommerce and how ecommerce sync works.

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request

Comments

0 comments

Please sign in to leave a comment.