How to Match Supplier Products Without a Shared GTIN

Match supplier SKUs without a shared GTIN using manufacturer identity, normalized part numbers, specifications, dimensions, packaging, and calibrated review.

published catalog-matchingsupplier-dataidentifiers

The same industrial fitting appears as a manufacturer part number, a buyer code inherited from a 2011 ERP migration, a distributor SKU, and a free-text description. None of them is a GTIN. Product matching without GTIN is therefore not an exceptional workflow; for many industrial catalogs, it is the normal case.

The safe approach is to assemble multiple pieces of evidence, normalize them into comparable values, and make uncertainty explicit. No single weak field should be allowed to stand in for identity.

Understand what each identifier proves

Identifier What it tells you Main limitation
GTIN A trade item identifier assigned for a defined package level Missing, invalid, copied, or different across packaging levels
Manufacturer part number The maker's reference for a product or variant Formatting varies; revisions and reused numbers require manufacturer context
Supplier SKU The supplier's internal sellable-item key Not portable across suppliers and may represent a pack or commercial offer
Buyer or ERP code A durable internal reference May encode legacy duplicates or an obsolete hierarchy
Description Human-readable product evidence Abbreviated, multilingual, incomplete, and not unique

Read GTIN vs MPN vs SKU before designing a rule that treats these identifiers as interchangeable.

A seven-step matching workflow

  1. Preserve every source record and identifier

    Keep the raw supplier row, source file, supplier SKU, import time, and previous identifiers. Normalization should add comparable fields, not destroy the original evidence.

  2. Resolve brand and manufacturer identity

    Map spelling variants, legal entities, house brands, and acquired brands to stable organization identities. An MPN comparison is unsafe if ABC, A.B.C. GmbH, and a distributor private label have not been resolved correctly.

  3. Normalize part numbers carefully

    Compare case, whitespace, and punctuation-insensitive forms while retaining the original. Never remove characters blindly: a suffix can encode voltage, size, material, region, or revision.

  4. Standardize units, dimensions, and packaging

    Convert comparable measurements to canonical units (a unit and dimension converter handles metric and imperial) and separate product dimensions from pack dimensions. Distinguish each, inner, case, and pallet so a case of 12 is not merged with one item.

  5. Extract category-specific specifications

    Thread, diameter, pressure, material, voltage, power, and compliance ratings are stronger evidence than generic words in a title. Define which fields establish identity for each product family.

  6. Generate and score plausible candidates

    Retrieve candidates using several routes — manufacturer plus partial MPN, category plus dimensions, historical cross-reference, or normalized specifications — then score agreements and contradictions.

  7. Apply decision bands and review ambiguity

    Auto-accept only high-confidence pairs with no identity-critical contradiction. Send the uncertain middle to a reviewer and reject weak candidates. Store the evidence and reason with the decision.

Evidence that becomes important when GTIN is absent

For a fastener, diameter, length, thread form, pitch, material, grade, finish, and package quantity jointly carry identity. For a motor, voltage, phase, power, frame, speed, and mounting matter — a motor frame size lookup turns a NEMA frame designation into comparable mounting dimensions. The evidence model must change by category.

Historical identifiers are particularly valuable. A superseded MPN, old buyer code, or supplier cross-reference can connect records that appear unrelated today. Preserve those aliases in a canonical product record instead of overwriting them with the latest value.

Separate sameness from relatedness

Matching systems frequently damage catalogs by treating every useful relationship as a merge.

Relationship Correct treatment
Same product, different supplier offer Link both offers to one canonical product
Same product, different pack quantity Keep distinct trade items and relate their pack hierarchy
Size or voltage variant Keep distinct products under a variant family
Compatible equivalent Keep distinct products with an equivalence relationship
Superseded by a replacement Keep both historical identities and record the replacement link

This is entity resolution: deciding what real-world entity a record refers to and what relationship connects it to other entities, rather than merely finding similar strings.

Worked example: three suppliers, no GTIN

Three suppliers send rows for what may be the same hydraulic adapter. None carries a GTIN. One sends only a description for one row.

Input (as received, after parsing, before any normalization):

row_id,supplier,supplier_sku,manufacturer_raw,mpn_raw,gtin,description_raw,thread_a,thread_b,material,qty_per_pack,uom
R1,Supplier A,A-1001,Northvale Hydraulics,HX-4410-12,,"Adapter 1/2 NPT male x 3/4 JIC male, steel",1/2 NPT,3/4 JIC,steel,1,EA
R2,Supplier B,B-77310,NORTHVALE HYD.,HX441012,,"ADAPTER NPT 1/2 M - JIC 3/4 M STEEL",1/2 NPT,3/4 JIC,steel,1,EA
R3,Supplier C,C-HX4410-12-25,Northvale,HX-4410-12,,"Adapter 1/2 NPT x 3/4 JIC, steel, box of 25",1/2 NPT,3/4 JIC,steel,25,BX
R4,Supplier C,C-HX4410-16,Northvale,HX-4410-16,,"Adapter 1/2 NPT x 1 JIC, steel",1/2 NPT,1 JIC,steel,1,EA
R5,Supplier B,B-77311,,,,"ADAPTER 1/2 NPT M X 3/4 JIC M STEEL",1/2 NPT,3/4 JIC,steel,1,EA

Evidence per pair

After normalization (manufacturer alias resolved to one organization, MPN compared with case, spaces and hyphens ignored but the original kept):

