2026-09-01

Bulk CSV upload mistakes to avoid

Bulk CSV uploads fail in predictable ways. The file looks fine in Excel, you click import, and half the rows error out—or worse, every row imports with corrupted titles and empty descriptions. Whether you upload inventory to Etsy, Amazon flat files, eBay File Exchange, or Shopify importers, the mistakes repeat because **spreadsheets hide encoding, quoting, and schema problems** until a marketplace parser rejects them. This guide covers the failures we see most often in catalog workflows—and how to prevent them when you generate listing copy from source rows at scale. ## Mistake 1: Wrong file encoding Excel on Windows often saves CSV as **UTF-8 with BOM** or legacy **Windows-1252**. Characters like é, ñ, ™, and em dashes become `é` or `?` on import. **Fix:** Export UTF-8 explicitly. In Excel: Save As → CSV UTF-8 (Comma delimited). Verify by opening the file in VS Code or Notepad++ and checking the encoding label. Spot-check three rows with special characters before upload. For generated descriptions with HTML entities, confirm `<` and `>` are not double-encoded. ## Mistake 2: Unescaped quotes and broken CSV rows A product description containing `"` inside a quoted CSV field breaks row boundaries if not doubled per RFC 4180. The importer assigns your description to the wrong column or merges two products into one row. **Fix:** Use a proper CSV library (Python `csv`, Node `csv-stringify`) for exports—not manual concatenation. Descriptions with quotes must escape as `""` inside quoted fields. **Symptom:** Column count differs row to row; row 847 imports as row 423. ## Mistake 3: Header row drift Renaming columns between exports (`product_name` vs `Product Name`) breaks column mapping in tools and AI generation jobs. One batch maps title from column C; the next batch column C is color. **Fix:** Treat headers as a **versioned schema**. Example: `catalog_export_v3.csv` with a readme row in internal docs listing each column. Lock mappings in your generation tool once per job. RowExact workflows map columns at job start—changing the CSV mid-job without restarting mapping produces inconsistent output on resume. ## Mistake 4: Merged cells and blank SKU rows Suppliers send Excel files with merged cells for "product family" visual grouping. CSV export repeats values incorrectly or leaves blanks. **Fix:** Unmerge all cells before export. Every data row needs a **unique SKU or handle** and complete required fields. Delete decorative header rows inside the sheet. Blank rows in the middle of a file sometimes parse as empty products—filter them out. ## Mistake 5: Duplicate identifiers Duplicate SKUs, ASINs, or Shopify handles cause overwrites, rejected rows, or variant attachment to the wrong parent. **Fix:** Run deduplication on your key column before upload. For variations, follow marketplace parent/child rules—duplicate child SKUs are as dangerous as duplicate parent handles. Keep a `row_id` column internal to your sheet that is unique even when marketplace SKU changes. ## Mistake 6: Channel limits applied to the wrong export Using one "title" column for all channels guarantees overflow on eBay (80 characters) or under-optimization on Amazon (category-specific limits). **Fix:** Generate **per-channel title columns** from the same source facts with channel-specific length recipes. Validate max length per column in your preflight script. ## Mistake 7: Invented or defaulted field values Empty cells become `"N/A"`, `"TBD"`, or `"premium quality"` in template formulas. Marketplaces and customers treat those as claims. **Fix:** Facts-only rule: **empty in, empty out**. Generation templates should skip segments when source cells are blank—not fill marketing filler. This is the highest-risk bulk mistake because it scales false advertising to every row instantly. ## Mistake 8: HTML and line breaks in wrong columns Pasting Amazon bullet HTML into an Etsy title column, or newline characters inside unquoted fields, shatters CSV structure. **Fix:** Separate columns by content type: `title_plain`, `description_html`, `bullets_json`. Never embed raw newlines in unquoted CSV fields. ## Mistake 9: Price, quantity, and locale formatting European CSVs use `29,99` while US parsers expect `29.99`. Dates as `01/02/2026` flip between Jan 2 and Feb 1. **Fix:** Store numbers as plain decimal with dot separator in export files. Use ISO dates (`2026-09-01`) in machine-readable columns. Keep display formatting in the storefront layer, not the upload file. ## Mistake 10: Stale category and template versions Amazon and eBay category taxonomies update. Required item specifics change. Uploading last year's flat-file template missing new required columns produces partial listings or silent drops from search. **Fix:** Download fresh templates before large batches. Maintain a **category ID column** tied to your internal taxonomy, not free-text category names alone. ## Mistake 11: No preflight sample on live catalog Uploading 5,000 rows to production without a 5-row test in Seller Central or a staging Shopify store. **Fix:** Always run a **pilot batch** (5–20 SKUs), verify listings manually on mobile and desktop, then scale. Keep pilot SKUs in a saved search for quick audit. ## Mistake 12: Ignoring pause/resume and idempotency Re-running the same bulk generation job on completed rows after tweaking prompts creates duplicate work and inconsistent copy within the same catalog slice. **Fix:** Track job status per row: pending, completed, failed. Completed rows should not regenerate unless you explicitly mark for revision. Failed rows should log error reason (length overflow, missing category, etc.). ## Building a quality gate pipeline A practical pre-upload pipeline for bulk sellers: 1. **Schema validate** — required columns present, types correct 2. **Length validate** — per-channel title, subtitle, backend keyword bytes 3. **Fact validate** — no placeholder tokens; certifications only if source column populated 4. **Encoding validate** — UTF-8, no mojibake patterns 5. **Duplicate validate** — unique keys 6. **Human sample review** — side-by-side source vs output for 10 random rows 7. **Pilot upload** — small live batch 8. **Full upload** — with rollback plan (delete batch tag or revert CSV version) Automate steps 1–6; never skip 7–8 on a new template version. ## Recovery when a bulk upload goes wrong If bad data already imported: - Identify affected rows by upload batch ID, custom label prefix, or date range - Export live listings back to CSV before bulk delete—backup first - Fix source file, not just symptoms on marketplace UI one listing at a time - Document the bad template version so it is not reused ## Checklist - [ ] UTF-8 export verified on special characters - [ ] CSV quoting handled by library, not hand-built strings - [ ] Headers match locked schema version - [ ] No merged cells; no blank SKU rows - [ ] Unique keys confirmed - [ ] Per-channel length columns validated - [ ] No invented defaults for empty cells - [ ] HTML confined to description columns - [ ] Numbers and dates in parser-safe formats - [ ] Fresh marketplace template for category specifics - [ ] Pilot batch passed before full upload Bulk CSV upload is not a single click—it is a **pipeline**. Sellers who treat uploads like database migrations (schema, validation, pilot, rollback) avoid the week-long cleanup cycles that come from shipping a spreadsheet directly to production.

All posts

Bulk CSV upload mistakes to avoid · RowExact