Lead Time flow 2 — Inventory item lead time, and the Shopify push

This is the flow that decides what the customer is actually told. It takes the arrival date flow 1 wrote, combines it with stock on hand, stock on order, supplier stock and the product's supply type, and turns all of it into a sentence on the product page. It also decides whether the item can be ordered when it is out of stock.

Active. Verified against the live Celigo flow and all four saved searches on 2026-08-21. The bonded-warehouse change is confirmed deployed: every export now runs the script Lead Time: Inventory V3.0 Aug 2026 - bonded wh. Four defects have been fixed since this entry was first written — LT2-D2, LT2-D3, LT2-D5 and LT2-D9 — and five remain open.

Where the LT- numbers map. The September 2026 rule set — LT-001 to LT-081, confirmed 2026-09-17 — is crosswalked onto registry rules in flow 1 → Confirmed rule set.

Rules & IDs

Rule ID Rule Reading
LI-BL-INV-011 Bonded stock covers the Sydney backorder before it can be promised Business logic
LI-BL-INV-006 The lead-time ladder, and the words the customer reads Business logic
LI-BL-INV-008 Whether an out-of-stock item can still be ordered Business logic
LI-BL-INV-009 Publishing to Shopify — product or variant Business logic

LI-BL-INV-011 runs first and rewrites the arrival date every other rule then reads, so it is described before the ladder.


Project owner
Kim Hoang Nguyen
Developer
Kim Hoang Nguyen
For department
Back End Team
Status
active
Documented
created 2026-08-17 · updated 2026-10-01this registry entry
Script created / updated
created 2024-09-11 · updated 2026-09-23from Celigo — flow 66e0e59d, script 6ab0c6e6 (V3.1)
Verified against production
2026-09-23no version control — verified by re-reading the flow
Systems touched
celigonetsuiteshopify
Rules
Terms

Three readings of the same rules. Nothing is duplicated between them. Printing gives you the business reading followed by the diagrams.

What it does. It turns the arrival dates flow 1 recorded into the sentence a customer reads on the product page — how long the wait is, when new stock lands, and whether the item can be bought at all — and pushes that to Shopify.

Why it exists. Everything else in the chain is bookkeeping; this is the part the customer sees. A promise that is too short produces a late order and an apology. One that is too long loses the sale outright. This flow is where a date in NetSuite becomes the sentence someone reads before they spend money.

When it runs. It has no schedule of its own. Flow 1 starts it when flow 1 finishes — four times a day — whether or not flow 1 succeeded. A half-failed flow 1 still results in the storefront being updated.

What it looks at. Four separate lists of products, run one after another: Local, Imported, Rugs, and Item Simple. They are not slices of one list — they are four categories of product, each with its own list, all handled by exactly the same logic.

Who it affects. Customers read the result. Sales and showroom staff quote from it. Buying sees the consequences when a promise turns out to be wrong.

How it decides.

  • Bonded stock is settled first: whatever the Sydney backorder does not swallow is spare, and the spare is what can honestly be promised.
  • The product is then tested against a ladder of eight rungs, in order, and takes the first that fits — our own warehouse, then on order, then the supplier's stock, then made-to-order, and so on down.
  • The wait is expressed as a band, never a date: one of twenty-three, from "2 - 3 days" to "44 - 48 weeks". Beyond forty-eight weeks it becomes "Please contact showroom for lead time".
  • Where two arrival dates compete — ours and the supplier's — ours wins if they are within a week of each other, otherwise the earlier one does. A date more than a fortnight past is discarded.
  • Three sentences come out of that: the in-stock message, the arrival window, and the out-of-stock message. Each is published separately.
  • Whether an out-of-stock item can still be bought is decided separately from the wait, and is the more commercially dangerous of the two.
  • Nothing is written unless something actually changed.

Outcomes. The three sentences and the quantities are updated and pushed to Shopify · the product is skipped because nothing changed · the product is updated in NetSuite but never reaches Shopify, because it has no Shopify id · no rung matches and the promise is left blank — defect LT2-D6 · the whole run stops on one item with no supply type — defect LT2-D7.

Bonded stock on hand, and paying off the backorder first LI-BL-INV-011

Why it exists. Stock in the bonded warehouse in Vietnam is ours, but it is not sellable today — it has to cross the water and clear into Sydney first. Before this rule existed that stock was invisible: it could not shorten a promise, and a Sydney warehouse that was oversold published a negative on-order quantity straight to the storefront. This rule makes bonded stock count, but only for what it can honestly do.

