# XML feed requirements

What a supplier XML feed must contain for Product XML Import: a reachable HTTPS URL, one element per product, a SKU, a title and a price, plus the optional fields that improve the import.

Canonical: https://productxmlimport.com/docs/xml-feed-requirements
Last updated: 2026-09-08

## Required

| Requirement | Details |
| --- | --- |
| URL | `http://` or `https://`, publicly reachable, may include a token in the query string. No FTP, no login forms. |
| Well-formed XML | The feed must parse. One unclosed tag anywhere makes the whole file unreadable. |
| One element per product | For example `<product>`, `<item>` or `<entry>`, repeated for every product. |
| Unique code per product | SKU, article number or ID. Used to match products on every run. |
| Title | Product name. |
| Price | A number. Decimal comma or point both work; currency symbols are stripped. |

## Recommended

| Field | Used for |
| --- | --- |
| Description | Product body (HTML allowed, CDATA recommended) |
| Quantity or availability | Inventory; without it products import with the default stock you choose |
| Images | Product and variant media |
| Barcode (EAN, GTIN) | Variant barcode |
| Brand | Vendor |
| Category | Product type and tags |
| Old or list price | Compare-at price |
| Weight | Shipping weight |
| Variant option (size, colour) | Variants; see below |

## Variants

Two shapes are supported. Either variants are nested inside the product:

```xml
<product>
  <code>TS-2043</code>
  <name>Cotton T-shirt</name>
  <variants>
    <variant><sku>TS-2043-S</sku><size>S</size><price>24.90</price><stock>12</stock></variant>
    <variant><sku>TS-2043-M</sku><size>M</size><price>24.90</price><stock>37</stock></variant>
  </variants>
</product>
```

or each variant is its own item sharing a parent code:

```xml
<item><sku>TS-2043-S</sku><parent>TS-2043</parent><size>S</size>…</item>
<item><sku>TS-2043-M</sku><parent>TS-2043</parent><size>M</size>…</item>
```

## Size and update frequency

Feeds up to 512 MB are read with a streaming parser. There is no product count limit in the parser. If the supplier regenerates the feed at fixed times, tell support so sync runs are scheduled after the regeneration.

## FAQ

### Is a SKU really required?

Yes. The SKU (or a unique product code) is how the app matches products between runs. Products without one are skipped and listed in the run log.

### What about images?

Image URLs must be absolute (starting with http:// or https://) and publicly reachable. Shopify downloads them; unreachable images are skipped without failing the product.

### Does the feed need to be UTF-8?

UTF-8 is recommended. Feeds that declare another encoding in the XML prolog are converted; feeds that declare nothing and are not UTF-8 may show wrong characters.
