Waves and picking
A wave is a batch of orders picked in one walk. This page explains what a wave is, what the printout looks like, how to run one, how to write the definitions that choose orders, and what to do when things go sideways.
What a wave is
Instead of picking orders one at a time, Lodsted groups them. Each order on the wave gets a numbered bin on the pick cart. The picker walks the warehouse once with a pick list sorted by location that says, for every SKU, how many to take and which bins to put them in. Back at the pack bench, the packing slips are in bin order, so bin 12's contents meet order 12's slip.
- A wave has a number (
W317), a type (the name of the definition that chose its orders), a size and a status. - Size is the cart size on the wave definition, up to 250 bins. It is fixed there and never changes on its own: Lodsted does not shrink or grow a wave because of what is on it. Fewer orders than bins is fine.
- Creating a wave allocates stock: it reserves units in specific bins so two waves cannot promise the same ball. Available stock elsewhere drops accordingly.
- Statuses: Active (created) → Printed → Completed, or Cancelled (reset).
Order matters, twice
Two sequences decide what ends up on a wave. Both are fixed; neither is random.
- Definitions are taken in the order they are listed. The Manage definitions page sorts them top to bottom, and the buttons on the Waves page appear in that same order. When an order matches more than one definition, it belongs to the first one in the list and is invisible to every definition below it. The eligible counts on the buttons already reflect this: a Standard order that also matches Rush is counted under Rush, not Standard.
- Within a definition, orders are taken oldest first. The eligible list is sorted by order date, and allocation walks it from the top: the oldest order gets its stock reserved first, then the next, until the cart is full or stock runs out. A newer order never jumps ahead of an older one for the same SKU.
Because stock is reserved the moment a wave is created, the sequence in which you run the buttons matters as much as the sequence of the list. Running Standard before Rush lets Standard orders claim the last units of a SKU that a Rush order needed. Run the buttons left to right, top of the list first, and the priority you set up on the definitions page is the priority the stock follows.
Three definitions, in list order: Rush, Singles, Standard. A rush order from this morning and a two-line standard order from yesterday both need the last 2 units of GB-PRO-DZ. The rush order is offered only to Rush; it is first in the Rush list regardless of age because nothing older is there. Run Rush first and it gets the units; the standard order then shows a short-stock warning in the Standard preview. Run Standard first and the opposite happens, and Rush shows the warning.
Running a wave
- Pick a definition
Across the top of the Waves page is one button per active wave definition, in list order, each showing how many orders are eligible right now. Work left to right (see Order matters). The count only includes orders that can be fully filled from available stock (split orders count when any line can). Click one.
- Review the preview
The eligible orders are listed: store, customer, ship method, date, items, tags. An amber triangle marks an order that is short on stock, with the short SKUs on hover. Uncheck any order you want to leave behind. Search narrows the list. The toolbar's wave limit (All waves, or a number) caps how many waves this run creates when more orders are eligible than one cart holds.
- Create
Lodsted takes the selected orders in order-date order, allocates each one in full (the item's pick location, then other zone-01 bins including 01STAG, then bulk), fills bins up to the definition's cart size, and starts a new wave when the cart is full. The result toast says how many waves and orders were created. If stock had to come from bulk, or a primary would fall below its Min, an auto-move is created alongside and the toast says so.
- Print
Click Print on the wave row (or click the row). A print tab opens with the pick list followed by every packing slip. The first print moves the orders to Printed and tags them in Shopify (
printed,W317/12). Reprints change nothing. - Move, then pick
If an auto-move was created, print it (it is in the same list, with an orange arrow) and do the physical move before the picker starts; the pick list assumes the stock is in the pick bins. Then pick.
- Pack and ship
Packing slips go with the orders to the pack station. As shipments are processed the wave's orders become Shipped; when the last one does, the wave completes on its own.
Only one wave creation can run at once. If someone else is creating, you get a short "creation already in progress" message; wait a few seconds and try again.
What the printout looks like
The pick list
Rows are sorted by location code, so the walk follows your aisle numbering. The Destination Bins column reads "quantity > bin": take 8 from the first bin, put 6 in cart bin 12 and 2 in cart bin 40. Items counts distinct SKUs. The barcode is the wave id for scanning.
The packing slips
One slip per order, in bin order, with the order's number and date, the shipment reference (12891-1, the
barcode to scan at the pack station), bin number, ship-to address, quantity ("12 of 15" when this wave ships only part
of a split order), a HAZMAT mark when any line is hazmat, and the lines. Next to each line is where it was picked from:
| Location column | Means |
|---|---|
| A location code | Picked on this wave from that bin. |
| BACKORDERED | Shippable but not allocated on this wave (short stock on a split order). Do not expect it in the bin. |
| SHIPPED | Allocated to an earlier wave; already gone. |
| blank | Non-shippable line (digital, service). |
Slips paginate at 25 lines with "Page X of Y" and the header repeated. The return form prints on the last page, with the logo and returns barcode from Settings › Company, or the company name as text if no logo is set.
The waves list
Below the definition buttons is the list of waves and auto-moves together. Default filter: Active and Printed; chips add Completed and Cancelled; a date box filters by created date; search matches wave number, type or status. Columns: Type, Size (bins), Orders, Status, Created, Actions. Click the arrow at the left of a row to expand the orders on it (order, status, items, customer, tags) with a remove-from-wave button and a warning for backordered orders.
| Action | Available when | Does |
|---|---|---|
| Active or Printed (also by clicking the row) | Opens the pick list and packing slips. First print sets Printed. | |
| Complete | Printed | Closes the wave now. Unshipped lines have their stock released; orders with nothing left are marked Complete; split orders with unwaved lines go back to Downloaded. Afterwards Lodsted rebuilds allocations and reports any drift. |
| Reset | Active or Printed | Cancels the wave: every order returns to Downloaded, all its stock is released, the printed tag is removed in Shopify. Use when a wave was created by mistake or needs re-doing. |
| Reset Selected | Checkboxes checked | Resets several waves at once; the header checkbox selects every resettable wave on the page. |
Reset a wave whose orders have already shipped and nothing breaks (shipped lines stay shipped), but do not use it to "fix" a stock problem; adjust the stock instead.
The list loads the most recent 500 waves. A date older than those shows nothing.
Auto-moves
An auto-move is a list of stock to carry from bulk to the place it is picked from. Each item has one
pick location: the location marked primary (in any zone, so a primary can be a bulk shelf); if none
is marked primary, a zone-01 bin assigned to the item; if it has neither, the shared staging location
01STAG. A picker is only ever sent to the pick location, another zone-01 bin, or 01STAG, never to a
bulk shelf that is not the item's primary. Stock left in 01STAG is picked first by the next wave. Lodsted creates
an auto-move:
- With a wave, when a pick bin could not cover the wave's need and bulk could. Named after the wave. The stock is moved in the system at creation, with the wave's reservation traveling with it, so the pick list already points at the pick bin.
- From the Replenishment page, when someone chooses rows and clicks Generate Move. Named
RM…for replenishment move.
Min and Max apply only to a primary. For a primary with a Max: nothing moves while it stays at or above Min after the pick; below Min it is filled to Max; if it was short for the wave, the larger of the shortfall and Max moves; quantities round to a master carton when that fits within 30% over Max, otherwise to the group quantity. For 01STAG or any other pick location without a Max, exactly what the waves need moves, with no rounding. Moves always come from bulk, oldest stock first. The report is printed from the Waves list (Print on the orange-arrow row); it shows From location, SKU, To location, quantity, the pick bin's level before and after, its Min and Max, and the wave's total need. Complete marks it done once the physical move is finished. Undo reverses a move that was not actually carried out (the stock goes back to bulk in the system; the report is marked UNDONE). A report marked PARTIAL means bulk could not cover the whole need.
Print the auto-move, do the move, then start the pick list. A picker who reaches an empty pick bin because the move has not happened yet will short the wave.
Wave definitions
A definition is a named rule for choosing orders. Each one becomes a button on the Waves page. The list shows them in priority order with their cart size and whether they are active; the arrows reorder, and a definition can be deactivated (its button disappears, waves already created keep working) and reactivated.
Priority matters
The list order is the priority. Definitions are evaluated top to bottom, an order is offered only to the first definition that matches it, and within each definition orders are taken oldest first (see Order matters). Put the most urgent at the top: a Priority definition first, then Overnight, Expedited, then Standard, and a catch-all last; use the arrows on the list to reorder. Every definition is further limited to orders that are Downloaded and not on a wave, plus split orders with unwaved lines.
The editor
| Field | Notes |
|---|---|
| Display name | What the button says and what shows in the wave's Type column. There is no key to enter; Lodsted keeps a short internal id of its own. |
| Cart size | Orders (bins) per wave of this type, up to 250. Set it to the cart this type of order is picked into; it is never adjusted automatically, so a definition that gathers bulky items should get a smaller number than one for small items. |
| Active | Whether the button is shown. |
| Which orders | Builder (recommended) or Advanced SQL. |
Use Test before saving: it counts the orders the rule matches right now and lists a sample (order, store, date, status). A rule that takes longer than the time limit (10 seconds by default) is stopped with a message asking you to narrow it.
The rule builder
"Orders that match all / any of these conditions", then one row per condition: a field, an operator, a value. Values offer live examples from your own orders. The generated SQL is shown underneath if you are curious.
| Field | Example condition |
|---|---|
| Shipping method | contains Express |
| Store | is Main store |
| Order tag | has tag wholesale |
| Priority flag | is set |
| SKU on the order | includes GB-PRO-DZ |
| Number of lines | is 1 (single-line orders pick fastest) |
| Total pieces | at most 3 |
| Order age | older than 2 days |
| Ship-to state | is CA |
| Ship-to country | is not US |
| Order total | at least 200 |
A Start from a template picker fills the editor with common rules (light orders, single-SKU, by shipping speed) and asks for any parameters. The Wave rules page, linked from the definitions page, lists every field, its operators and examples.
Example set for a small shop
| # | Name | Rule | Cart |
|---|---|---|---|
| 1 | Rush | Priority flag is set, or shipping method contains Overnight | 48 |
| 2 | Bulky | SKU on the order includes a bag or box SKU (or a product group) | 24 |
| 3 | Singles | Number of lines is 1 and total pieces at most 2 | 150 |
| 4 | Standard | Shipping method contains Standard | 96 |
| 5 | Everything else | no conditions | 96 |
The cart sizes are the point: each definition is picked into a known cart, and a bulky-item definition sits above the general ones so those orders are taken on the small cart rather than overflowing a big one.
Advanced SQL
For rules the builder cannot express, write a SELECT that returns order ids. The rules: Postgres syntax, quote
every table and column (o."OrderId"), always alias tables, only the order tables (Orders, OrderLineItems,
Products, Cust_Ship, Customers, Inventory, Locations, ProductGroups, KitComponents), no data-changing statements. The
placeholder in the editor shows the shape. Switching back to the builder replaces hand-written SQL.
SELECT o."OrderId"
FROM "Orders" o
JOIN "OrderLineItems" oli ON oli."OrderId" = o."OrderId"
WHERE o."Status" = 'Downloaded'
AND o."Tags" ILIKE '%wholesale%'
AND UPPER(oli."SKU") = 'GB-PRO-DZ'
Why an order was not waved
- It is not Downloaded (held, canceled, already on a wave).
- At least one shippable line cannot be filled from available stock at active locations. The preview marks these.
- A definition higher in the list matched it, so this one never saw it.
- The rule does not match: check with Test.
- The wave limit you set filled up before reaching it (orders are taken oldest first).
- The definition timed out; narrow the rule.
Recalculate allocations
Admin only, next to Manage definitions. Rebuilds every bin's allocated count from the waves that are Active or Printed and reports any difference. Lodsted does this automatically whenever a wave completes; the button is for when counts look wrong after a manual intervention.