Two separate jobs, and it is worth keeping them apart.

Job What it settles Changed in V3.1?
Netting How much bonded stock is genuinely spare, after paying off what we have already sold No
The one missing date Bonded stock on hand, which flow 1 structurally cannot see Yes — this is all that is left of the old date calculation

The two ideas behind netting.

  1. Bonded stock is never available now. It can shorten the arrival promise. It can never produce "Ships in 2 - 3 days".
  2. It pays off the backorder first. Sydney's on-order figure already has backorders netted out of it, so a negative figure means we have sold stock we do not have. Bonded stock covers that debt before any of it can be promised to a new customer.

How much bonded stock is spare.

Step What happens
1 Take Sydney's on-order figure. If it is negative, that is the shortfall — stock already sold and not covered
2 Pay the shortfall down with bonded stock on hand first, because it can move soonest
3 Pay any remainder down with bonded stock on order
4 Whatever bonded stock is left over is spare, and only that is promised to new customers
5 If a shortfall still remains after all of it, the item is oversold beyond what bonded can cover — nothing reports this, see defect LT2-D11

That spare figure is what the website's Quantity On Order is built from, and what allows bonded stock to unlock backordering for supply types that would otherwise refuse it (LI-BL-INV-008). None of it changed in V3.1.

What the Sydney figure already contains. The on-order number this starts from is NetSuite's own figure for the Sydney location, and it counts every inbound transfer order — including ones that have gone stale, and ones moving stock to a showroom. That is deliberate: the question the website's Quantity On Order answers is "how much is coming", not "how much is coming that we could promise". It is a different question from the one flow 1 asks when it picks an arrival date, which is why the two numbers can disagree on the same product without either being wrong.

The one arrival flow 1 cannot see. Flow 1 settles every arrival that has an order behind it — a Sydney purchase order, a bonded purchase order, a transfer order. It reads a report of open order lines, so anything without a line on that report is invisible to it.

Bonded stock sitting on hand with no transfer order raised yet is exactly that: a stock balance, not an order. It has no line, so flow 1 cannot date it. This rule contributes that one date, and nothing else:

Source Its date Settled by
Sydney purchase order, transfer order, bonded purchase order Flow 1's first arrival, taken as-is Flow 1
Bonded stock on hand, no transfer order Today plus 35 days, recalculated every run so it rolls forward until a transfer order exists This rule — but see below

The earlier of the two becomes the date everything downstream uses. Only spare bonded stock may set a date — stock still covering the backorder is already promised to someone.

The customer-facing message reads the first arrival. Confirmed by the project owner on 2026-09-23. The three lead-time sentences and the dispatch band are all built from the arrival date this rule settles, and that date is meant to be the first arrival written by flow 1. Shopify runs no logic of its own — it displays the sentences as given. Because a stale first arrival is dropped and the second is promoted into its place, the message only ever has to read one field.

The code does not always honour this. Bonded stock on hand is allowed to beat the first arrival when it lands sooner, so on those items the message is built from a bonded estimate rather than from the first arrival — and the storefront then shows a different date from the one NetSuite holds. That is defect LT2-D17.

This contribution is legacy, and is being removed. The uplift here predates the first-arrival field, which now already accounts for bonded transit. On 2026-09-23 exactly one item held bonded stock available in Vietnam and it already carried a first arrival, so this path can only override a date flow 1 calculated correctly, never fill a gap. It is defect LT2-D17.

A consequence to settle. The confirmed rule that bonded stock on hand with no transfer order is dated at today plus thirty-five days then has no implementation anywhere: flow 1 reads a transaction search and bonded on-hand is a stock balance with no line on it. The rule would be dormant rather than wrong — it currently affects at most one item — but it should be a decision, not an accident.

The two dates can legitimately disagree, and that is not a fault. NetSuite's first-arrival field holds the next documented arrival. The date the customer reads is the next arrival of any kind. On an item with spare bonded stock on hand, the customer's date can be the earlier of the two. They answer different questions. Anyone comparing the product record against the website — customer service especially — needs to know that.

What changed on 2026-09-21. Until V3.1 this rule recalculated the arrival date from scratch and overwrote flow 1's answer. It did two things wrong doing so. It dropped flow 1's date whenever NetSuite's net location on-order was zero or below — a different measure from the one flow 1 uses, so correctly calculated dates were being blanked. And it added the 35-day transit to the raw bonded date a second time, on a field that deliberately includes stock already claimed by a transfer order — promising stock that was already spoken for. Both were removed. Flow 1's date is now passed through untouched.

