Skip to main content

Why Shopify Product Exports and Inventory Exports Are Separate

Nothing uploadedTested up to 10 MB

Understand why Shopify store transfers usually need both product and inventory CSV exports, and how to reconcile them before importing into a destination store.

Published: 2026-09-24Updated: 2026-09-243 minJoin Shopify product and inventory CSVs
Data workflow illustration for Why Shopify Product Exports and Inventory Exports Are Separate

A Shopify catalog transfer often starts with a surprise: the product export carries merchandising data, while inventory state is handled through a separate inventory workflow. That separation is useful inside Shopify, but it means a store split or migration needs both files before you can review the complete state of each variant.

The Shopify Product + Inventory Store Transfer Joiner puts the two exports side by side without uploading them to Nablyx. It creates a migration working file; it does not import anything into Shopify.

What the two exports are responsible for

The product CSV is where you expect catalog fields such as Handle, title, options, variant SKU, descriptions, tags, and other product attributes. Inventory exports are organized around stock state and locations. Depending on the inventory workflow, fields can include Handle, SKU, Location, Bin name, On hand (current), and On hand (new).

That is why copying only the product CSV can leave you without the location-level quantities you expected, while copying only an inventory CSV does not reconstruct the full product catalog.

Use a stable key before you move anything

Variant SKU is usually the better reconciliation key when both exports contain it because it identifies a specific sellable variant. The joiner detects Variant SKU on the product side and SKU on the inventory side first. If those fields are not available, it can fall back to Handle when both files use the same handle consistently.

Do not assume a Handle is always variant-unique. A product with several sizes or colors can repeat the same product Handle across variants. Check the resulting row counts and use SKU whenever the files provide a stable variant-level value.

Preserve multiple locations instead of choosing one

A single SKU can legitimately appear more than once in the inventory export when stock is tracked at several locations. The migration working file preserves every matching inventory row. That means one product variant can repeat beside Berlin, Hamburg, or other location rows rather than having one quantity chosen silently.

The result summary also separates product-only rows from inventory-only rows. Those are the records to investigate before you prepare the destination imports.

A practical transfer sequence

  1. Export products from the source Shopify store.
  2. Export the inventory data needed for your locations or bin workflow.
  3. Join the files by SKU when possible and inspect unmatched rows.
  4. Review Location, Bin name, On hand (current), and any planned On hand (new) values.
  5. Use the joined CSV as a review workbook, then prepare the actual Shopify product and inventory imports separately.

The joined file is intentionally a working file. Shopify import rules can change by workflow, and a destination store can have different locations, settings, or inventory expectations. Review those destination requirements before import.

FAQ

Does Shopify have one export that always contains the full catalog and all location inventory?

Not for the migration problem this workflow targets. Product content and location-level inventory are handled through different export/import workflows, so reconciling both files is the safer review step.

Does the joiner change inventory in my store?

No. It reads the two CSV files in your browser and produces a local working file. It does not connect to Shopify or make store changes.

See the transformation

Two tables meet on one exact lookup key.

Add matching customer details to each order while keeping missing or repeated matches visible.

orders.csv · customer_id
orderkeyamount
1001C-4284.50
1002C-9142.75
customers.csv · id
keynametier
C-42Aminapro
C-42AminaVIP
Result
orderkeynametier
1001C-42Aminapro
1002C-91——