Version: 1.0Updated on: October 28th, 2026
Icecat identifies a product by its GTIN, or by the combination of brand and product code. Your own catalogue identifies it by whatever your suppliers put in their feeds. Matching is the step that joins the two, so that every article in your shop knows which Icecat data sheet belongs to it.
This manual explains how to do that matching yourself, on your side, using two files you can download: an index file and SuppliersList. It describes the same matching logic Icecat applies to a catalogue you upload to us, so that your result and ours agree.
Matching on your side is worth building when:
Have Icecat match for you — with the Personal Index File — when your catalogue is stable, when you do not want to maintain brand-name rules, or when you want the matching and the coverage report to come from the same source as the content.
The two are not exclusive. A common arrangement is to match the straightforward part yourself and send what is left over to Icecat.
files.index.xml.gz
on_market.index.xml.gz
SuppliersList.xml.gz
All three are in the repository of your subscription, level4 for Full Icecat and freexml for Open Icecat. Take the index file in the language you sell in; take on_market.index instead of files.index if you only care about products that are actually distributed.
level4
freexml
on_market.index
files.index
From your own side you need three columns per article: brand, product code and GTIN. Any two of them are enough to start; all three give the best result.
Match on GTIN first. If there is no GTIN, or it leads nowhere, match on brand plus product code. If neither works, the article is unmatched — leave it unmatched rather than guessing. There is no matching on product names: two different products can carry almost the same name, and a name match that is wrong is worse than no match at all.
For each of your articles, make a lookup version of the three values, and keep the original next to it. You will need the original to show your staff what went wrong, and to send back to your supplier.
Read the index file once and build three tables. All three fit in memory for most assortments; if yours does not, load them into a database and index the keys.
Product_ID
<EAN_UPC Value>
<file>
Supplier_id
Prod_ID
<M_Prod_ID>
And one more from SuppliersList.xml:
SuppliersList.xml
Fill the brand table from the Name attribute of each <Supplier> and from every <Names><Name> entry inside it. Localised brand names are brand names: a Greek or Japanese feed may well carry the local spelling.
Name
<Supplier>
<Names><Name>
For the mapped-code table, take the brand from the Supplier_id attribute of <M_Prod_ID> — not from the product’s own brand. An alternative code may belong to a different brand than the product it leads to.
GTINs arrive in different lengths: EAN-8, UPC-12, EAN-13, GTIN-14, and all of them with or without leading zeros. Bring both sides to the same form, with exactly these two operations:
So 0008710103759058 and 8710103759058 both become 8710103759058, and 05901234123457 becomes 5901234123457. Apply this to the GTINs in the index file and to the GTINs in your own catalogue, then compare them as strings.
0008710103759058
8710103759058
05901234123457
5901234123457
Two points to decide before you run it:
IsApproved
A brand reaches you as a name and must become a brand ID before the product code is of any use. Look the name up in your brand table, after trimming it and ignoring the difference between capitals and lower case.
That will not catch everything, and it is worth knowing why. When Icecat matches a catalogue internally, it tries the exact brand name first, and then a set of alias rules — alternative spellings and patterns such as HP* — that have been collected over years of processing supplier feeds. Those alias rules are not part of the exported files. What you get from SuppliersList is the official name and its localised forms.
HP*
SuppliersList
So build your own small alias list and keep it next to your import. In practice it needs:
Inc.
GmbH
B.V.
Ltd
Hewlett-Packard
Hewlett Packard
Every entry you add is one you will not have to add again. When a brand simply is not in SuppliersList, it is not in the Icecat catalogue — note it and move on; no spelling rule will fix it.
With a brand ID in hand, look up brand ID plus product code in your code table. The comparison is exact: trimmed, but otherwise character for character. Do not strip dashes or spaces, and do not try to be clever — HR2345/19 and HR234519 are different codes, and only one of them is in the catalogue.
HR2345/19
HR234519
If that finds nothing, look the same pair up in your mapped-code table. This is where the alternative codes of section 5 earn their place: the code your supplier sent may be a regional code, a configuration code, or the code the product carried under a previous brand, and the mapping leads from it to the right product.
If both tables come up empty, the article is unmatched.
For every article, store at least:
Quality
Limited
Limited="Yes" means the brand releases that data sheet to assigned resellers only. The match is correct, but you need authorisation from the brand before you can show the content — request it on your MyIcecat page.
Limited="Yes"
Unmatched articles fall into a small number of groups, and each has its own answer:
nobody.index
Sponsor
Upload the remainder to Icecat as a catalogue file and let our matching run over it — it has the alias and mapping rules your side does not — and take the result back as your Personal Index File.
A match is not done once. The catalogue moves underneath it:
daily.index
Quality="REMOVED"
Updated
Your feed line:
Brand: PHILIPS Code: HR2345/19/00 GTIN: 08710103759058
PHILIPS
HR2345/19/00
08710103759058
Philips
25
Had step 3 succeeded, steps 4 to 6 would never have run. That is the whole point of the order.
Read further: Icecat, e-commerce, ecommerce, Icecat, icecat catalog