Detection
How nohold decides which line items are pre-order and which are in-stock.
Every Shopify orders/create webhook runs through the classifier. Each line item is labelled in-stock or pre-order, and the order as a whole is labelled:
- In-stock only — passes through unchanged. No split, no dispatch overhead, doesn't count toward your quota.
- Pre-order only — also passes through unchanged, dispatched once as a held SO.
- Mixed — split into two SOs.
How a line item gets classified
nohold checks signals in this order. The first match wins:
1. Product tag (default)
If the product carries the tag configured under Settings → Pre-order tag (default: pre-order), the line item is pre-order.
Tags are checked case-insensitively. Multiple tags on a product are fine — only the configured tag matters.
2. Product metafield (optional)
If you've configured a metafield key under Settings → Pre-order metafield key (e.g. custom.preorder), nohold checks that metafield on the product. A truthy value (true, yes, 1) marks the line as pre-order.
Use this when you can't add tags to products — for example, if tags are reserved for marketing automation. The metafield path is <namespace>.<key> — both halves are required.
3. Inventory level (fallback)
If no tag and no metafield matches, nohold falls back to inventory. If the variant's available stock is 0 or negative at the time of the order, the line item is treated as pre-order.
This is a safety net — we recommend using tags or metafields as the primary signal because they reflect intent ("this is a pre-order product"), not transient state ("this happened to be out of stock right now").
Real-world examples
| Cart | Classification | Result |
|---|---|---|
1× Speaker (in-stock), 1× Ltd. Case (pre-order tag) | Mixed | Split into A (Speaker) + B (Case) |
| 2× Speaker (in-stock) | In-stock only | One SO, no split, free |
1× Ltd. Case (pre-order tag) | Pre-order only | One held SO, no split, free |
| 1× Speaker (in-stock), 1× Mug (no stock, no tag) | Mixed (via inventory fallback) | Split into A + B |
Changing detection rules
Detection rules apply to new orders only. Existing splits won't be re-classified when you change settings — they're already in Brightpearl.
If you change the rules and want to test the new behavior, place a test order. See First split.