Pair Manufacturer MPN (normalized) Controlled attributes Pack Outcome
R1 and R2 Agree (alias resolved) Agree: HX441012 Agree Agree: 1 EA MERGE, SAME_AS
R1 and R3 Agree Agree: HX441012 Agree Differ: 1 vs 25 KEEP_SEPARATE, PACK_OF x25
R2 and R3 Agree Agree Agree Differ: 1 vs 25 KEEP_SEPARATE, PACK_OF x25
R1 and R4 Agree Differ: 12 vs 16 Differ: thread_b 3/4 vs 1 JIC Agree KEEP_SEPARATE, NOT_SAME_AS (negative example)
R1 and R5 Missing on R5 Missing on R5 Agree Agree REVIEW (candidate only)

Why each pair lands where it does:

  • R1 and R2 carry no GTIN on either side, so GTIN plays no part. The decision rests on a resolved manufacturer, an equal normalized MPN, equal controlled attributes and equal pack. Several independent signals agree and none contradict.
  • R1 and R3 have the same part but a box of 25 is a different trade item. This is the case covered in Same MPN, Different Pack Sizes.
  • R1 and R4 are the negative example. The descriptions are almost identical and the manufacturer is the same, but the MPN suffix and the second thread size differ. Text similarity would have scored this pair high. The attribute contradiction vetoes it, and the stored NOT_SAME_AS stops it returning to the queue.
  • R1 and R5 agree on every attribute but R5 has no manufacturer or MPN. Attributes shared by many manufacturers do not prove identity, so this is a candidate for review, not a match.

Matching decisions (output, illustrative / synthetic):

pair_id,record_a,record_b,decision,relationship,score,evidence_agree,evidence_differ,evidence_missing,rule
P1,R1,R2,MERGE,SAME_AS,0.95,"manufacturer;mpn_normalized;thread_a;thread_b;material;qty_per_pack","","gtin","accept: mpn+manufacturer+attributes, no contradiction"
P2,R1,R3,KEEP_SEPARATE,PACK_OF,0.93,"manufacturer;mpn_normalized;thread_a;thread_b;material","qty_per_pack;uom","gtin","pack differs: relate, never merge"
P3,R2,R3,KEEP_SEPARATE,PACK_OF,0.93,"manufacturer;mpn_normalized;thread_a;thread_b;material","qty_per_pack;uom","gtin","pack differs: relate, never merge"
P4,R1,R4,KEEP_SEPARATE,NOT_SAME_AS,0.12,"manufacturer;thread_a;material;qty_per_pack","mpn_normalized;thread_b","gtin","identity-critical contradiction: veto"
P5,R1,R5,REVIEW,UNKNOWN,0.55,"thread_a;thread_b;material;qty_per_pack","","manufacturer;mpn;gtin","no manufacturer or MPN: attributes alone insufficient"

The output keeps every compared field in one of three buckets (agree, differ, missing), so a reviewer or auditor can see why without rerunning anything. Relationship names follow Product Relationship Types.

Manual review rules

Send a pair to a person when any of these is true:

  1. A required identity field (manufacturer or MPN) is missing on one side.
  2. Controlled attributes agree but a free-text field disagrees about pack, material or size.
  3. Pack or unit of measure cannot be parsed.
  4. The pair would be the first match between two suppliers with different conventions.
  5. A previously stored NOT_SAME_AS would be overturned.

A reviewer decision is recorded as evidence like any other, with who decided and when.

Preserve the source data

Do not overwrite the raw rows with the normalized form. Keep manufacturer_raw, mpn_raw and description_raw as received, add normalized columns beside them, and link the supplier SKU to the canonical product rather than replacing it. When a supplier later sends HX441012 instead of HX-4410-12, the alias still resolves. The decision output above references source row_id values for this reason.

Validate the process

Create labeled examples by supplier and category, then track precision, recall, false-merge rate, review rate, and “no candidate found” rate. Sample auto-accepted decisions continuously. A supplier feed can change column semantics or packaging conventions without warning, so last month’s safe threshold may not remain safe.

Write accepted links back with the supplier identifier, canonical product identifier, decision status, confidence, evidence, and rule or model version. That audit trail makes later correction possible without losing source history.

FAQ

Can supplier products be matched without GTINs?
Yes. Use several independent signals: normalized manufacturer part number, resolved manufacturer identity, dimensions, specifications, unit of measure, packaging, category, and historical identifiers. Require stronger combined evidence when no globally unique identifier is shared.
Is a supplier SKU enough to identify a product?
Usually not across organizations. A supplier SKU identifies an item inside that supplier’s system and can change or be reused. Preserve it as a source identifier, but connect it to a canonical product using manufacturer and product evidence.
How do you prevent false matches between product variants?
Treat variant-defining fields such as voltage, size, material, color, connection type, and pack quantity as hard or heavily weighted constraints. Route ambiguous pairs to review and keep equivalents or replacements as relationships rather than merging them as identical products.
What should a reviewer see for each candidate pair?
The two source rows side by side, each compared field marked as agree, differ or missing, the relationship being proposed, and the rule that routed the pair to review. A decision without that evidence cannot be audited or reused.

Claro

Stop maintaining this by hand

Claro keeps product and supplier data trusted as catalogs change — matching, deduplication, enrichment, and validated write-back into the systems you already run.

Book a demo