The 13 auto-fixes explained
CSVwise's auto-fix toolkit covers 13 distinct kinds of formatting and data issues that block Shopify CSV imports. Each one runs independently. You can turn any of them off if your data is intentionally formatted differently. All 13 are on by default because each one prevents a specific kind of Shopify import rejection.
Every fix below shows a before/after example. Where a fix fills in a related column as a side effect (e.g., extracting a weight unit), the side-effect column is named in the description.
Handle column
1. Generate missing handles from Title
When a product row has no Handle but does have a Title, CSVwise creates a URL-friendly handle from the Title.
- Before:
Title: "Premium Coffee Mug", Handle: "" - After:
Handle: "premium-coffee-mug"
Shopify requires a handle on every product row. Without this fix, the import fails.
2. Normalize handle casing and characters
Existing handles get converted to lowercase and stripped of characters Shopify doesn't accept in a handle (anything that isn't a–z, 0–9, or -).
- Before:
Handle: "Premium_Coffee Mug!" - After:
Handle: "premium-coffee-mug"
Shopify rejects handles with uppercase letters, spaces, or punctuation other than -.
3. Truncate over-long handles
Shopify allows handles up to 255 characters. Anything longer is cut at 255 characters; the start of the handle is preserved.
- Before:
Handle: "ultra-long-product-name-that-...goes-on-for-260-characters"(260 characters) - After: the first 255 characters of that handle, unchanged. The last 5 are dropped. The cut is positional, so it can land in the middle of a word.
Price columns
4. Strip currency symbols and thousands separators
Currency symbols ($, €, £, ¥) and thousands separators (, or . depending on the region) are removed from price cells.
- Before:
Variant Price: "$1,299.00" - After:
Variant Price: "1299.00"
Shopify only accepts a bare decimal number in price columns.
5. Convert European decimal commas
Prices that use a comma as the decimal separator are converted to dot notation.
- Before:
Variant Price: "24,50" - After:
Variant Price: "24.50"
Price cleanup runs in a fixed order: strip anything that can't be part of a number, resolve EU decimal commas, drop the remaining thousands separators, then round. That order is what lets "€1.299,50" land on 1299.50 cleanly.
6. Round to two decimal places
Prices with more than two decimal places are rounded to the nearest cent.
- Before:
Variant Price: "24.5499" - After:
Variant Price: "24.55"
Shopify stores prices to two decimal places and doesn't document what it does with extra precision, so CSVwise rounds to the nearest cent before download and shows you the final value in the preview.
Weight columns
7. Extract embedded units from weight values
Weight cells that include a unit (e.g., "1.5 kg", "6 oz") get split: the number goes into Variant Grams and the unit goes into Variant Weight Unit.
- Before:
Variant Grams: "1.5 kg",Variant Weight Unit: "" - After:
Variant Grams: "1500",Variant Weight Unit: "kg"
The number is always converted to whole grams, because that's what Shopify stores in Variant Grams. The unit goes into Variant Weight Unit for display, and only when you left that column blank. A unit you set yourself is never overwritten.
Shopify's Variant Grams column expects a whole number of grams with no unit text, so a value like "1.5 kg" isn't something the importer can use as-is. This fix converts it to 1500 grams and records kg as the display unit.
Yes/no columns
8. Normalize yes/no values
The four columns Shopify expects TRUE/FALSE in (Published, Variant Requires Shipping, Variant Taxable, Gift Card) get normalized from common alternatives.
- Treated as TRUE:
true,yes,y,1,t - Treated as FALSE:
false,no,n,0,f
Matching ignores case and surrounding spaces. Anything else is left exactly as it was, so an unrecognized value shows up in the problem list rather than being guessed at. (Status-column words like active and inactive are handled by fix 13, not this one.)
Tags column
9. Normalize tag separators
Tags separated by semicolons or pipes get converted to Shopify's required comma-separated format.
- Before:
Tags: "summer|sale|featured" - After:
Tags: "summer, sale, featured"
10. Truncate over-long tag lists
Shopify allows up to 250 tags per product. If a row has more, the extras are trimmed from the end so the tag list stays within Shopify's limit.
Inventory column
11. Round inventory to whole numbers
Variant Inventory Qty cells with decimals get rounded to the nearest whole number.
- Before:
Variant Inventory Qty: "12.5" - After:
Variant Inventory Qty: "13"
Inventory has to be a whole number. Decimals are almost always data-entry leftovers from a spreadsheet formula.
Whitespace and structure
12. Trim leading and trailing whitespace
Leading and trailing spaces are removed from the columns where stray whitespace actually breaks an import: Handle, Variant SKU, and Option1 Value through Option3 Value.
A small fix on its own, but it accounts for a surprising number of failed imports. Shopify treats " handle " as different from "handle", and two variants whose option values differ only by a trailing space read as duplicates.
13. Normalize known Shopify-vocabulary values
Some Shopify columns only accept specific values (e.g., Status is one of active, draft, archived). Common alternative spellings are mapped to the value Shopify expects.
- Status:
Active,ACTIVE,published→active - Status:
Draft,unpublished,hidden,inactive→draft - Variant Inventory Tracker / Variant Inventory Policy / Variant Fulfillment Service: documented Shopify values are case-normalized, and anything that might be an installed app's handle is passed through untouched.
Turning fixes off
Every fix can be turned off in Stage 3 if your data is intentionally formatted differently. See Toggling fixes per category.