Shopify Stock Value
โ€”
Raw Materials Value
โ€”
Total Stock Value (Xero โ†’ 613)
โ€”
Shopify + Raw โ€” this is what posts to Xero
Counted Value + Raw Materials
โ€”
Counted & Current Value
โ€”
Variants
โ€”
Never Counted
โ€”
Overdue
โ€”
Up To Date
โ€”
Potential Revenue (inc GST)
โ€”
Est. Gross Margin $
โ€”
Est. Gross Margin %
โ€”
๐Ÿ”
Connecting...
โš  ALERTS
Load live data to see alerts.
โš™ KITS & BILL OF MATERIALS
โ€”

Attach a BOM to any Shopify product. When sold, linked raw materials are automatically debited. Kit-mode products are excluded from stock value.

Load live data to see BOMs.
NEW SHARED POOL
Master Listing (tracked by Shopify, counts in stock value)
No master selected
Slave Listings (tracking OFF, synced from master)
SELECT LISTING
ADD COMPONENT
BOM EDITOR
Select Mode
COMPANION MODE
โœ“ Product is a real physical item
โœ“ Shopify tracks its own stock
โœ“ Counts in stock value
โœ“ Components debited on sale
e.g. Rocker cover that always comes with seals
KIT / CAN-BUILD MODE
โœ“ Virtual product (no physical stock)
โœ“ Stock = how many kits you CAN BUILD
โœ“ Excluded from stock value
โœ“ Components debited on sale
e.g. Turbo kit listing, service kit, bundle
Components
ADD RAW MATERIAL
COUNT RAW MATERIAL
ADD STOCK
๐Ÿ’ฒ COST PRICE REVIEW
Load live data first.
๐Ÿ” REORDER LIST
Load live data to see reorder suggestions.
๐Ÿงช RAW MATERIALS REORDER
Load live data to see raw material reorder needs.
๐Ÿ”ฅ HOT SELLERS โ€” LAST 90 DAYS
PERIOD: SORT:
Load live data to see hot sellers.
๐Ÿ“ท SNAPSHOT HISTORY
โš– COMPARE SNAPSHOTS
๐Ÿ“‹ ITEM AUDIT HISTORY
โš™ SHOPIFY CONNECTION
Store: โ€”
Session: checking...

Your Shopify token is stored securely server-side โ€” never in the browser.
Re-authenticate any time to refresh your session (lasts 90 days).

DAYS SINCE LAST COUNT
(tick if you entered costs with GST included โ€” affects margin % calculation)

Variants not counted within this many days show as OVERDUE and turn amber in the stats.

If set, "Counted & Current Value" shows stock verified since this date โ€” overrides the rolling window above.
Leave blank to use the rolling window. Reset each year after June 30 stocktake is complete.

๐Ÿšซ EXCLUDED PRODUCTS

These products are hidden from all stock counts, value tallies, variant counts, and never-counted totals.
Currently excluded: vendor Monster-ShipProtect and any product with "Shipping Protection" in the name.

Loading...
๐Ÿ”ง INVENTORY TOOLS

Bulk changes to Shopify inventory. Use with caution.

Sets all variants with negative stock to 0. Does NOT update last count date.

๐Ÿ” REORDER SETTINGS

These settings are saved to the server โ€” available on all devices automatically.

Resend: checking...
Sheets: checking...
Resend API key and Sheets webhook URL are configured as Worker environment variables โ€” set them in Cloudflare Dashboard โ†’ Workers โ†’ crc-proxy โ†’ Settings โ†’ Variables.

Daily email: Sends automatically at the selected Brisbane time if any items are below their reorder threshold. Only sends once per day.
๐Ÿ“Š XERO INTEGRATION

Posts a manual journal to Xero daily, updating the Stock on Hand account balance. Each entry is a new transaction so the account history builds up over time and can be graphed in Xero.

Requires: XERO_CLIENT_ID + XERO_CLIENT_SECRET set as Worker env vars (Cloudflare Dashboard โ†’ Workers โ†’ crc-proxy โ†’ Settings โ†’ Variables).

Checking...
614 = Inventory Valuation Offset (create this in Xero โ†’ Accounting โ†’ Chart of Accounts). Do not use 960 Retained Earnings.
How it works: Each day at the configured time, the worker fetches the last known stock values and posts a manual journal to Xero. The combined value (Shopify tracked inventory + raw materials) is debited to the Stock on Hand account and credited to the offset account.

Post Now uses the current live values from your open app session โ€” the most accurate figure. The automatic cron uses the last values pushed to the server.

Setup steps:
1. Create a Xero app at developer.xero.com/app/manage
2. Set integration type = Web app, redirect URI = https://crc-proxy.nick-4eb.workers.dev/xero/callback
3. Copy Client ID + Secret into Worker env vars as XERO_CLIENT_ID and XERO_CLIENT_SECRET
4. Click CONNECT above and authorise in Xero
๐Ÿ“ท TAKE SNAPSHOT
CONFIRM CHANGE
ITEM HISTORY