IS

Inventory Ops

Inventory Sync

Shopify · supplier feeds · Cloudflare

Checking… Checking…
Mapped SKUs
 
Last run
 
Next run
2, 3 & 4 am UK time
Discontinued SKUs
zeroed after 6 misses (two nights)
Usage & cost notice. Cloudflare Workers, Pages Functions, D1 and third-party APIs can consume quota or create charges depending on plan and usage. Supplier and Shopify limits also apply — review current provider pricing before production.

Administration

Controls on this tab change how the sync behaves for the whole store: acknowledgement, Shopify connection, scheduled live writes and notifications. The other tabs are day-to-day operations.

1. Admin & setup

Deploy & connect

Tick off each step as you go. Steps marked auto are detected from this dashboard's own status and can't be ticked by hand. Secret values are never entered into this app — only set them via the wrangler CLI or the Cloudflare dashboard.

  1. wrangler d1 create sync-app-db
  2. cd apps/backend
    wrangler deploy
  3. wrangler secret put SHOPIFY_CLIENT_ID
    wrangler secret put SHOPIFY_CLIENT_SECRET
    wrangler secret put APP_ENCRYPTION_KEY
    wrangler secret put RESEND_API_KEY        # optional: failure emails
    wrangler secret put CLOUDFLARE_API_TOKEN  # optional: usage stats panel

Checking backend configuration…

What this tool will never touch

Every write this app makes to Shopify goes through one inventory-quantity mutation, enforced centrally in code (shopify.ts) with an allowlist that rejects anything else. It cannot rename products, change variant options, edit tags, move collections, or touch UKARA / two-tone status — only the available inventory number.

Cloudflare Access

This dashboard is designed to sit behind Cloudflare Access. Confirm Access is active before entering real credentials.

Schedule

Nightly

Runs at 02:00, 03:00 and 04:00 UK time (follows GMT/BST automatically).

Runs from the backend Worker Cron even when this page is closed.

Responsibility acknowledgement

Live writes are blocked until this acknowledgement is accepted.

Weekly security review — all your apps

Once a week, walk this list for every app you run and record it here. The reminder shows on this dashboard and in every MCP tool result until it is recorded, and again seven days later.

  1. This dashboard: Cloudflare Access policy still limited to the right people; Access application still pinned (no banner above); no unexpected admin actions in the Worker logs.
  2. MCP server: MCP_ALLOWED_EMAILS still correct; no unknown OAuth clients approved; recent mcp_login log lines all expected.
  3. Secrets: Shopify app credentials, APP_ENCRYPTION_KEY, Resend and Cloudflare API tokens unchanged and not shared; rotate anything that may have leaked.
  4. Supply chain: GitHub Dependabot and CodeQL alerts for sync-app reviewed; CI green on main.
  5. Other apps: repeat the Access / secrets / dependency checks for every other Cloudflare Worker, Pages project and Shopify app you run.
  6. Sync health: the Sync & history health card shows no unexplained critical issues.
  7. AI review: allow an AI assistant (e.g. Claude Code) to check this app — its code, config and this dashboard — for security issues since the last review, and note anything it flagged below.

Checking…

Connect Shopify

Enter the permanent Shopify store hostname. No store is preconfigured.

Check Shopify products

Browse the products and variants currently in your connected Shopify store.

Scheduled live sync

Keep scheduled writes disabled until Shopify is online, the acknowledgement is accepted, feeds are tested and a dry-run has been reviewed.

Email notifications

Sent only when a run has errors or failures — not on every clean run.

Checking configuration…

Shopify API usage

Shopify's own GraphQL rate-limit cost, not a Cloudflare metric.

Cloudflare Workers/D1 usage

Database size: checking…

Checking configuration…

2. Suppliers & feeds

No supplier records are created automatically.

New supplier products not in Shopify

SKUs that have appeared in a supplier feed but match no Shopify variant (exact SKU or its -UKARA / -2T pair). Support is emailed when new ones are found. An alert clears on its own once a product with that SKU exists in Shopify, or dismiss it here. Nothing is created in Shopify automatically.

3. SKU mappings

Map authorised supplier SKUs to Shopify inventory items and locations.

4. Sync & history

Dry-run first. Live writes require the acknowledgement and a connected Shopify store.

Sync health

Checking…

Failing nights, feeds falling back to a backup, SKUs about to be zeroed and errors that recur every run, in one place.

Sync calendar

Passed Had failures No run
SunMonTueWedThuFriSat

Run history is kept for 3 months.

Run log · click a run for its errors and changes

Add supplier

Add feed

Product fields for the Shopify CSV export (optional — auto-detected when blank)

Shopify products

New products found

Add SKU mapping

Pick one variant for a normal mapping, or several variants (e.g. different colour options of the same product) to map them all to the one supplier SKU above — useful when the supplier only reports stock once per product, not per variant.