Outcomes. The item carries the earlier of flow 1's date and a bonded-on-hand date · it carries flow 1's date unchanged, which is the common case · it carries a bonded-derived date when flow 1 found nothing sellable · it carries no date at all, and the customer is sent to the showroom.

The lead-time ladder, and the words the customer reads LI-BL-INV-006

The ladder. Each product is tested against these in order and takes the first one that fits. Nothing further is considered once a rung matches.

Rung If… The promise becomes Counted from
— The product is In-Store Only and a showroom holds stock "Available for in-store purchase in our … showroom" Not a lead time at all
1 We have it in our own warehouse — Sydney only, never bonded Ships in 2 - 3 days Fixed
2 We have it on order — including unallocated bonded stock The wait until it arrives The resolved Sydney landing date from LI-BL-INV-011, not the purchase order's date
3 The supplier has it in stock, and has a stated in-stock lead time That lead time The supplier's standard
4 The supplier has it on order The wait until the supplier receives it The supplier's arrival date
5 It is Made To Order 1, with a stated lead time That lead time The supplier's standard
6 It is Made To Order 2, with a stated lead time That lead time The supplier's standard
7 It is End Of Line or Seasonal Only "Please contact showroom for lead time" —
8 The supplier has a stated out-of-stock lead time That lead time The supplier's standard
— None of the above Nothing is written — see defect LT2-D6 —

The last row is now a real rule, not a gap — changed 2026-09-23. Until that date three of the four conditions never rejected anything (LT2-D21), so rung 8 fired for every product that got that far and "none of the above" was unreachable. A product with no lead time recorded anywhere was told "Please contact showroom for lead time" by accident. Both halves are now fixed: rungs 5, 6 and 8 genuinely check that a lead time exists, and a product matching nothing is given that same wording by rule. The customer sees no difference — that was the point, and it was measured across all 19,225 rows before either change shipped — but the ladder that runs is now the ladder written above.

A gap is reserved between rungs 1 and 2. The business has an open question about whether something belongs between "in our warehouse" and "on order" — showroom-only stock, or an item with one unit on hand and four on order, which today is quoted 2 - 3 days for the whole order. Until it is settled there is no rung there. It is numbered P2 in the project's own rule set, which is why that set counts nine priorities where this ladder shows eight.

The wait is always expressed as a band, never a date. A calculated number of weeks is rounded into one of twenty-three bands — "2 - 3 days", "1 - 2 weeks", … "44 - 48 weeks" — and anything beyond forty-eight weeks becomes "Please contact showroom for lead time".

Three sentences are produced for every product, and each is published separately:

Sentence Reads like When the customer sees it
In-stock message "Leaves our warehouse in 6 - 8 weeks." Normally
Arrival-window message "New stock arrives in our warehouse from 05/10/2026 - 12/10/2026." When stock is on the way
Out-of-stock message "Leaves our warehouse in 12 - 14 weeks." When it is out of stock

The arrival window is always the arrival date plus seven days — a one-week spread, not a real delivery estimate.

Whose warehouse the sentence names. If the supplier drop-ships, the wording becomes "our partners warehouse" instead of "our warehouse". Two brands are hard-coded by name:

  • Ellison Studios — treated as not drop-ship, and any "our partners warehouse" wording is rewritten back to "our warehouse", so the customer is told the stock is ours.
  • McMullin & Co. — see LI-BL-INV-008.

Which arrival date wins. After LI-BL-INV-011 has settled ours, two remain: ours and the supplier's.

If… Then…
Only one of the two exists That one is used
The two are within a week of each other Ours is used
The two are exactly the same day Ours should be used. The supplier's is — defect LT2-D12
Otherwise The earlier of the two is used
A date is more than a fortnight in the past It is discarded and treated as though it never existed
Neither exists "Please contact showroom for lead time"

The band and the sentence can describe different days. The wait band is always counted from our date, even on a product where the comparison above picked the supplier's. So a customer can read a dispatch band measured from one date and an arrival window quoting another. Defect LT2-D13.

When nothing matches, say so — do not leave the last answer standing. A product that reaches the bottom of the ladder, or an In-Store Only product with no showroom stock, should be told to contact the showroom. Today the three sentences are simply left untouched in both cases, so the product keeps whatever promise it was last given, however old. Defect LT2-D6, which covers both.

