Guide
How to Update Shopify Products from Google Sheets
Last updated: October 9, 2026
Importing new products from a Sheet and updating the products you already have are not the same job. An update needs a match key, not a full product record, and it should only touch the columns you actually mapped. This guide covers that workflow end to end.
Updating Existing Products Is a Different Job Than Importing Them
A new-product import needs a complete row: title, vendor, images, variants. An update needs far less. You are telling Shopify "find this product and change these fields," not "create this product." Simple CSV treats the two as separate starting points for exactly that reason. If you have not published a Sheet as CSV yet, the Google Sheets import guide covers that setup step by step. This page picks up from there.
Step 1. Point Simple CSV at the Sheet
Start a URL import in Simple CSV and paste the Sheet's URL. That can be the published CSV link ending in /pub?output=csv, or for a single-tab sheet shared as "Anyone with the link" you can just copy the normal address bar URL and paste that in directly. Test whichever one you use in a private browser window first. A published CSV URL should download a CSV or show comma-separated data. A normal shared URL should open the Sheet without asking you to sign in.
After you submit the Sheet URL, Simple CSV shows download progress before it validates the file. It shows a percentage when Google reports the total size, or the downloaded size so far when it does not.
Step 2. Choose "Update Existing Products"
The dashboard asks what you want to do. Pick Update existing products, not Import new products. This decides what happens to a row that matches nothing: an import creates a new product from it, an update skips it and logs the miss. For a Sheet you're using to correct prices or stock, that's the difference between a typo becoming an orphaned duplicate product and a line in a report you can fix.
Step 3. Match by SKU, the First Barcode or Handle
SKU is the usual choice because it identifies one variant, not a whole product. Barcode works when your Sheet has the same value as the first barcode on the Shopify variant. Handle matches at the product level, so it applies the same values across every variant under that handle, which is rarely what you want for a per-variant price or stock update.
Matching is exact once letter case and surrounding spaces are ignored. SF-2000-SET does not match SF-2000-SET-CP. If a variant has several barcodes, a secondary barcode in the Sheet does not match and the row is skipped as not found. A SKU or first barcode shared by more than one product in your store is skipped rather than guessed at, and the import log records the identifier and how many products it matched. Use SKU or Shopify ID when you can.
Step 4. Map Only the Fields the Sheet Should Control
Map the match column and the columns you actually want to change, and leave everything else unmapped. A stock-and-price Sheet does not need a Title or Body HTML column mapped, and if it has one anyway, leaving it unmapped means Simple CSV never touches it.
If your Sheet includes an inventory quantity column, that column updates stock at the one Shopify location you picked when you set up this import. That's true on every plan, not just Pro and Scale. Running separate Sheets for a wholesale feed and a dropship feed means each one can point at its own location.
Before anything is written to your store, Simple CSV shows how many rows are about to be updated. If that number is well below your row count, your match key is probably wrong. There's no row-by-row preview for an update run yet, so a wrong match key or a mis-mapped column won't show up until after the run. Test a Sheet with a handful of rows before pointing this at your full catalog.
Keeping the Sync Running on a Schedule
A one-time URL import reads the Sheet once. On Free, select Start update on the Summary page, or Start limited update if the Sheet is over the 100-row limit. On Pro or Scale, select Save & Run now to save the setup and queue one run without creating or changing a schedule. If the Sheet keeps changing, select Save & Schedule to create or edit a recurring schedule so Simple CSV re-fetches the URL automatically. Pro includes 3 automations that can run every 6 hours, Scale includes 7 that can run hourly, and both plans come with a 14-day free trial.
After a fully successful scheduled run, Simple CSV skips the next scheduled run when the file and settings are unchanged. The import history shows it as Completed. Open the run to see No changes in the file. It does not touch Shopify. Select Run now on the automation to apply the same Sheet again after a Shopify-side change, such as a sale reducing inventory.
Free can still run this exact update manually, as often as you like, up to 100 rows per file. It just can't be put on a schedule. Pro and Scale remove the row limit.
What This Does Not Cover
- New products. A row that matches nothing is skipped, never created. Use the guide to importing products from Google Sheets for adding products.
- Fields you didn't map. An unmapped column in the Sheet is never written to Shopify, even if the header name matches a Shopify field exactly.
- Pricing math inside the Sheet. If you're pushing a supplier's wholesale numbers and need a markup applied on the way in, bulk price updates from a CSV covers pricing rules in more detail than fits here.