SHOPIFY PRICING CSV GUIDE
Shopify CSV price not updating? Check these 8 things
When an import completes but the price stays unchanged, the file may be updating the wrong variant, missing the overwrite context, carrying an invalid numeric value, or changing an admin value that is not the price your customer sees.
Check price rows privatelyQUICK ANSWER
Update the exact variant row, use an explicit numeric price, and confirm the overwrite preview.
Use the current handle, options, and row layout from the same store.
Set a valid value in Variant Price for every intended variant.
Confirm the preview, then test the intended market and storefront.
PRICE UPDATE CHECKS
What each result usually means
One price changed, or none didThe file edits a product group but not the variant row that carries the selling price
In a Shopify product CSV, a product can have one row or several variant rows. The selling price is normally stored in Variant Price, so each variant you sell needs the intended price on its own row. Editing a title row while leaving its variant rows unchanged can make the catalog look as if the import ignored the price.
Export the target product from the target store. Find every row that shares its handle, identify the size, color, or other option combination on each row, and change Variant Price only for the variants you mean to update.
Price was rejected, rounded, or unchangedThe value is not a plain decimal value Shopify can interpret as the selling price
Currency symbols, thousands separators, formulas that were not saved as values, spaces, and locale-specific decimal commas can change how spreadsheet data is read. A file can open normally in a spreadsheet but still export a different CSV value from the one you intended.
Use a simple decimal number such as 19.99 in Variant Price. Do not add a currency sign. Save or download as comma-separated UTF-8 CSV, then reopen the exported file in a plain-text editor or run a local validation check before importing.
Existing price stayed the sameThe import was not allowed to overwrite a product with a matching handle
Shopify matches existing products by URL handle and offers an overwrite setting for that workflow. Without it, a matching product can be ignored instead of updated. The import may finish without applying the price you changed.
Keep a fresh backup, make a one-product test file, and select overwrite only when Shopify’s preview identifies the exact existing product and intended price update. Do not use overwrite as a way to compensate for uncertain matching.
New product was created—or the old price remainedThe URL handle or product context does not match the product already in the store
A familiar title does not prove that the row identifies the same Shopify product. Handles can differ after renames, imports from another store, punctuation changes, or app-driven updates. An incorrect handle can create a new product or leave the actual product untouched.
Copy the exact URL handle from a current export of the target store and retain the related Title column. Work from one product group at a time instead of reconstructing product identities from display names.
Wrong variant changedThe option names or option values do not describe the variant whose price you meant to update
Variant-specific fields depend on the option structure that identifies each row. A size or color misspelling, omitted option column, duplicate combination, or reordered group can make Shopify associate the price with a different variant or reject the intended structure.
Keep the option name and option value columns from Shopify’s fresh export. Preserve each option combination exactly, make sure no combination appears twice within a handle group, and include the rows for all affected variants.
Admin price changed, but the storefront looks wrongVariant Compare At Price or a sale presentation changes the price a customer notices
Variant Price is the selling price; Variant Compare At Price can provide the higher reference price used for a sale display. Editing only one field can leave an unexpected strike-through price, sale badge, or apparent discount. A compare-at value should support the pricing presentation you intend.
For a normal price change, check both fields in the export and set the selling price explicitly. Keep or clear the compare-at value only when that matches your store’s sale policy. Verify the product page after the import rather than relying on the CSV alone.
Admin shows the new price, storefront still shows another oneA market, catalog, B2B price, app rule, or cached page controls what the shopper sees
A successful product CSV import changes the product data it is designed to manage. It does not prove that every market, catalog, selling plan, app, theme component, or customer segment will display the same number. Those layers can override, adjust, or cache the base price.
First confirm the intended variant price in Shopify admin. Then test the product in the correct market and customer context, and review any catalog, pricing, subscription, or currency app that affects the listing. Refresh or use a clean browser session before assuming the CSV failed.
Preview names unexpected creates or updatesThe price file is stale, too broad, or includes rows you did not intend to manage
A CSV can be syntactically valid while still carrying old prices, rows from another store, unrelated variants, or blanks in fields you meant to preserve. Shopify’s preview is the final opportunity to stop a broad catalog change.
Export a fresh file, isolate one known product group, make one explainable price edit, and inspect the preview. Continue only when the preview shows the exact existing variants and the expected result. Keep the untouched export until the storefront checks out.
KNOW THE BOUNDARY
What can be checked before the price reaches a customer?
Merch Preflight checks locally
- Recognizable price headers and plain numeric values
- Handle formatting and product grouping
- Option names, values, and duplicate combinations
- Malformed rows, headers, quoting, and encoding
- Basic price, status, and inventory formats
Shopify and your store must check
- Whether a handle matches an existing product
- Whether overwrite is selected for this import
- The exact variant selected by current store data
- Markets, catalogs, apps, and customer-specific prices
- The final preview and storefront presentation
Your product names, prices, SKUs, and supplier data stay in this browser.
FIVE-MINUTE TEST
Before you retry a Shopify price update
- 1Export the target product
Use its current handle, title, options, and variant rows from the same store.
- 2Keep a backup
Preserve the untouched export before using overwrite.
- 3Set explicit variant prices
Use simple decimal values for only the variants you mean to change.
- 4Validate the CSV
Check headers, row grouping, option dependencies, and number formats.
- 5Read the preview and storefront
Confirm the exact variants, intended market, and customer-visible result.
FAQ
Shopify CSV price update questions
Which column changes the selling price?
Use Variant Price from Shopify’s current product export. Keep the exact export header and update the row for each intended variant.
Why did only one size or color get the new price?
Each variant is a separate row. Check the handle group and option values, then set the desired Variant Price on every intended combination.
Should I edit compare-at price too?
Review it whenever you change a sale presentation. It is a separate reference value from the selling price and can change what shoppers see.
Why is the storefront price different when admin is correct?
Check the selected market, catalog, customer context, price-related apps, and cached storefront session. A product CSV does not override every storefront pricing layer.
Official references
This guide follows Shopify’s current documentation on using product CSV files and overwriting matching products, importing products by CSV, and common product CSV import problems. Shopify can change templates and import behavior; its current exports, documentation, preview, and final result remain the authority.