Back to Shopify in Google Sheets
SheetXAI logo
Shopify logo
Shopify · Google Sheets Guide

Bulk Update Shopify Product Prices and Inventory From a Google Sheet

2026-05-15
5 min read

The Scenario

The seasonal sale starts Friday. Your store manager ran the repricing math in Google Sheets — 150 variants have new prices and compare-at-prices calculated and ready to go. The variant IDs are in column A, the new prices in column B, the compare-at prices in column C.

What's left: getting all 150 of those updates into Shopify before the sale banner goes live.

The bad version:

  • Open the Shopify admin product by product, click into each variant, manually enter the new price, enter the compare-at price, save.
  • Realize after the first 20 that you're going to be here until midnight.
  • Try the CSV product export route instead, edit prices in the export file, reformat it to Shopify's import spec, re-upload — and discover that the import overwrote fields you didn't intend to touch.

This repricing run happens every quarter. The margin that disappears into this manual process is real, and it compounds.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent that lives inside your Google Sheet. It reads the repricing data and talks directly to Shopify's variant API — no admin clicking, no CSV gymnastics. You ask; it pushes.

For each row in my Repricing sheet, update the Shopify product variant with the variant ID in column A — set price to column B and compare_at_price to column C

What You Get

  • Every variant updated in Shopify with the new price and compare-at price from your sheet.
  • A status written back into column D — "updated" for successes, the error message for any variant that couldn't be found or failed validation.
  • No touched fields outside of price and compare_at_price — the rest of each variant stays exactly as it was.

What If the Data Is Not Quite Ready

Compare-at prices are missing for some rows

For each row in my Repricing sheet, update the Shopify variant in column A — set price to column B — only set compare_at_price to column C if column C is not blank — write 'updated' in column D

Prices need rounding to two decimal places before pushing

For each row in my Repricing sheet, update the Shopify variant in column A — set price to ROUND(column B, 2) and compare_at_price to ROUND(column C, 2) — write the result into column D

Updates span two tabs — base prices on one tab, markdown percentages on another

In my Repricing sheet, for each row where column E says 'markdown', calculate the new price as column B multiplied by (1 minus column D percent) — update the Shopify variant in column A with that price — write 'updated' in column F

Normalize prices, apply floor rules, skip already-updated rows, and confirm each

For each row in my Repricing sheet where column D is blank, update the Shopify variant in column A — set price to MAX(column B, 9.99) and compare_at_price to column C if not blank — write 'updated' in column D and the timestamp in column E

Doing the price floor logic and the Shopify update in one step means you catch the edge cases before they go live.

Try It

Get the 7-day free trial of SheetXAI and open the repricing sheet your team built for this quarter's sale, then ask it to push the updates to Shopify before Friday. Once you've done it once, the next repricing run takes the same prompt. Also worth reading: how to bulk-create products from a catalog, or the hub overview for all Shopify workflows.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more