Which clock the dates are read on. Every date decision here — "is this more than a fortnight past", "how many weeks until it lands", "is the supplier's ETA beyond seventy days", and the bonded-on-hand estimate of today plus thirty-five — is meant to be made on the Australia/Sydney date. The flow declares that timezone for its schedule, but the arithmetic inside it reads the server's clock, which runs on UTC. Between 10am and midnight UTC the server is already on tomorrow's date in Sydney, so those four decisions can land a day out. Flow 1 does this correctly; flow 2 does not. Defect LT2-D14.

Only real changes are written. Eight values are compared against what the product already carries — the three sentences, the dispatch band, the two Shopify quantities, the showroom total and the backorder flag. If any one differs, the product is written and pushed to Shopify. If none does, it is skipped entirely. On a full run around 5,300 products are examined and roughly a hundred are written.

Who signs a change off. The three sentences, the dispatch band and the arrival window are what a customer reads before deciding to buy. A change to any of that wording, or to how a date is chosen, is signed off by the customer service lead before it ships. This is a process rule, not something the code enforces — nothing in Celigo or NetSuite checks it, and the September 2026 changes to the Shopify push went in without it.

The arrival date is not one of the eight, and is never written back to NetSuite. Flow 2 calculates it, uses it for the wording, and sends it to Shopify — but the NetSuite field belongs to flow 1. Nor are the first and second arrival values the Shopify push now carries. A product whose only change is one of those never requalifies, so those metafields fill in as other things move rather than when they actually change. Defect LT2-D15.

Whether an out-of-stock item can still be ordered LI-BL-INV-008

Separate from the lead time, and the more commercially dangerous of the two: this decides whether the storefront will let a customer buy something we do not currently have. Getting it wrong in one direction takes money for stock that may never come; in the other it refuses a sale we could have fulfilled.

# If… Then… Because
1 The second warehouse holds stock Allowed, whatever else is true Physical stock overrides every other consideration
1a Spare bonded stock exists, for a supply type that would otherwise be refused Allowed Since the bonded change, "on order" includes unallocated bonded stock, so stock in Vietnam can now unlock backorder where it previously could not
2 In-Store Only, nothing on order Not allowed It cannot be shipped at all
3 Drop Ship In-Stock Only, Seasonal Only or End Of Line, with nothing on order anywhere and no supplier stock Not allowed There is no path to fulfilling it
4 Drop Ship Seasonal Item with nothing on order anywhere Not allowed Same
5 Brand is McMullin & Co. and their stock is more than 70 days away Not allowed That brand's waits are long enough that the order would not be honoured in a reasonable time
6 Anything else Allowed Default is to take the order

Publishing to Shopify — product or variant LI-BL-INV-009

Once NetSuite is updated, the same values go to the storefront. Each product takes one of two routes, and a product that fits neither is silently dropped.

Route Taken when What is set
Variant The item is marked as a variant, and has both a Shopify product and variant id Nine values on that variant
Product The item is marked as a product, and has a Shopify product id The same nine values on the product
Neither Anything else Nothing is sent — the storefront keeps what it had

Nine values are sent. Five have been there throughout — the three sentences, the on-order quantity and the warehouse on-hand quantity. Four were added on 2026-09-21 to carry the first and second arrival to the storefront, which is where the business expects sales to read them:

Value Source
The three sentences Calculated here
On-order quantity Calculated here, from the bonded netting in LI-BL-INV-011
Warehouse on-hand quantity Calculated here
First arrival date The resolved date — flow 1's, or an earlier bonded-on-hand one
Second arrival date Read straight from the saved search
First arrival quantity Read straight from the saved search
Second arrival quantity Read straight from the saved search

Which searches carry the arrival values, and why two do not. The four saved searches behind this flow do not carry the same columns, and that is deliberate:

Search Catalogue Arrival columns Why
6186 Imported Goods we order into our own warehouse ✅ They have purchase orders behind them, so there is an arrival to report
6221 Item Simple Mixed — includes Life Interiors warehouse-stocked items ✅ added 2026-09-21 Its non-drop-ship items have real Sydney arrivals
6220 Rugs Rugs, which are ordered direct from the supplier ❌ by design Nothing is ordered into our warehouse, so there is no Life arrival to report
6212 Local Art prints, linen and similar, supplier-shipped ❌ by design Same reason — nothing is ordered into our warehouse

