Map the fields of an unrecognised supplier XML
When a supplier XML matches no known format, inspect the file, pick the product record, map each field from sample values and run a dry run.
Setup Requires the free plan or higher Verified: October 2026 · v0.1 Draft
Draft: written from the product plan before launch. Screenshots are added when the app is released and the steps are re-verified.
Not every supplier uses Ticimax, T-Soft, Google or Akakçe format. For any other product XML you tell Buinbu which element holds a product and where each value sits; from then on the source behaves like any other: dry run, apply and automatic updates.
When the mapping card appears
Add the source as usual: Import, Add source, paste the XML URL and choose Save and run a dry run. If the format is not recognised, the run ends with “Run failed: Unrecognized XML…” and the Field mapping card appears on the source page. The price rules you entered on the form stay valid for the mapped source.
1. Inspect the file
Choose Inspect file. Buinbu downloads only the first 256 KB of the file and looks for an element that repeats and has child elements. If it finds none, the card reads “No repeating product record found. Make sure the address is a product XML.”
2. Choose the product record
Under Product record, Element that holds each product (or variant) lists the candidates as <Urun> · 3 records, the shallowest first. The count covers the inspected part only, not the whole file. Pick the element that wraps exactly one product, or one variant when the supplier writes one record per size or colour. Changing the element inspects the file again.
3. Map the fields
Under Fields each target field has a list of the paths found in the first five records, each with a sample value: Fiyatlar/Satis — 749,90 TL. Fields whose path name looks familiar (barkod, stok, marka, price) are filled in for you; check each one, and choose — Not used — for anything you do not need. Required fields are marked with *.
| Field | Required | Notes |
|---|---|---|
| Product / variant code | Yes | Unique per record; also the SKU when SKU is not mapped |
| Product name | Yes | |
| Sale price | Yes | 749,90, 1.249,90 TL and 349.90 TRY are read; a currency in the value is used |
| List (regular) price | Kept as compare-at price only when higher than the sale price | |
| Stock | Not mapped: stock is unknown, so new products are created untracked and existing stock stays | |
| Barcode, SKU | Used for matching: barcode first, then SKU | |
| Brand, Category, Description | Category levels split at >; the last level becomes the product type | |
| Main image, Additional images | Additional images takes every value of a repeating path | |
| Variant group code | Records with the same code become variants of one product | |
| Option 1 value, Option 2 value | Become options only when they differ inside a group | |
| Cost price | Written as cost per item when the currency matches the store’s | |
| Currency field | Overrides the currency in the price | |
| VAT rate | 20, %20 and 0.2 all mean 20% |
Save mapping and run a dry run stays disabled while a required field is empty, and the card lists them as “Required fields missing: …”.
Paths, attributes and nested elements
Paths are relative to the record element:
| Path | Reads |
|---|---|
Ad | The text of the <Ad> child |
Fiyatlar/Satis | <Satis> inside <Fiyatlar> |
@kod | The kod attribute of the record itself |
Resimler/Resim/@url | The url attribute of every <Resim> |
A path can go up to four levels below the record and end with one attribute. The lists show paths up to three levels deep that had a value in the sampled records. For this file:
<Urun kod="K-100-S">
<Ad>Linen Shirt</Ad>
<Fiyatlar><Satis>749,90 TL</Satis><Liste>899,90</Liste></Fiyatlar>
<Stok>12</Stok><Barkod>8690000000035</Barkod>
<Grup>K-100</Grup><Renk>White</Renk><Beden>S</Beden><Kdv>%20</Kdv>
<Resimler><Resim url="https://example.com/1.jpg"/></Resimler>
</Urun>
map Product / variant code to @kod, Sale price to Fiyatlar/Satis, List (regular) price to Fiyatlar/Liste, Variant group code to Grup, Option 1 value to Renk, Option 2 value to Beden and Additional images to Resimler/Resim/@url.
4. Options and pricing
- Option 1 name and Option 2 name: the Shopify option names for the two option values, by default Renk and Beden. An option whose value is the same in the whole group is dropped; if no option differs, the variants get an option named Seçenek with the record code.
- Currency (if no field): used when neither a currency field nor the price carries one; default TRY. Prices are never converted.
- Prices include VAT: on by default. Turn it off when the file has net prices; with Add VAT when source prices exclude VAT on the source (default), the VAT rate field is added, or VAT rate when the source has none (%). In the example, 749,90 net with 20% VAT becomes 899.88.
5. Save and read the dry run
Choose Save mapping and run a dry run. The banner reads “Mapping saved; a dry run started.”, the card shows the Custom mapping badge and the source type becomes Custom mapping. Read Last report as for any source, then Apply to store on a paid plan (plans).
Change or remove the mapping
- To adjust, choose Inspect file (Inspect again after a first inspection): the saved fields are kept as long as the record element is the same. Change them and save again; a new dry run starts.
- Remove mapping deletes the mapping and runs a dry run with automatic detection. Use it when the supplier switches to a supported format; an unrecognised file fails again and the card returns.
Common problems
| Symptom | Cause | Fix |
|---|---|---|
| “Could not inspect the file: …” | The URL cannot be downloaded | Open the URL in a browser; remove IP or login restrictions |
| “Product without an ID” issues | Product / variant code is empty in some records | Pick a path every record has |
| One product per size | Variant group code not mapped | Map the field that is shared by the sizes |
| Prices about 20% too high | VAT added to prices that already include it | Turn Prices include VAT on |
| A field is missing from the list | It sits deeper than three levels, or the first five records leave it empty | Ask the supplier for a flatter file |