NOT CONNECTED
LIVE STOCK
SNAPSHOTS
COMPARE
ITEM HISTORY
SETTINGS
Total Stock Value (Cost)
โ€”
Variants
โ€”
Never Counted
โ€”
Overdue
โ€”
Up To Date
โ€”
๐Ÿ”
PRODUCT SKU UNITS ON HAND COST/EA STOCK VALUE LAST COUNTED STATUS HISTORY
Connecting...
๐Ÿ“ท SNAPSHOT HISTORY
โš– COMPARE SNAPSHOTS
๐Ÿ“‹ ITEM AUDIT HISTORY
โš™ SHOPIFY CONNECTION

This will redirect you to Shopify to authorise the app and return a fresh token automatically.

MANUAL OVERRIDE
days
โ˜ GOOGLE SHEETS SYNC
Setup: New Google Sheet โ†’ Extensions โ†’ Apps Script โ†’ paste script โ†’ Save โ†’ Deploy โ†’ New deployment โ†’ Web app โ†’ Execute as Me โ†’ Anyone โ†’ Deploy โ†’ copy URL.

Apps Script to paste: function doPost(e) { var data = JSON.parse(e.postData.contents); var ss = SpreadsheetApp.getActiveSpreadsheet(); if (data.type === 'snapshot') { var name = (data.label + ' - ' + data.date).substring(0, 100); var sheet = ss.getSheetByName(name) || ss.insertSheet(name); sheet.clearContents(); sheet.appendRow(['SNAPSHOT', data.label]); sheet.appendRow(['DATE', data.date]); sheet.appendRow(['TOTAL VALUE', data.summary.totalValue]); sheet.appendRow(['VARIANTS', data.summary.totalVariants]); sheet.appendRow(['NEVER', data.summary.never]); sheet.appendRow(['OVERDUE', data.summary.overdue]); sheet.appendRow(['OK', data.summary.ok]); sheet.appendRow([]); sheet.appendRow(['Product','Variant','SKU','Units','Cost','Value','Last Count','Days Since','Status']); data.rows.forEach(function(r) { sheet.appendRow([r.product,r.variant,r.sku,r.units,r.cost,r.value,r.countDate||'',r.daysSince||'',r.status]); }); } if (data.type === 'history_event') { var h = ss.getSheetByName('Item History') || ss.insertSheet('Item History'); if (h.getLastRow() === 0) { h.appendRow(['Timestamp','SKU','Product','Variant','Change Type','Old Value','New Value','Delta','Notes']); } var ev = data.event; h.appendRow([ev.timestamp,ev.sku,ev.product,ev.variant,ev.type,ev.oldVal,ev.newVal,ev.delta,ev.notes||'']); } return ContentService.createTextOutput(JSON.stringify({ok:true})).setMimeType(ContentService.MimeType.JSON); }
๐Ÿ“ท TAKE SNAPSHOT
CONFIRM CHANGE
ITEM HISTORY