Guide

Import Shopify Products From an XML Feed

Last updated: October 9, 2026

Upload an XML file or point at an XML URL. Simple CSV finds the repeating product records, turns their fields into columns and lets you map them to Shopify.

Many suppliers, brands and dropship partners publish XML feeds. Converting one to CSV adds another tool and another opportunity for product data to go missing.

Simple CSV reads the XML directly. Upload the file or paste its HTTPS URL, check which records the app found and map the resulting columns to Shopify fields. You do not need to write XPath or configure a schema.

Dreamlove XML feeds use this same flow. Simple CSV knows it is a Dreamlove feed. It opens the normal mapping screen with the product fields already filled in and groups related items into products with variants. You can review every field and change the title and description language before continuing.

This guide covers a one-time XML import. For a feed that changes regularly, use Pro or Scale with our supplier feed sync guide.

Import XML without converting it first

Simple CSV looks for the part of the file that repeats for each product. Once it finds those records, the normal mapping screen shows the available product data as columns with sample values.

Nested product data, attributes, repeated images and variant blocks can all be represented in the mapping. If a product contains repeating variants, Simple CSV can create one row per variant and select variant grouping before you start mapping.

When more than one part of the XML could be the product list, the XML records section shows a Record element dropdown. Choose the part that contains the products, then select Use this record element. The app reads the uploaded file again, refreshes the preview and clears any mapping you had started.

Example XML feed

This small example shows a catalog with prices and images across two variants. It is here to explain the structure, not as a template you need to copy or edit.

<catalog>
  <products>
    <product id="SF-2000-SET">
      <title>Teak Patio Set</title>
      <description>4-piece outdoor teak dining set.</description>
      <vendor>Summit Furniture</vendor>
      <prices>
        <retail currency="USD">349.00</retail>
        <wholesale currency="USD">210.00</wholesale>
      </prices>
      <image>https://cdn.example.com/sf2000-1.jpg</image>
      <image>https://cdn.example.com/sf2000-2.jpg</image>
      <variants>
        <variant>
          <variant_sku>SF-2000-SET-OAK</variant_sku>
          <color>Oak</color>
          <inventory>14</inventory>
        </variant>
        <variant>
          <variant_sku>SF-2000-SET-WAL</variant_sku>
          <color>Walnut</color>
          <inventory>6</inventory>
        </variant>
      </variants>
    </product>
  </products>
</catalog>

Simple CSV finds the repeating product record. Its two variant entries become two variant rows while the shared title, description and vendor stay with both rows.

Import your own XML feed

Step 1 - Upload the file or paste the feed URL

Open Simple CSV from Shopify Admin. Upload an XML file from your computer or paste the direct HTTPS URL supplied by your supplier. Manual file and URL imports are available on every plan.

After you submit a URL, Simple CSV shows download progress before it validates the XML. It shows a percentage when the source reports the total size, or the downloaded size so far when it does not. An XML file uploaded from your computer goes straight to validation without this download bar.

Step 2 - Confirm the product records

The mapping screen shows the selected part of the XML and the number of records found. If the XML records section offers more than one option, choose the one containing your products and select Use this record element before mapping any fields.

Step 3 - Map the columns

Match each source column to a Shopify field. The sample values help you tell an SKU from a barcode, choose the right price and check which image or variant data each column contains.

Step 4 - Choose the location and matching rule

Every import updates inventory at one Shopify location that you choose during setup. For an update, select the identifier that matches the feed to your products. Simple CSV compares SKU, handle and the first barcode exactly after ignoring letter case and surrounding spaces. If a variant has several barcodes, a secondary barcode in the feed does not match and the row is skipped. Use SKU or Shopify ID when you can.

Step 5 - Review the preview and import

Check the preview before anything changes in Shopify. Confirm the products, variants, prices and inventory values, then run the import.

For a new-product import, the Status row shows the status Simple CSV will write. Use Override status for all new products to make every new product Active, Draft or Unlisted. This overrides a mapped Status field or the default status. It does not change existing products during an update import.

When the file doesn't fit the pattern

  • No repeating element found. The app shows No repeating XML record element containing fields could be detected. Ask the supplier for a product feed with one repeated record per product.
  • Invalid XML. The error includes the parser message, which you can pass to the supplier.
  • A DOCTYPE declaration is present. Simple CSV rejects internal and external DOCTYPE declarations. Ask the supplier to export the feed without one.
  • One record is larger than 10 MB. The limit applies to each record, not the whole file.
  • The URL download is larger than 200 MB. The same download limit applies to CSV, Excel and XML URL sources.
  • The XML is inside an archive. ZIP, GZ and TAR.GZ archives are accepted. When an archive contains both a tabular file and XML, Simple CSV uses the tabular file.

Plan limits

The Free plan can run an XML import manually with up to 100 rows per file. Pro and Scale remove the row limit and add scheduled URL imports. XML uses the same row and automation limits as CSV, XLS and XLSX. It is not a separate paid add-on.

Dreamlove uses these same plan limits. If you are replacing the old Dreamlove supplier setup, run an Update import and match the existing products by SKU. The XML import creates new handles and does not reuse the old supplier handles.

If a supplier updates the XML regularly, follow the supplier feed sync guide to create a scheduled import on Pro or Scale. Each automation can target its own Shopify location.

Compare XML import options

Our Matrixify vs Simple CSV and Altera vs Simple CSV comparisons explain the differences in supported data, source-file structure, mapping and plan limits.

XML import FAQ

Frequently asked questions

Do I need to convert my XML feed to CSV first?

No. Simple CSV reads XML directly and presents the product data as columns that you can map to Shopify fields.

Can one XML file contain product variants?

Yes. Simple CSV can turn a repeating variant section within each product into separate rows and pre-select the variant grouping for the mapping step.

What if my XML has more than one possible product section?

The XML records section shows a Record element dropdown. Choose the part of the feed that contains the products, then select Use this record element. This refreshes the preview and clears any mapping you already started.

Why was my XML file rejected?

Common reasons include a DOCTYPE declaration, one record larger than 10 MB, invalid XML or no repeating element containing fields. Invalid XML reports the parser error so you can send the details to your supplier.

Can I import an XML feed from a URL instead of uploading a file?

Yes. You can run a URL import manually on every plan. Scheduled URL imports require Pro or Scale. URL downloads have a 200 MB limit.

Does Simple CSV support XML inside an archive?

Yes. Simple CSV accepts XML inside ZIP, GZ and TAR.GZ archives. When an archive contains both a tabular file and an XML file, the tabular file is used.

Does a Dreamlove XML feed use a separate supplier setup?

No. Paste the Dreamlove XML URL into the normal Import or Update flow. Simple CSV knows it is a Dreamlove feed, fills in the product fields and groups related items into products with variants. Update imports use SKU matching by default.

Set up your XML import

Install Simple CSV from the Shopify App Store, upload or link your XML feed and map it without converting the file first.

Install Simple CSV from the Shopify App Store