Skip to main content

· · Shopify operations  · 3 min read

Shopify CSV update safety guide

Use explicit matching, clear blank-cell rules, and a separate create flow to keep CSV updates predictable from preview to results.

CSV looks simple because every row is visible. The difficult part is deciding what each row means once it meets the store.

Three questions should have exact answers before an update starts:

  1. How does this row find a Shopify product or variant?
  2. What does a blank cell do?
  3. What happens when nothing matches?

If the answers depend on a guess, the import is not ready.

Choose a stable match key

Product ID and Variant ID are the clearest identifiers when the file came from Shopify or a trusted system that stores those IDs.

Handle can work for products, but handles can change. Confirm that the file reflects the current store before using it as the only key.

SKU is common for variants, but it is safe only when it is unique in the store. If one SKU points to several variants, the update should stop for that value. Choosing the first match is convenient and dangerous.

Do not use title as a general update key. Titles are written for people, not identity. They can be duplicated or edited without warning.

Give blank cells one meaning

A blank spreadsheet cell can mean several things to a human:

  • the supplier did not provide a value;
  • keep the current value;
  • clear the current value;
  • the field does not apply to this row.

The import needs one rule. For updates, the least surprising default is usually: blank means leave the existing Shopify value alone.

Clearing a field should require an explicit token such as __CLEAR__. Setting a nullable field to null can use a separate token such as __NULL__. This makes destructive intent visible in the file and reviewable before execution.

Keep update and create separate

An unmatched update row should not quietly become a new product. A typo in a Product ID or SKU can otherwise create a duplicate instead of reporting the problem.

Use two modes:

  • update mode resolves existing targets and never creates;
  • create mode treats the file as new products and never overwrites an existing handle.

The separation adds one decision at the start and removes a much harder decision from every unmatched row.

Resolve the full file before writing

Several CSV rows can point to the same product or variant. Resolve and merge those rows before the first Shopify write. This lets the tool detect conflicts, collect validation errors, and prepare one complete backup of the original values.

For large files, do not confuse size with certainty. Normal batched API writes can still be appropriate, but use batches that an operator can review and recover. Asynchronous bulk infrastructure is helpful for scale, not a replacement for clear matching and result tracking.

Bind the preview to the file and settings

A preview becomes unreliable if the file changes after it was generated. The same is true when someone changes the column mapping, mode, store, or inventory location.

A safe preview records at least:

  • store domain;
  • file identity and metadata;
  • update or create mode;
  • column mapping;
  • inventory location when used.

If one of those values changes, generate a fresh preview.

Keep a result file

The input CSV tells you what you asked for. A result CSV should tell you what happened. Keep the row status, Shopify IDs, errors, and any newly created IDs.

Open Bulk Editor’s Safe CSV flow uses these rules: blank update cells do not overwrite, __CLEAR__ and __NULL__ are explicit, duplicate SKU matches are blocked, unmatched update rows do not create, and update targets are resolved before the backup and first write. Whatever tool you choose, insist on rules you can explain to the next person who opens the spreadsheet.

Back to Blog

Related Posts

View All Posts >