A drop-ship item has no arrival, and that is the right answer. The absent columns are not a gap in those two searches; asking them for a Life arrival date would be asking the wrong question. What the customer waits on is the supplier's own lead time, which the ladder already handles.

NetSuite and Shopify must hold the same value. Confirmed by the project owner on 2026-09-22. The arrival metafields are internal visibility only — nothing on the storefront branches on them — so there is no reason for the two systems to differ, and NetSuite is the source of truth because it is written first.

NetSuite holds Shopify must hold
a date that date
a quantity, including zero that quantity
blank blank

Blank and zero both publish as nothing. Confirmed 2026-09-23. NetSuite distinguishes the two — the first-arrival quantity is null on 78,736 items and an explicit zero on 1,198 — and the distinction is real but is about provenance, not about the business answer:

NetSuite How it got there Published to Shopify
null No open inbound line has ever been in scope while the flow was running metafield absent
zero The item was in scope and the flow computed a clear metafield absent

Both mean nothing on order, which is what a customer or a salesperson needs to know, so carrying the difference through to the storefront would show 0 on some items and nothing on others for no reason either could name. It also removes 379 rows from the reconciliation that were never wrong.

Worked example: 421626 Air Bedside Table (Oak Brown) has never had a purchase order and holds null. 129586 Air Bedside Table (Oak) has seven, all closed, the newest from April 2025, and also holds null. 248034 Abstract Console (Black) has six closed orders but was in scope while the flow ran, so it holds an explicit zero. All three publish nothing.

The rule covers all nine metafields, not only the four arrival ones. Confirmed 2026-09-23. The on-order quantity, the warehouse quantity and the three sentences are held to the same standard. Live gap found the same day: BE-ETH-AIR-VRNOAK holds 0 in NetSuite for the warehouse quantity and has no metafield at all in Shopify, while every comparable item carries 0.

A negative is published as zero, and that is required rather than cosmetic. NetSuite's own location figure is on order less backordered, so it goes negative when an item is oversold — 82169 Adele Armchair reads −1 today. That figure is an input this flow never writes. The field it does write is clamped to zero before publishing, confirmed 2026-09-23 as necessary because other calculations do arithmetic on it and a negative would propagate.

Blank and zero are genuinely different states: NetSuite stores 78,736 items with the 1st PO quantity null, 1,198 with an explicit zero and 1,503 above zero (verified 2026-09-23). So the rule can be honoured exactly rather than approximated.

How the two systems currently fail to match. The quantities are sent unconditionally, so an item with no arrival pushes an empty string into a whole-number metafield. The dates are wrapped in a presence test, which omits them when blank — and omitting is not clearing, so Shopify keeps a value NetSuite has already cleared. Both are defect LT2-D16, and the presence test is the wrong tool for the job: a blank quantity is 0, and a blank date needs the metafield deleted, because a date metafield cannot hold an empty value.

The date stays a date. Confirmed 2026-09-22 — the two arrival dates keep the Shopify date type rather than becoming text, so clearing one requires a delete rather than a blank value.

The warehouse quantity is not what the storefront sells against. It counts our own two warehouses and nothing else — no bonded stock, no showroom floor stock, no supplier stock. The quantity the customer can actually buy adds supplier on-hand on top, and is published through the inventory sync, not here. Two fields named qty_available_wh therefore exist and hold different numbers: this one, and the NetSuite field, which means Life plus supplier. Anyone reading one and assuming the other will be wrong, and nothing in either system flags it.

Confirmed as intended on 2026-09-23, and flagged as a concern to revisit — the project owner may rename one of the two so the names stop colliding. Until then, any reconciliation between NetSuite and Shopify must exclude this pair, or it reports every supplier-stocked item as a mismatch when both values are correct.

Change detection has no comparison for this metafield, nor for any of the four arrival values. An item whose sentences and quantities are all unchanged never requalifies, so those metafields fill in as stock moves rather than across the catalogue at once. See defect LT2-D15.

Known defect — a product that fits neither route is discarded in silence. The router has a variant branch and a product branch and no default, so anything matching neither is dropped with no error and no log. This was first seen in August as LT2-D2, when the Item Simple search did not return the Shopify type at all; that column was added and those products now publish. The mechanism was never fixed — only that one trigger for it. The live trigger today is an item with no Shopify id recorded in NetSuite. Measured 2026-09-23: 220 records a run are discarded this way. Most are items that genuinely are not on Shopify, which is the right outcome reached by the wrong mechanism — but 20 of them are live storefront products, and they lose every update, on every run, permanently. See defect LT2-D19.

