Map Supplier Columns to WooCommerce Product Fields
Back to Blog
SEO WooCommerce
Team Katapic
9/28/2026
11 min

Map Supplier Columns to WooCommerce Product Fields

A supplier price list is not a WooCommerce catalog. Map each column to SKU, name, price, category, and attributes before importing the CSV.

How to map supplier columns to WooCommerce product fields

Mapping supplier columns to WooCommerce product fields means deciding which piece of information from the price list becomes the product name, SKU, price, category, image, or attribute in the catalog. A wholesaler's file arrives with its own labels: item code, commercial description, product family, EAN. WooCommerce expects different column names and distinct product types. Without a mapping table, the import creates incomplete product pages, duplicates, and feeds that channels reject.

A crawler reads the visible title, product-page text, images, and structured data that WooCommerce already exposes on the page. If the supplier's description column ends up in the name field, the title becomes a paragraph. If the SKU is missing, the next synchronization has no key. If the EAN sits in a free-text note, the GTIN does not reach the feeds. The mechanism is visible: fields are empty or in the wrong place, rather than being the result of a mysterious algorithm.

Mapping sheet matching supplier price-list columns with WooCommerce product fields
A price-list row becomes a product page only when every column has a WooCommerce destination field.

Why a supplier file is never ready for WooCommerce

A supplier price list is a wholesale sales tool, not a catalog schema: column names, decimal formats, and product families do not match WooCommerce's native fields.

The wholesaler optimizes the spreadsheet for people placing orders: internal code, compressed description, tiered price, units per carton. WooCommerce optimizes the product page for shoppers and indexing: readable name, stable SKU, price with a single decimal separator, store categories, filterable visible attributes, and images with public URLs. The two objects share the facts, item, price, barcode, but not the format.

An illustrative example: a store with forty products receives a CSV with the columns COD, DESCR, PZ, FAM, BARCODE. The DESCR cell contains “VASO SMALTO BLU D20 H18 PZ/CT 6”. That text is not a title, a description, or a set of attributes. It contains three compressed fields in one. Until you split them, the import publishes a product page that an assistant has difficulty citing and that Google Shopping reads as a noisy title.

Page text and structured data work together: markup confirms price and availability when they match the page.

Required and optional fields for a WooCommerce product

A name is enough to create a product page; selling it requires a price and, if you manage inventory, a quantity; avoiding duplicates requires an SKU. The remaining fields determine whether the page is complete for the store and its feeds.

In its native CSV file, WooCommerce recognizes fixed English labels. You cannot leave the supplier's column names in the header and hope the import plugin will “understand”. You must either rename the columns or use the mapping screen under Products, Import. These are the fields you will use most often.

  • Name: product-page title, visible on the page and in results.
  • SKU: the store's unique key; without an SKU, every reimport risks creating a duplicate.
  • Type: simple, variable, variation, grouped, or external.
  • Regular price: list price in the store's format, usually with a decimal point.
  • Description and Short description: full page text and list summary.
  • Categories and Tags: paths that already exist or must be created before the import.
  • Images: public URLs, one or more, separated as required by the CSV.
  • Attribute n name / Attribute n value(s): global or local attributes such as color, size, and material.
  • Parent: parent product SKU, only on variation rows.
  • Stock and In stock?: quantity and availability flag when inventory management is enabled.

