Guide · Operations
Shopify + Google Sheets as the operations layer Shopify doesn't have
Published 2024-04-19 · Updated 2026-06-11
Shopify is excellent at selling and adequate at operating. The gap — the math your business runs on that Shopify has no field for — is where Google Sheets earns a permanent place next to the admin. The original 2024 version of this post showed one live example; this update keeps the pattern and adds the boundary line learned from running these in production.
The pattern
Three pieces, whatever the use case:
- Data out on a schedule — Matrixify exports orders, products, or inventory into a connected sheet at an interval you choose.
- The sheet does the thinking — formulas or a short Apps Script compute the thing Shopify can't hold: decimal stock, true margin, reorder points.
- Results back in — a Shopify-formatted tab imports back on a schedule, updating inventory, tags, or metafields.
What stores actually run on this
- Fractional inventory — the canonical case: a true-decimal ledger with rounded-down integers synced back so the storefront can't oversell. Full build with code here.
- Margin tracking — landed costs (freight, duties, fees) live in the sheet against exported order lines, producing real contribution margin per SKU instead of Shopify's optimistic version.
- Reorder forecasting — sell-through velocity per SKU against lead times, flagging reorder dates before the stockout, not after.
- Ad-hoc ops reports — the weekly question your team answers by hand ("which subscription SKUs renewed short?") becomes a tab that's always current.
The boundary line
A sheet is the right tool while a human reviews the output and the sync interval is faster than the decisions it feeds. It's the wrong tool the day any of these become true: nobody has opened it in a month but it still writes to Shopify; an oversell traces back to the interval; a second location needs the same numbers; the Apps Script has grown an onEdit nobody understands anymore. Each of those is the signal to move the logic into a small app — webhooks instead of intervals, Postgres instead of tabs, and an alert when it breaks instead of silence. The sheet version is still the right way to start: it proves the logic cheaply before anything gets built.
Spreadsheet running a load-bearing process?
That's fine — until it isn't. Email Tom what the sheet does today and he'll tell you honestly whether it should stay a sheet.
Email Tom →