Two different fixes are needed and they should not be confused: a default branch that logs stops it being silent, and recording the missing Shopify ids stops it happening.

Nothing is ever read back from Shopify, and a failure is actively reported as a success. The storefront is written to and never compared, so a value changed in Shopify by hand is never noticed. Worse, a rejected write is not noticed either: Shopify answers a rejected metafield with HTTP 200 and the reason inside the response body, and neither import reads the body. A run can log hundreds of successes and have written nothing. See defect LT2-D18 — it is the reason no other defect in this chain can be measured until it is fixed.


Field registry

Every field this automation reads or writes, by the name it carries in the system — what it means, and what changes when it changes. Field ids are in the developer reading.

Inputs — what it reads

Values the automation looks at to make its decision. Change one of these and the decision changes.

FieldWhat it meansWhat it changesStatus
Internal IDInventory Item Which product this is. Identifies the item the NetSuite update is applied to. confirmed
Supply TypeInventory Item Which supply arrangement the product is on. Buying maintains the list of valid types. Selects the pricing of the promise — In-Store Only diverts to the showroom message, Made To Order 1 and 2, End Of Line and Seasonal Only each pick a different rung of the ladder. Also drives whether backorder is allowed. confirmed
Brand - Life InteriorsInventory Item Which brand Life Interiors sells this product under. Two brands are special-cased by name — Ellison Studios has its wording rewritten to "our warehouse", and McMullin & Co. is denied backorder when its supplier date is more than 70 days out. confirmed
Qty Available (Warehouse)Inventory Item Capture the available quantity at this location, refreshed on a schedule rather than in real time. Added to warehouse2 to give the on-hand total. Any on-hand stock at all short-circuits the ladder to "Ships in 2 - 3 days". confirmed
needs confirmingInventory Item needs confirming Added to warehouse for the on-hand total, and on its own forces backorder to be allowed regardless of supply type. needs confirming
needs confirmingInventory Item needs confirming The whole of the on-order total. Net of backordered quantity already. Decides whether the promise is built from the arrival date. needs confirming
Next Available Receive DateInventory Item When the next stock is expected in Sydney — the value flow 1 wrote. No longer used as supplied. The bonded rule overwrites it in memory with a computed Sydney landing date before anything reads it, and the computed value is what gets written back to the item. confirmed
Supplier Next Available Receive DateInventory Item When the supplier expects their next stock. Only meaningful when the supplier has quantity on order. The supplier's own arrival date. Competes with the Life date; the earlier one wins, with Life favoured on a tie inside a week. confirmed
Supplier Quantity On HandInventory Item The supplier's own stock on hand. Used for drop-ship items and local items from key suppliers. Rung 4 of the ladder, and part of the quantity published to Shopify. confirmed
Supplier Quantity On OrderInventory Item The supplier's own stock on order. Used for local items from key suppliers. Rung 5 of the ladder, and part of the on-order quantity published to Shopify. confirmed
Drop ShipInventory Item Whether this supplier ships straight to the customer. Drives both the courier choice and the wording of the lead-time message. Switches the customer wording between "our warehouse" and "our partners warehouse". Overridden to false for Ellison Studios. confirmed
Default In Stock Lead TimeInventory Item The supplier's standard wait, in weeks, when they have stock. 0.3 means 2-3 days, 0.5 means 3-5 days, 0.7 means 5-7 days, 1 means 1-2 weeks. Weeks used for rung 4. A zero disqualifies the rung entirely. confirmed
Default Out Of Stock Lead TimeInventory Item The supplier's standard production wait in weeks, buffer included. Weeks used for the out-of-stock message, which is built for every item regardless of rung, and for rung 9. confirmed
Default Made To Order 1 Lead TimeInventory Item The supplier's standard made-to-order wait, in weeks. Weeks used for rung 6. A zero disqualifies the rung. confirmed
Default Made To Order 2 Lead TimeInventory Item The supplier's second made-to-order wait, in weeks. Weeks used for rung 7. A zero disqualifies the rung. confirmed
Qty Available (Syd)Inventory Item Stock on hand at the Sydney showroom. Refreshed on a schedule, so it is not real time. Sydney showroom stock. Feeds the in-store message, the showroom total, and is written back unchanged. confirmed
Qty Available (Mel)Inventory Item Stock on hand at the Melbourne showroom. Refreshed on a schedule, so it is not real time. Melbourne showroom stock. Same three uses as Sydney. confirmed
Qty Available (Bris)Inventory Item Stock on hand at the Brisbane showroom. Refreshed on a schedule, so it is not real time. Brisbane showroom stock. Same three uses as Sydney. confirmed
Qty Available (Gold Coast)Inventory Item Stock on hand at the Gold Coast showroom. Refreshed on a schedule, so it is not real time. Gold Coast showroom stock (location 24, Gold Coast Showroom - Miami). Named in the in-store message and, since the bonded change, included in the showroom total that decides whether an update is needed. confirmed
Qty Available (Bonded Warehouse)Inventory Item Stock on hand in the bonded warehouse in Vietnam. Covers the Sydney backorder first. Whatever is left counts as on order, and dates its own arrival at 35 days from today. Returned as a real number by search 6186 only; the other three return it blank. confirmed
needs confirmingInventory Item Stock on order into the bonded warehouse in Vietnam. Covers the Sydney backorder after bonded on-hand. Whatever is left counts as on order, and dates its arrival at its own receive date plus 35 days. Returned as a real number by search 6186 only. needs confirming
Next Available Receive Date (Bonded WH)Inventory Item When the next stock is expected to land in the bonded warehouse — the value flow 1 wrote. The starting point for the bonded arrival estimate, plus 35 days of transit. Searches 6212, 6220 and 6221 do not return this column at all, so that estimate can never be produced for their items — see defect LT2-D9. confirmed
ImportedInventory Item Whether the item comes from an overseas supplier and is stocked and shipped from our own warehouse. None. Returned by all four searches and never read. confirmed
needs confirmingInventory Item The product's id on the Shopify storefront. Must be greater than zero or the item never reaches Shopify. Items carry "- None -" when they have no storefront presence. confirmed
needs confirmingInventory Item The variant's id on the Shopify storefront. Required for the variant route. Absent or "- None -" sends the item down the product route instead. confirmed
needs confirmingInventory Item Whether this item is published to Shopify as a product or as a variant. Chooses the Shopify route. Saved search 6221 does not return it at all, so its items match neither route and never reach Shopify — defect LT2-D2. confirmed
Ships InInventory Item The dispatch estimate the item currently carries. One of the eleven comparisons that decide whether anything is written at all. confirmed
In Stock Lead Time MessageInventory Item The in-stock message the item currently carries. Compared against the newly built message to decide whether to write. confirmed
On Order Lead Time MessageInventory Item The on-order message the item currently carries. Compared against the newly built message to decide whether to write. confirmed
Out Of Stock Lead Time MessageInventory Item The out-of-stock message the item currently carries. Compared against the newly built message to decide whether to write. confirmed
Qty Available To Sell On WebsiteInventory Item The website-available quantity the item currently carries. Compared twice, against two different totals that cannot both match — see defect LT2-D4. confirmed
Qty On Order Available To Sell On WebsiteInventory Item The website on-order quantity the item currently carries. Compared twice, against two different totals that cannot both match — see defect LT2-D4. confirmed
needs confirmingInventory Item needs confirming Compared against Sydney + Melbourne + Brisbane showroom stock. Gold Coast is left out of that sum — see defect LT2-D5. needs confirming
Shopify Enable Out Of Stock SellingInventory Item Whether the storefront currently lets this be bought out of stock. Compared against the newly derived backorder decision. confirmed
Next Available Receive DateInventory Item The arrival date the item currently carries. None any more. The bonded change removed it from the comparison set, and search 6186 no longer returns it — so a changed arrival date no longer causes a write on its own. See defect LT2-D8. confirmed

