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.
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
- 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.
- 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. - 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.
- 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.
- 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.
- 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.
- 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_ASstops 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:
- A required identity field (manufacturer or MPN) is missing on one side.
- Controlled attributes agree but a free-text field disagrees about pack, material or size.
- Pack or unit of measure cannot be parsed.
- The pair would be the first match between two suppliers with different conventions.
- A previously stored
NOT_SAME_ASwould 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.
Related resources
Article
Catalog Matching
Resolve product identity across supplier and internal records.
Comparison
GTIN vs MPN vs SKU
Understand what common product identifiers do and do not prove.
Article
One Product, Five Part Numbers
How industrial identity fragments across organizations and time.
Guide
Same MPN, Different Pack Sizes
When a shared part number still means two records.
Glossary
Canonical Product Record
Preserve source identifiers while resolving one product identity.
FAQ
Can supplier products be matched without GTINs?
Is a supplier SKU enough to identify a product?
How do you prevent false matches between product variants?
What should a reviewer see for each candidate pair?
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