Manual for Channel Partners: Matching Your Catalogue Against Icecat

By
Manual

Version: 1.0
Updated 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.


1. Should you match it yourself?

Matching on your side is worth building when:

  • Your assortment changes constantly. You add products daily and want them matched the moment they arrive, without waiting for a file to be regenerated.
  • You want to keep the rules in your hands. Your own brand spellings, your own exceptions, your own decision about what counts as a confident match.
  • You already process the index files. You are downloading the catalogue anyway; the matching is then one extra pass over data you have.

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.

2. What you need

FileWhy
files.index.xml.gz (or on_market.index.xml.gz)The products, their codes and their GTINs
SuppliersList.xml.gzBrand names and their Icecat brand IDs

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.

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.

3. The rule in one paragraph

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.

4. Step one — prepare your own values

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.

  • Remove whitespace at the start and the end, and any invisible characters your feed carries.
  • Do not change anything else. A product code is not a word: its dashes, slashes, dots and capitals are part of the identifier.
  • Expect a product code of up to 60 characters and a GTIN of up to 14 digits. Anything much longer is a mis-mapped column — a description that ended up in the brand field, for example — and is worth rejecting before it costs you a matching run.

5. Step two — build the lookup tables

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.

TableKeyValueBuilt from
GTIN tablenormalised GTINProduct_IDevery <EAN_UPC Value> under a <file>
Code tablebrand ID + product codeProduct_IDSupplier_id and Prod_ID on <file>
Mapped-code tablebrand ID + alternative codeProduct_IDevery <M_Prod_ID> under a <file>

And one more from SuppliersList.xml:

TableKeyValue
Brand tablebrand namebrand ID

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.

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.

6. Step three — normalise the GTIN

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:

  1. Remove the leading zeros.
  2. If what is left is shorter than 13 characters, pad it with zeros on the left to 13.

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.

Two points to decide before you run it:

  • IsApproved. A GTIN that is not approved has been claimed but not yet confirmed. Icecat publishes it because it is usually right. You may accept it as a match, or keep those matches in a separate bucket for review — but decide deliberately rather than by accident.
  • One GTIN leads to exactly one product. In the Icecat catalogue a GTIN identifies a single product, so your GTIN table holds one product per key, and a match on it is as strong as a match gets. The opposite is not true: one product can carry many GTINs, because packaging variants and regional versions share a data sheet. If your lookup ever ends up with two products under the same GTIN, do not pick one — that is a data problem on one side or the other. Leave the article unmatched and report both product IDs to your account manager.

7. Step four — resolve the brand

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.

So build your own small alias list and keep it next to your import. In practice it needs:

  • the legal suffixes your suppliers add and Icecat does not: Inc., GmbH, B.V., Ltd;
  • the punctuation differences: Hewlett-Packard against Hewlett Packard;
  • the house spellings your own buyers use.

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.

8. Step five — match the product code

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.

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.

9. Step six — record the result

For every article, store at least:

WhatWhy
The Icecat Product_IDIt is the identifier you use in every Icecat API afterwards
Which key matched — GTIN or product codeA catalogue matched mostly on product codes is more fragile than one matched on GTINs; you want to see that number move
The original brand, code and GTIN as your supplier sent themSo a person can see what went in
Quality and Limited from the index lineA matched product is not automatically a product you may publish

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.

10. What to do with what did not match

Unmatched articles fall into a small number of groups, and each has its own answer:

Why it did not matchWhat to do
Your supplier sent no GTIN and a brand we do not knowAsk the supplier for the GTIN. It is the most reliable key in the chain, and the one that costs you nothing to store.
The brand name differs from oursAdd it to your alias list.
The product code differs from the brand’s ownNothing on your side; this is what the mapped-code table is for, and what it does not cover, Icecat adds over time. Re-run the match after the next refresh.
The product is not in the Icecat catalogue yetSend it to us. A product nobody has described is in nobody.index; an article missing altogether can be requested through your account manager.
The product is in the catalogue but not in your subscriptionThe brand is a Full Icecat brand and you have Open Icecat, or the data sheet is limited. Check SuppliersList for the Sponsor attribute.

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.

11. Keeping the match fresh

A match is not done once. The catalogue moves underneath it:

  1. Every day, read daily.index and re-run the match for the lines you have not matched yet. Products gain GTINs and alternative codes over time; an article that failed yesterday can match today without anything changing on your side.
  2. Act on Quality="REMOVED". The product is gone from the catalogue and your link to it will stop working. It appears in daily.index for one day only.
  3. Watch Updated on the lines you did match, and re-fetch only those data sheets.
  4. Re-run the whole match monthly against the full index file. New brands appear, mappings are added, and your own alias list has grown in the meantime.

12. A worked example

Your feed line:

Brand: PHILIPS      Code: HR2345/19/00     GTIN: 08710103759058
  1. Trim the values. The brand becomes PHILIPS, the code stays HR2345/19/00, the GTIN stays 08710103759058.
  2. Normalise the GTIN: strip the leading zero → 8710103759058, which is 13 characters, so no padding is needed.
  3. Look it up in the GTIN table. Suppose it is not there — the brand has not registered this packaging variant with us.
  4. Resolve the brand: PHILIPS matches Philips in SuppliersList ignoring case → brand ID 25.
  5. Look up 25 + HR2345/19/00 in the code table. Not there: the brand’s main code is HR2345/19.
  6. Look up 25 + HR2345/19/00 in the mapped-code table. Found → Product_ID 36153639.
  7. Store the result: product ID 36153639, matched by product code, via a mapped code.

Had step 3 succeeded, steps 4 to 6 would never have run. That is the whole point of the order.

13. Reference: the keys at a glance

KeyWhere it is in the index fileHow it is compared
GTIN<EAN_UPC Value>Leading zeros removed, padded left with zeros to 13, exact
BrandSupplier_id on <file>, named in SuppliersListExact on the name, ignoring case, plus your own alias list
Product codeProd_ID on <file>Exact, trimmed, with the brand
Alternative product code<M_Prod_ID> under a <file>Exact, trimmed, with the brand of the mapped code
Icecat product IDProduct_ID on <file>The result of the match; the key you use from then on
manual thumbnail3

Manual for Channel Partners: Icecat Live HTML

Icecat Live is a (free) service that enables you to insert real-time produc...
 June 10, 2022

Icecat Add-Ons Overview. NEW: Claude AI, ChatGPT, AgenticFlow.AI, Mindpal.space and BoltAI

Icecat has a huge list of integration partners, making it easy for clients ...
 September 3, 2025
LIVE JS

How to Create a Button that Opens Video in a Modal Window

Recently, our Icecat Live JavaScript interface was updated with two new fun...
 November 3, 2021
New Standard video thumbnail

Autheos video acquisition completed

July 21, Icecat and Autheos jointly a...
 September 7, 2021
Manual How to Import Free Product Content Into Your Webshop via Icecat

Manual: How to Import Free Product Content Into Your E-commerce System via Icecat API

This guide is intended for developers working with Icecat via API. The docu...
 May 24, 2024