Outputs — what it writes

Values the automation puts back. Everything downstream of this rule reads them, so a wrong value here travels.

FieldWhat it meansWhat it changesStatus
Qty Available (Syd)Inventory Item Stock on hand at the Sydney showroom. Refreshed on a schedule, so it is not real time. Sydney showroom stock. Feeds the in-store message, the showroom total, and is written back unchanged. confirmed
Qty Available (Mel)Inventory Item Stock on hand at the Melbourne showroom. Refreshed on a schedule, so it is not real time. Melbourne showroom stock. Same three uses as Sydney. confirmed
Qty Available (Bris)Inventory Item Stock on hand at the Brisbane showroom. Refreshed on a schedule, so it is not real time. Brisbane showroom stock. Same three uses as Sydney. confirmed
Qty Available (Gold Coast)Inventory Item Stock on hand at the Gold Coast showroom. Refreshed on a schedule, so it is not real time. Gold Coast showroom stock (location 24, Gold Coast Showroom - Miami). Named in the in-store message and, since the bonded change, included in the showroom total that decides whether an update is needed. confirmed
Ships InInventory Item The dispatch estimate. If the item is in stock it dispatches in a couple of days; otherwise this shows the order's estimated arrival. The headline promise. Not itself sent to Shopify, but it is what the messages are built from. confirmed
In Stock Lead Time MessageInventory Item The in-stock lead time across our warehouses and the supplier's. Falls back to the out-of-stock wording when there is nothing in stock. Published to Shopify as the in-stock lead time message. confirmed
On Order Lead Time MessageInventory Item The on-order lead time across our warehouses and the supplier's. Falls back to the out-of-stock wording when there is nothing on order. Published to Shopify as the on-order lead time message. The window is always the arrival date plus seven days. confirmed
Out Of Stock Lead Time MessageInventory Item The out-of-stock lead time across our warehouses and the supplier's. Published to Shopify. Built for every item from the supplier's out-of-stock lead time, independently of which rung the item landed on. confirmed
Next Available Receive DateInventory Item When the next stock is expected in Sydney. Written back by this flow as well as flow 1, but no longer with the same meaning — flow 1 writes the purchase order's date, this flow now writes a computed date on which stock lands in Sydney. Two flows own one field and disagree about what it means. See defect LT2-D8. confirmed
Qty Available To Sell On WebsiteInventory Item Quantity available to sell, from our warehouses plus the supplier's stock on hand. This is what Shopify shows as available. Life on-hand plus supplier on-hand. This is the quantity published to Shopify as available. confirmed
Qty On Order Available To Sell On WebsiteInventory Item Quantity on order available to sell, from our warehouses plus the supplier's. This is what syncs to Shopify as on order. Life on-order plus supplier on-order. Published to Shopify as the on-order quantity. confirmed
Qty Available (Warehouse)Inventory Item Capture the available quantity at this location, refreshed on a schedule rather than in real time. Life on-hand only, without the supplier's. confirmed
Qty Available (Syd)Inventory Item Stock on hand at the Sydney showroom. Refreshed on a schedule, so it is not real time. Sydney showroom stock, written back unchanged. confirmed
Qty Available (Mel)Inventory Item Stock on hand at the Melbourne showroom. Refreshed on a schedule, so it is not real time. Melbourne showroom stock, written back unchanged. confirmed
Qty Available (Bris)Inventory Item Stock on hand at the Brisbane showroom. Refreshed on a schedule, so it is not real time. Brisbane showroom stock, written back unchanged. confirmed
Qty Available (Gold Coast)Inventory Item Stock on hand at the Gold Coast showroom. Refreshed on a schedule, so it is not real time. Gold Coast showroom stock, written back unchanged. confirmed
Shopify Enable Out Of Stock SellingInventory Item Whether the storefront lets a customer buy this item when it is out of stock. Whether the storefront lets a customer order this item when it is out of stock. confirmed
needs confirmingShopify product / variant metafield The in-stock lead time the customer reads on the product page. Set from the NetSuite in-stock message. Never read back, so Shopify is never compared against NetSuite. confirmed
needs confirmingShopify product / variant metafield The arrival window the customer reads when stock is on the way. Set from the NetSuite arrival-window message. confirmed
needs confirmingShopify product / variant metafield What the customer reads when the item is out of stock. Set from the NetSuite out-of-stock message. confirmed
needs confirmingShopify product / variant metafield How many units are on order, as the storefront sees it. Life on-order plus supplier on-order. confirmed
Qty Available WarehouseShopify product / variant metafield How many units are on hand in our own two warehouses, and nowhere else. Life warehouse on-hand only. Excludes bonded stock, showroom floor stock and supplier stock, so it is deliberately not the quantity the storefront sells against. Two traps follow from that. It is not the same number as the available quantity published to Shopify, which adds supplier on-hand on top. And the NetSuite field of the same name, custitem_qty_available_wh, carries the NetSuite meaning of Life plus supplier — the two fields share a name and disagree by design. Change detection has no comparison for this metafield, so it populates as stock moves rather than all at once. confirmed