AG

EU Inventory Automation

alphard-golf-eu · Eindhoven & UK warehouses
4 of 4 systems live
Operations overview

What’s keeping your stock honest

Four automations work together so shoppers only see — and can only buy — what their own warehouse actually has, and so bundles stay in step with their parts. This page shows what each one does, what to check before you touch inventory, and where to look when a number seems off.

Snapshot as of 24 Jul 2026 · figures update live in Shopify

Systems running now

All fail safe — if one stops, sales continue rather than block.

Regional availability

Live

A UK shopper sees stock from the UK Warehouse only; everyone else sees Eindhoven. If the shopper’s own warehouse is empty, the item shows Sold Out — even when the other warehouse still has it.

Theme: fusion-presale-theme + regional stockSync: every ~12 sec on stock change

Checkout guard

Live

Stops an order at checkout if the shopper’s region can’t cover it — catching old carts, Facebook / Google orders, direct links and over-quantity. Blocked orders are never created, so nothing reaches the warehouse or ERP.

App: eu-checkout-guardRule: Settings › Checkout › Checkout rules

Bundle auto-deduct

Live

When a bundle sells (V2Pro + Sidekick, Cybercart + Sidekick, …) its parts are deducted automatically from the right warehouse, so the underlying part counts stay honest without anyone touching them.

Trigger: every new orderSkips: B2B / wholesale

Bundle reconcile

Live

Every 5 minutes each bundle’s available number is recomputed from its parts. A part shared by many bundles (one pool of Sidekicks) is given to the best-selling bundle first, so the total promised can never exceed what’s on the shelf.

Cadence: every 5 minPriority: by recent unit sales

Before you adjust inventory

These six rules keep the automations from fighting your edits.
  1. 1

    Receive stock into the part, not the bundle.

    Book incoming Sidekicks into “Sidekick”, not into “V2Pro + Sidekick”. Every bundle that uses that part recalculates itself within 5 minutes.

  2. 2

    Don’t hand-edit a bundle’s number.

    The reconcile overwrites bundle quantities every 5 minutes from the parts. To change what a bundle shows, change its parts’ stock.

  3. 3

    When booking a shipment, read the Adjustment history — not the Incoming column.

    Manual receipts land straight in On hand and never appear in Incoming. Trusting Incoming is exactly what caused July’s double-count of shipment EU2602.

  4. 4

    One method per shipment — manual or the API import, never both.

    If a shipment was keyed in by hand, don’t also run the importer for it (and vice-versa), or every line lands twice.

  5. 5

    To pause an item in one region, set that warehouse’s quantity to 0.

    Keep “Continue selling when out of stock” unchecked. The region that hits 0 shows Sold Out; the other region is unaffected.

  6. 6

    B2B / wholesale is exempt.

    Company orders bypass the regional and bundle logic entirely — nothing here changes how wholesale is handled.

How it decides what’s available

Which warehouse a shopper sees
Country / currency Market Warehouse

United Kingdom (GBP) → UK Warehouse, Milton Keynes.
Europe, Germany, Switzerland & Norway → Eindhoven, NL.
Switching the currency menu switches the whole context, stock included.

A bundle’s available number
Fewest parts on hand Best seller first Capped at 10

A bundle can only be as available as its scarcest part. When several bundles share one part, the best-selling bundle is served first; the per-bundle cap stops any one bundle from reserving the whole pool. The sum promised never exceeds the shelf.

Current snapshot

A few live figures, for orientation. The source of truth is Shopify.
Sidekick on hand
57 EU · 3 UK
One shared pool behind 19 different bundles.
July double-count · corrected
−470
units across 11 SKUs (shipment EU2602, Eindhoven).
Bundle / partSKUUK availEU availLimited by
V2Pro + Omni CartBUNV2OMNIPRO1010Omni Cart (capped)
V2Pro + Omni + SidekickBUNV2OMNICBSKPRO310Sidekick pool
Cybercart + Sidekick · BlackCYBERESK-BK010Sidekick pool
V2Pro + Sidekick · (each variant)V2…SKPRO01–10booster variant
Sidekick (part)CBSK357on hand

UK shows only the best-selling Sidekick bundle as buyable because just 3 Sidekicks sit in the UK warehouse — the total promised (3) matches the shelf exactly. Restock the UK warehouse and the numbers open up on their own.

Where to find the logs

Two places answer almost every “why did this number change?”

Shopify — who changed a quantity

  1. Open Products › Inventory and find the item.
  2. Click the quantity number in the row.
  3. Choose Adjustment history, and pick the warehouse (top-right).
Each row shows date · reason · who (person or app) · ±change

Automation entries appear as AlphardGolfApi; staff edits show the person’s name.

Automation runs — n8n

  1. Open the n8n workspace and go to Workflows.
  2. Open a workflow, then its Executions tab for a timestamped run history.
Regional synca5Ht05fs5AFvcEmf Bundle deductqOTXiI1Egc7u6Wwc Bundle reconcilePzclHLds2Lrl6Fgp

What quietly breaks it

All three fail open — no error shows; the symptom is regions seeing the combined number again.
  1. !

    Changing or republishing the theme.

    The regional display lives in theme code. A theme swap needs the five regional files re-applied — tell Ian before switching or rolling back a theme.

  2. !

    Adding, moving or replacing a warehouse.

    Warehouse IDs are wired into the sync. A new or replaced location is silently ignored until updated — loop Ian in on any location change.

  3. !

    Renaming or adding a market.

    A new or renamed market falls back to the combined stock pool until the rules are updated to include it.

Recent activity

Still open, tracked separately: the bracket SKUs (BRA-CG3-PRO) tied to the duplicate-SKU cleanup, held pending sign-off.