How to Match Shopify Product and Inventory CSV Rows by SKU
Use variant SKU as a stable key, preserve multiple locations, and find product-only or inventory-only rows before a Shopify migration.
Matching Shopify exports by SKU is useful when the product file and inventory file describe the same variants in different schemas. The goal is not merely to put two tables next to each other: it is to preserve every stock location while making missing relationships obvious.
The Shopify transfer joiner uses the existing browser-local CSV join engine and prefers Variant SKU on the product side with SKU on the inventory side.
Why SKU is usually safer than Handle
A variant SKU is intended to identify a specific sellable variant. A product Handle often identifies the product family, so several size or color variants can share it. Joining those repeated Handles can create many-to-many rows that are difficult to interpret.
Before joining, check that your SKU values are populated and stable. Blank SKUs cannot reliably identify a variant, and duplicate SKUs can represent either a data-quality issue or an intentional inventory shape that needs review.
Keep repeated inventory rows when they mean locations
Inventory data can legitimately repeat the same SKU for multiple locations. For example, LINEN-M might have one row for a warehouse and another for a retail store. The transfer joiner keeps all matching inventory rows for each product-side SKU, so both location rows survive in the working file. A separate reverse audit surfaces inventory rows that do not match a product.
That is different from choosing the first duplicate. Location-specific stock should not disappear just because the SKU repeats in the lookup file.
Read the exception counts before download
The result separates joined rows, product-only rows, inventory-only rows, and the final working-file row count. Investigate product-only and inventory-only rows before migration. They can indicate missing SKUs, stale inventory exports, discontinued products, or a mismatch between export scopes.
When Handle is still useful
If the inventory workflow does not contain SKU but both exports contain a compatible Handle, the tool falls back to Handle. That can be appropriate for simple products or workflows where the inventory Handle is variant-specific. Review the preview carefully when a product has multiple options.
FAQ
Should SKU matching be case-insensitive?
The tool keeps Shopify identifiers exact apart from the join engine’s normal surrounding-whitespace normalization. Do not change identifier case casually during a migration; use the values exported by Shopify or your source system.
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.
Need to do this now?
Match Shopify products to inventoryRelated tools
Open the tool this guide is about, or explore a related one.
- Join CSV files online freeJoin two CSV files on matching key columns, choose inner, left, or full results, and control duplicate lookup keys without uploading your data.
- Validate CSV files online freeScan a CSV once for structural, encoding, header, delimiter, and whitespace problems without changing the file.