Weight, dimensions, shipping class, tax class, and global identifier (GTIN, if it appears in the supplier's materials) are optional for publishing, but their absence is immediately visible in feeds and on the product page. According to Google Search Central, there are two main classes of product structured data: the markup WooCommerce already generates confirms facts only when they match the title, price, and availability written on the page.

For stores importing price lists from multiple suppliers

Anyone importing price lists from multiple suppliers into the same store should treat the SKU as a namespace. Two wholesalers may use the same code, such as “1001”. Prefix the SKU, for example FORN1-1001, or keep a supplier column as a hidden attribute, never as part of the title. A GTIN, when present and valid, remains the identity of the physical item; the SKU remains the identity of the row in your management system.

How to read and map supplier columns one by one

Open the supplier's CSV, list every header, and write the WooCommerce destination field beside it, together with a rule for values that need to be split or discarded.

Do not start with the import. Start with a mapping sheet containing three columns of your own: original header, WooCommerce field, and cleaning rule. The rule prevents the same column from ending up in two fields, or in none.

  1. Open the file in a spreadsheet with UTF-8 encoding. If Italian Excel used a semicolon, do not convert it at random: note the separator before saving.
  2. Freeze the first row and review the headers. Mark CODICE, ART, ITEM, and REF as possible SKU fields. Mark DESCRIZIONE, NOME, and ITEM NAME as possible title fields. Mark EAN, GTIN, BARCODE, and UPC as possible global identifiers.
  3. Open WooCommerce, Products, Import, and compare the native labels, Name, SKU, Regular price, Categories, Images, Attribute 1 name. Where the names do not match, rename the CSV header or map it manually in the import screen's dropdown.
  4. Write a rule for every ambiguous column. For example: map FAMIGLIA to Categories only after creating the same categories in the store; map COLORE and TAGLIA to global attributes under Products, Attributes, not to the title.
  5. Choose the Type. One row, one sellable item: simple. The same model in several sizes or colors: one variable parent and variation rows with Parent set to the parent's SKU.
  6. Normalize numbers. Convert prices with a decimal comma to the format expected by the store. Use whole numbers for quantities. Use the weight unit configured under WooCommerce, Settings, Products.
  7. Save a test CSV with ten rows, import it as a draft, open a product page, and check the name, SKU, price, stock, attributes, and image before touching the entire catalog.

An illustrative before-and-after example, explicitly presented as such. Before, one cell: “MAGLIA COTONE UOMO BLU M 19,90 8001234567897”. After mapping: SKU from the item code; Name “Blue men's cotton shirt”; Material attribute cotton; Color attribute blue; Size attribute M; Regular price 19.90; GTIN only if the barcode appears in the supplier's materials and passes its check digit. The carton information is not the title.

For people with limited time for the daily routine

People with limited time for the daily routine do not map every new row manually. Freeze the mapping table in a template sheet and, for each price list, rename only the header. If the supplier adds a column, treat it as an exception: either ignore it or connect it to an existing attribute. The hidden cost is not the import; it is having to rebuild the rules every Monday.

Common mistakes

The mapping mistakes that damage SEO and feeds are always the same: a messy title, a wholesaler category used instead of the store category, an invented or misplaced GTIN, and variations split into simple products.

Title identical to the supplier's description. It appears like this: the storefront shows an all-caps name with carton quantities, internal codes, and dimensions attached. This happens because DESCR is the only text column and ends up in Name. Fix it by extracting a short title, product, material, distinctive feature, and moving the rest to Description or attributes. Apply Title Case afterward, not instead of cleaning.

Supplier category copied as the store category. It appears like this: under Products, Categories, dozens of duplicate entries appear, such as “CERAMICA”, “Ceramica”, and “ceramiche”, while the theme filters group nothing. This happens because FAMIGLIA does not match the taxonomy you chose. Fix it by creating the category tree in WooCommerce first and mapping it with an equivalence table, for example supplier family “CER-VAS” to category “Vases”. The Google taxonomy category is a separate field: it is not the store slug and should not be improvised in the CSV unless you have confirmed it.

GTIN in the wrong place or invented. It appears like this: the feed reports missing, duplicate, or invalid identifiers; on the product page, the code is sitting in the notes. This happens because BARCODE was placed in Description, or because someone copied an EAN from a third-party website. Fix it by copying the code only from the supplier's materials, column, packaging photo, or PDF, and leaving the field empty if it is missing. A GTIN should not be searched for online or manufactured.

Variations imported as simple products. It appears like this: three pages for “same sweater, three sizes”, three URLs, and three prices that diverge at the first update. This happens because the price list has one row per child SKU and the import uses Type simple for every row. Fix it with one parent row using Type variable and attributes used for variations; child rows use Type variation, Parent equal to the parent SKU, and one attribute value per row. According to the WooCommerce developer blog, starting with WooCommerce version 11.1, variation galleries will be enabled for every store: it makes sense to map images for each variation, not only the parent image.

For an artisan selling ceramics and managing about forty products

An artisan selling ceramics and managing about forty products will often receive a sheet from the workshop with glaze, diameter, and units per case in the same cell. Here the mapping is short and only needs to be done once: your own SKU, a name with shape and color, Diameter and Glaze attributes, and shipping weight. A variable product is unnecessary if every vase is unique: use Type simple, different images, and no Parent.

CSV import from the supplier's sheet to the published catalog

WooCommerce's native CSV import publishes only what you have already mapped: upload a test file, match the columns, check a draft product page, and only then import the entire catalog.

The path in the management system is Products, Import. WooCommerce asks for the file and then displays each CSV header beside a menu of known fields. If you renamed the columns with native names, Name, SKU, Regular price, the matching is almost automatic. If you left COD and DESCR, you must choose manually. The option to update existing products uses the SKU as the key: without an SKU, the update creates new rows.

  1. First export a CSV for a product that is already published, Products, Export, and use it as the column template. It is the vocabulary the import understands without ambiguity.
  2. Copy the supplier's values under those headers, not the other way around. Keep the original price list as an archive; the import file is a clean derivative.
  3. Set Published to -1, draft, on the first pass. This keeps products with messy titles out of the storefront.
  4. Upload the file, check the column mapping one field at a time, start the import, and open three sample product pages: one simple product, one variation, and one without an image.
  5. Correct the sheet, not the product pages one by one, and reimport while updating by SKU. When the name, price, stock, and attributes match, change Published to 1.

If the supplier does not provide a CSV but a formatted price list, extraction comes before mapping. In that case, move from PDF to product data and only then align the columns with WooCommerce fields. The same applies to a label photo: first capture the visible facts, then map them to SKU, name, and attributes.

WooCommerce CSV import screen matching supplier columns
Under Products, Import, every CSV header must be connected to a native field before publishing.

How to speed up mapping for large catalogs without doing everything by hand

For large catalogs, speed up mapping by fixing the matching rules, global attributes, and categories before importing, then updating only the columns the supplier has actually changed.

The temptation is to open two thousand rows and clean the titles manually. That approach does not scale. Prepare the store: under Products, Attributes, create Color, Size, Material, and Brand as global attributes, with the values already used in the storefront. Under Products, Categories, define the tree. In the mapping sheet, define the supplier's equivalents for those lists. The import writes known values; new values remain visible because they do not match the list.

  • Update by SKU only the price, stock, and availability when the price list is a renewal.
  • Keep Name and Description out of the automatic renewal if you have already rewritten them in readable English.
  • Separate the files: one for new SKUs, one for updates, and one for variations.
  • Do not mix simple products and variations in the same CSV until the Parent column is complete and consistent.
  • Remove from the import file any columns without a destination field, such as tiered discounts, minimum order, and the wholesaler's internal notes.
A GTIN is read only from the merchant's materials, packaging photo, PDF, or CSV column, and must pass its check digit. It is not invented or searched for online.
For those aligning the same price list across multiple sales channels

Anyone aligning the same price list across multiple sales channels, Amazon, eBay, Etsy, must decide where the facts are mastered. WooCommerce holds the SKU, store title, price, and stock. Marketplaces receive a derived export, not the supplier's raw CSV. If you map an Amazon title to the store's Name, you lose the useful storefront wording. A channel-specific attribute or export column is better, with one Name designed for the site's product page.

For a possible feed to shopping assistants, the nine fields in the OpenAI specification remain: item_id, title, description, url, brand, seller_name, image_url, availability, and price with currency. GTIN and MPN are optional. Those fields are filled after WooCommerce mapping, not instead of Name and SKU. The names link and image_link belong to Merchant Center, not to that feed.

How Katapic helps move a price list into the right fields

Katapic imports from CSV, PDF, and photos, completes only empty fields with verified facts, and sends the product pages back to WooCommerce through bidirectional synchronization.

If the supplier sends a spreadsheet, the CSV import brings it into the working catalog; if they send a formatted price list, page-by-page reading extracts text and embedded images and matches them to products. One photo, one product page: from the photo Katapic recognizes the product, brand, category, and attributes, and everything remains editable before publishing. Completing empty fields is a separate action, explicitly requested and accompanied by a source.

The free scan of a public WooCommerce catalog, without an account and in read-only mode, shows two scores for each product page, classic search and assistant readiness, along with a data readiness check for missing or incorrect fields; Relevance and Completeness come with a free account. A Google taxonomy category is suggested for each store category: you confirm it, and the confirmed identifier enters the feeds. Probable variations, same title with size, color, or package, are proposed as variations of a single product and are grouped only after confirmation.

WooCommerce synchronization is bidirectional and uses the free plugin. Product-page rewriting passes through a claims verifier: brands, certifications, and brand history are not invented; if a measurement found online contradicts the merchant's title, the merchant's data remains. Free corrections, Title Case for all-caps titles, HTML cleanup, condition, manufacturer GTIN absence statement, variation grouping, and Google category confirmation, are applied only after explicit confirmation and remain reversible. To fix a WooCommerce catalog, start with the facts you already have, not with generated text replacing them.

Frequently asked questions about CSV mapping in WooCommerce

Which fields are required for a WooCommerce product in a CSV import?

You need at least Name to create the product page. To sell it, you need Regular price and, if inventory is enabled, Stock with In stock?. SKU is not required by the creation form, but without an SKU the import cannot update products and creates duplicates. Type is needed as soon as you have variations. Categories, images, attributes, and GTIN do not block publication, but a product page without those facts remains poor for the store and its feeds.

How do you map supplier-file columns to WooCommerce product fields?

Create a mapping table: every price-list header gets a destination field, SKU, Name, Regular price, Categories, Images, or Attribute, and a cleaning rule. Then rename the CSV header with the native names or map it manually under Products, Import. Test it with ten draft rows. Only when the title, price, and attributes match should you import the rest while updating by SKU.

Where does the supplier's EAN go on a WooCommerce product page?

The EAN belongs in the product's global identifier, GTIN, not in the title or description. Copy it only if it appears in the supplier's materials and passes its check digit. If the column is empty, leave the field empty: do not search for a code online or invent one. An EAN placed in the notes does not enter feeds and does not help the product page.

How do you import a WooCommerce product CSV without duplicating SKUs?

Every row must have a unique SKU in the store. During import, choose the option to update existing products: WooCommerce uses the SKU as the key. Prefix SKUs if two suppliers share the same code. Do not import the same file twice without SKUs. First check Products, All products, search by SKU, and only then start the price and stock update.

How do you assign a Google category to WooCommerce products?

The store category under Products, Categories, is not the Google taxonomy category. First define the internal tree and map the supplier's family to it; then separately associate the confirmed Google ID for use in feeds. Do not paste the wholesaler's FAMIGLIA string into the Google field. Without confirmation, you have a storefront category useful to the theme, not a taxonomy ID for channels.

What happens if supplier variations arrive as separate rows?

If every size or color is a row and you import them as simple products, you get duplicate-looking pages and separate URLs. The correct mapping is one variable parent with the variation attributes and variation children with Parent equal to the parent's SKU. Use one attribute value per child row. Link variation images to the child row, not only the parent, so the gallery displays the correct item.

Can you treat a PDF price list like a CSV to map?

Yes, but in two stages. First extract the facts from pages and tables, code, name, price, and any embedded images, and produce a grid. Then apply the same CSV mapping rules to that grid: SKU, Name, price, categories, and attributes. Skipping extraction and copying manually from a hundred-page PDF is the route to messy titles and empty fields.

Further reading

Frequently asked questions

Which fields are required for a WooCommerce product in a CSV import?
You need at least Name to create the product page. To sell it, you need Regular price and, if inventory is enabled, Stock with In stock?. SKU is not required by the creation form, but without an SKU the import cannot update products and creates duplicates. Type is needed as soon as you have variations. Categories, images, attributes, and GTIN do not block publication, but a product page without those facts remains poor for the store and its feeds.
How do you map supplier-file columns to WooCommerce product fields?
Create a mapping table: every price-list header gets a destination field, SKU, Name, Regular price, Categories, Images, or Attribute, and a cleaning rule. Then rename the CSV header with the native names or map it manually under Products, Import. Test it with ten draft rows. Only when the title, price, and attributes match should you import the rest while updating by SKU.
Where does the supplier's EAN go on a WooCommerce product page?
The EAN belongs in the product's global identifier, GTIN, not in the title or description. Copy it only if it appears in the supplier's materials and passes its check digit. If the column is empty, leave the field empty: do not search for a code online or invent one. An EAN placed in the notes does not enter feeds and does not help the product page.
How do you import a WooCommerce product CSV without duplicating SKUs?
Every row must have a unique SKU in the store. During import, choose the option to update existing products: WooCommerce uses the SKU as the key. Prefix SKUs if two suppliers share the same code. Do not import the same file twice without SKUs. First check Products, All products, search by SKU, and only then start the price and stock update.
How do you assign a Google category to WooCommerce products?
The store category under Products, Categories, is not the Google taxonomy category. First define the internal tree and map the supplier's family to it; then separately associate the confirmed Google ID for use in feeds. Do not paste the wholesaler's FAMIGLIA string into the Google field. Without confirmation, you have a storefront category useful to the theme, not a taxonomy ID for channels.
What happens if supplier variations arrive as separate rows?
If every size or color is a row and you import them as simple products, you get duplicate-looking pages and separate URLs. The correct mapping is one variable parent with the variation attributes and variation children with Parent equal to the parent's SKU. Use one attribute value per child row. Link variation images to the child row, not only the parent, so the gallery displays the correct item.
Can you treat a PDF price list like a CSV to map?
Yes, but in two stages. First extract the facts from pages and tables, code, name, price, and any embedded images, and produce a grid. Then apply the same CSV mapping rules to that grid: SKU, Name, price, categories, and attributes. Skipping extraction and copying manually from a hundred-page PDF is the route to messy titles and empty fields.

Related articles