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 the supplier board 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.
- Supplier board figures: around 03:40, recomputes the sales rates, seasonality and delivery history behind the supplier board, and closes supplier orders that were marked arriving and have been received. The board's Refresh button does the same on demand.
- Pricing overview: rebuilds the Pricing overview every night around 03:50, after the sales and stock sync. The page opens from this snapshot; its Refresh button rebuilds it on demand.
- Scheduled price sends: every 10 minutes, sends the accepted prices of any supplier whose set time has come to DK. It does nothing when no list is due. A red dot here means a send failed; the supplier's pricing page says which prices are still waiting.
- 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.
- 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.
- Inbound emails: every 10 minutes, picks up any forwarded order email that was received but not finished reading (normally each email is read the moment it arrives; this is the safety net) and retries it. Idle most of the time.
- 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.
- Gift cards: every 5 minutes, sends gift cards scheduled for now, retries texts and emails that failed (up to four tries), and retries wallet updates that didn't reach a phone. A card that still couldn't be sent shows under Needs attention on Gift cards. The same run tries membership sign-ups again when your ERP was down, and updates member cards whose customer record changed (see Membership cards). It also delivers messages to card holders in batches, so a message to thousands of cards finishes over a few runs.
- Text messages: every 5 minutes, tries order texts that failed again (up to four tries, ten minutes apart) and asks the SMS gateway whether texts from the last three days reached the phone. See Text messages (SMS).
- AI fill (brand and category): around 07:30, for each company with a Brand or Category attribute, the AI looks at products created in the last two weeks that are still missing one. Sure answers that match a value you already use are saved and marked as AI-set; the rest wait for review on the AI fill screen. Up to 400 products per company per night.
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.