Documentation
This page is the detailed reference for how CSV Fixer behaves. For a guided walkthrough, read the tutorial. For common questions, see the FAQ.
Supported source formats
CSV Fixer accepts UTF-8 or UTF-8-BOM encoded files with .csv, .tsv, or .txt extensions. Delimiters are auto-detected (comma, tab, semicolon, pipe). Supported source types include:
- Shopify product export CSV (round-trip safe).
- Exports from other e-commerce platforms.
- Supplier and dropshipping CSV feeds.
- Google Sheets / Excel exports.
- Hand-rolled CSVs produced by internal tools.
Only upload product data that you own or have authorization to sell.
Health score
The health score is a number between 0 and 100 that estimates how likely the file is to import cleanly into Shopify. It's a weighted blend of five sub-scores (headers, handles, prices, encoding, variants). A score of 90+ typically imports with zero row rejections; anything below 70 will usually surface warnings in the preview step.
Fix categories
- Header mapping. Maps common column-name variants (
name,product_name,title) to Shopify's expected column names. Fully reversible. - Handle generation. Generates a URL-safe handle from the product title when missing; detects duplicate handles and offers to disambiguate by appending a suffix.
- Price normalization. Strips currency symbols, thousands separators, and trailing spaces. Rejects rows whose price cannot be parsed as a number and surfaces them instead of silently discarding them.
- Encoding repair. Fixes UTF-8 mojibake produced by round-tripping through Windows-1252 or Latin-1.
- Image-URL normalization. Cleans common URL formatting issues before image files are sent to Shopify.
- Variant grouping. Groups rows by handle so options and variants can be imported together.
Automatic fixes and review
CSV Fixer applies deterministic cleanup automatically, then keeps the health score, issue list, and before/after preview visible before you import.
- Auto-fixed: the change is deterministic and safe — same input always produces the same output, and the output cannot change the meaning of the field (header renames, whitespace trims, encoding repair, handle generation).
- Needs review: source-data questions remain visible instead of being guessed by the app.
Import behavior
- Imports go through the Shopify Admin API using your shop's own OAuth token — the same channel Shopify uses for its built-in importer.
- Rows are submitted with conservative concurrency to stay well under Shopify's API rate limits; you don't need to configure anything.
- If Shopify rejects a row, CSV Fixer shows the Shopify-returned error message alongside the offending row data so you can correct the source and re-run.
- In create/update mode, CSV Fixer keys on the product handle: existing handles are updated and missing handles are created.
Limits & performance
- Maximum upload size: 50 MB per file.
- Free tier: 3 full upload/analyze/import cycles per store.
- Lifetime plan: unlimited uploads, analyses, and imports on the purchasing store.
- Very large catalogs (tens of thousands of rows) are supported — split them into batches of roughly 5,000 rows for the smoothest experience.
Scopes requested
read_products— to detect existing products when deciding whether to create or update on import.write_products— to create or update products from the cleaned CSV.
No customer, order, analytics, or financial scopes are requested or used.
Data handling
See the Privacy Policy for the exhaustive description of what is stored, for how long, and where. In short: CSVs live on the application server's file system while you're working with them; metadata lives in managed PostgreSQL on DigitalOcean; all of it is deleted when you either click Delete file or when Shopify sends us a shop/redact webhook after uninstall.
Support
Bug reports, feature requests, and general questions: [email protected]. Privacy-specific requests: [email protected]. Suspected vulnerabilities: [email protected].