System Health
The System Health card lives on Admin → System Status, alongside the sync history. It shows whether each scheduled background job ran successfully on its last invocation. Each job has a coloured dot.
What the colours mean
- Green: last run succeeded within the expected window.
- Yellow: the last run succeeded but was late or processed fewer records than expected. Worth a glance, not urgent.
- Red: last run failed, or the job hasn't run for longer than its allowed window. Forecasts and briefs may be stale.
Jobs tracked
- DK daily sync: pulls products, customers, sales, and stock from DK every night around 03:00. Stock is stored as a daily change, so on a quiet night only a handful of rows move; that is normal and not a sign the sync ran short. A red or yellow dot here means the pull itself came back empty (usually an expired ERP token); see Sync troubleshooting.
- Current-stock refresh: rebuilds the cached stock-on-hand snapshot just after the daily sync, around 03:15. This snapshot is deliberately the only stock number purchasing, replenishment and rebalancing order from, so that suggested quantities are based on verified ERP data and don't shift during the day as picking moves stock around. Inventory valuation and dead stock read it too. If it goes red, treat order suggestions with caution: they're being built from a snapshot that's a day or more behind. Picking and stock counts are unaffected, they always use live numbers.
- Forecast snapshots: nightly forecast pass per item, around 03:30.
- DK weekly reconcile: Mondays around 04:00. Catches anything the daily sync missed and reconciles counts.
- Shopify token refresh: renews the Shopify access token every 6 hours for stores connected with a Client ID and Client Secret (tokens from Shopify expire after 24 hours). Stores connected with an older static token are not affected. If this job fails repeatedly, Shopify features stop working within a day; re-check the credentials in Admin → Integrations.
- Shopify orders: pulls new in-store pickup orders from Shopify every ~10 minutes so the pickup queue stays current. You can also tap Sync on that page to refresh on demand.
- DK transfers: pulls transfers created directly in DK into Store transfers every hour, so they appear for picking without a manual sync. You can still tap Sync DK on that page to pull them in right away.
- DK sales orders: pulls customer orders created in DK into Sales orders every hour for picking. You can also tap Sync DK on that page on demand.
- Product images: two nightly jobs pull product photos from Shopify into Stokk so floor pages like New products and Price changes show a thumbnail. One tops up recently-created items around 05:00; a second, broader pass around 06:00 backfills the rest of the catalogue a batch at a time until every active product has an image. A product with no match on Shopify keeps its placeholder.
- Loyalty pass updates: every 2 minutes, pushes pending loyalty card changes to phones that have the pass saved (Apple Wallet via push; Google cards update on their own). Only does work once Apple Wallet is set up and someone has saved a card.
- Cycle counts: around 04:30, for each location with a cycle-count schedule turned on, opens that day's by-bin count pre-seeded with the bins due for counting. It skips a location that already has a cycle count open for the day, so it never piles up duplicates.
- Tasks: around 04:45, creates the day's recurring tasks for each store (daily tasks every day, weekly ones on their chosen weekdays) and closes out yesterday's unfinished recurring tasks as skipped so each morning starts with a clean list. One-off tasks aren't touched; they stay overdue until done. Re-runs never duplicate a day's tasks.
Each row shows the timestamp of the last run, its duration, and a short status note. A yellow row labelled Partial failure means the job finished overall but at least one tenant inside it errored.
Drilling into a run
Click any row in System Health to open the run history for that job. You'll see the last 20 runs, and each row expands to show the per-company breakdown: which tenant succeeded, which failed, the error message, and counters like rows scored and snapshots written. This is where to look when a row is yellow or red.
When a dot goes red or yellow
- Click the row to open the run history and expand the latest run.
- Read the per-company error message. Most failures are scoped to one tenant.
- For ERP sync issues, see Sync troubleshooting.
- For other jobs, contact Stokk support; most are infrastructure issues we'd want to know about anyway.