Guide

When your supplier sends part numbers instead of your SKUs

Your products carry your own SKUs. The price list carries the manufacturer's part numbers. WooCommerce import matches only by ID or SKU, so the standard answer is a spreadsheet with a VLOOKUP that breaks the moment a code or a name changes. This page shows the other way.

Short answer

Match each row in a fixed order: barcode (EAN) if both sides have one, then your SKU, then name similarity above a threshold, and whatever is left you pair by hand once. The pairing is stored for that supplier, so the next price list matches those rows instantly, even with no shared code.

Nothing is matched silently below the threshold. A row the system is not sure about is shown to you with its candidates, not guessed. Try the three cases below, and pair the third one yourself.

The row in the price list

CodeHG/442-LNameHinge soft-close 110° LEANnot in the filePrice€5.60

No barcode, and the code HG/442-L is nothing like your SKU. The name is close enough: 93% similarity, above the threshold, so it matches and is flagged for a glance on the review screen.

The matching order

  1. Barcode (EAN)

    No barcode in the price list. Next.

  2. Your SKU

    Code does not equal any of your SKUs. Next.

  3. Name similarity

    93.0% similar to Soft-close hinge 110 degrees, left. Matched and flagged for a glance.

  4. You pair it once

    Only what the first three steps could not decide.

Step by step

The matching order, step by step

Strongest key first, weakest last, and the step that asks you comes only when the others could not decide.

  1. Barcode (EAN) when both sides have one

    The most reliable key there is: the manufacturer assigns it and it never changes with a rename. If your products do not carry EANs yet, adding them is the single change that improves matching most.

  2. Your SKU, exact

    Some suppliers reuse your codes, or you built your SKUs from theirs. An exact match on the SKU field in WooCommerce is taken as certain.

  3. Name similarity, above a threshold

    Names are normalised (case, spacing, punctuation, units) and compared. A match above the threshold is accepted and flagged so you see it on the review screen. Below it, nothing is assumed.

  4. You pair the rest, with candidates shown

    For each unresolved row the screen shows the closest products in your store. You pick one, or search, or mark the row as a product you do not carry.

  5. The pairing is kept for that supplier

    From then on the supplier's code maps straight to your product. A store with fifteen thousand products does the manual work once, spread over its first few price lists, not every month.

What it does not do

What the matcher refuses to do

  • It does not guess below the threshold

    A weak name match is never applied silently. It is shown to you with candidates. The cost of a wrong match is a wrong price on a live product, and no threshold is worth that.

  • It does not merge or split variations

    Rows are matched to existing products and variations. If the supplier lists sizes as separate rows and your product is variable, each row matches its variation, but the structure of your product is not changed.

  • It does not create products

    Rows with no product in your store go to a separate list, with the supplier's cost and your rule's suggested retail. Creating them remains your decision.

Questions people ask before trying it

Try it on your own price list, not ours.

Start the 14-day trial, connect your store and upload the last file a supplier sent you. Nothing is written to WooCommerce until you approve it.

No card. Every change can be undone.

Cookies on this site

Necessary cookies keep you signed in, keep the site secure and remember your language. We would also like analytics cookies, so we can see which pages help and which do not. Nothing loads without your consent. Cookie policy