Run the day from the Dispatch Workbench
The Dispatch Workbench is one screen: a grid of cards you regroup three ways. Every action — assign, confirm, record equipment, flag an exception, close the shift — happens on a card or in the top bar. There is no separate board, ledger, or detail drawer.
9 minute read · Updated July 27, 2026
The workbench lives at Operations / Dispatch. It is a carrier-workspace screen and requires an admin, manager, or user role on an active carrier organization. If you land on the operations home page instead, your account has no active carrier organization selected. See why a page shows Access Denied.
The card grid and what a card is
A card is one piece of dispatchable work on one container: a pickup off a pier, a cartage move, or an empty return. A single container can appear as two cards — its pickup at the pier and, once it has gated out or been delivered, its empty return in the Delivered column. That is deliberate: the empty return is its own assignment.
Each card shows the container number, a state chip, the consignee, and origin → destination. If a Last Free Day is known you also get an LFD Overdue, LFD Today, or LFD ≤2d chip. Cards sort inside a column by LFD urgency first, then by container number; in the Driver arrangement they sort by the time you assigned them.
The state chips
- Needs Route
- The route came from a sync and no dispatcher has vouched for it. Confirm the route before assigning.
- Ready
- Route is settled, no driver on it yet.
- Committed
- A driver is assigned and the move has not started.
- In Progress
- The move is running. Shown with a dot in the chip. The workbench has no button that starts or completes a move — this state comes from elsewhere in the system.
- Completed
- Finished. Completed cards are filtered out of the grid entirely; they still print on the ledger.
- Exception
- Flagged. Like Completed, an exception card drops out of the grid — see Flagging exceptions below.
The count next to each column heading is the actionable count, not the row count. The top bar carries the same idea across the whole board: N actionable and N/N out, where "out" counts distinct drivers who have a move in progress.
Click the chevron at the top right of a card — or focus the card and press Enter — to expand it. Expanding reveals tractor and chassis fields, the chassis plan, the billing notes box, a link to the container record, and the Slot for today, Flag exception, Unassign, and Unpair actions.
Filtering
The text box filters as you type. Filters opens a popover with two radio groups: Deadline focus (All, LFD overdue, LFD ≤2d, Last MT FD overdue, Last MT FD ≤2d) and Shell type (All, Import (piers), Delivered, Cartage / Other). A badge on the button counts how many are off default, and Clear resets everything. When nothing survives you get No cards match the current filters.
The search box is narrower than its placeholder suggests.
The placeholder reads Container, booking, reference..., but the filter only matches the container number, consignee, origin label, destination label, and route summary. Booking numbers and customer references are not searched here. Use the container dashboard when you need to search by booking or reference.
Today vs Tomorrow
Two tabs at the top left scope the whole grid: Today and Tomorrow, each with a live count. Dispatch executes days that were already planned; the day-by-day planning itself lives on the Scheduling board.
A card lands on a day by this rule, in order: its explicitly slotted date, else its terminal pickup appointment date, else its customer delivery appointment date. So a load with an appointment shows up on that day's board with nobody touching it, and a hand-slotted date always wins over an appointment-derived one.
One extra rule keeps live work from hiding: a card with no day at all but a driver already on it rides with Today. To move a card onto today by hand, expand it and use Slot for today; the same button reads Remove from today once it is slotted, which clears the date and sends the card back to the planning pool.
"Tomorrow" is the next calendar day, not the next working day. On a Friday, the Tomorrow tab is Saturday — Monday's loads are not on it. Plan the weekend and the following week on the Scheduling board.
Arranging by Location / Consignee / Driver
The segmented control in the toolbar regroups the same cards three ways. Your choice is remembered per browser and written to the URL as ?view=location, ?view=consignee, or ?view=driver, so you can bookmark or share a specific arrangement.
- Location
- Columns are Delivered, then the pier columns (APM, Maher, PNCT, Port Liberty, GCT Bayonne, GCT NY, Red Hook), then Cartage / Other. Only unassigned cards appear. Delivered always renders even when empty because it hosts the empty-call input.
- Consignee
- One column per consignee name, alphabetical. Also unassigned cards only. Cards with no consignee group under Unknown consignee.
- Driver
- This is the ledger. An Unassigned column is pinned on the left, then one column per active driver in alphabetical order regardless of load, so columns never jump around on you.
Because Location and Consignee show only unassigned cards, a card disappears from those views the moment you assign it. It has not gone anywhere — switch to Driver to see it on the driver's column.
On a phone the columns collapse to one at a time with a Work queue picker above the cards. It opens on the first column that has actionable work.
Assigning and reassigning drivers
- Find the card and click + Assign. An inline driver picker opens inside the card — not a popover — with a Search drivers… box. Type to narrow it; if nothing matches you get No drivers match. Clicking outside the picker or pressing Escape closes it without assigning.
- Pick the driver. Selecting commits immediately — there is no second confirm. The card flips to Committed, stamps the assignment time, and the driver's name replaces the CTA.
- To change the driver, drag the card. Switch to the Driver arrangement on a desktop-width screen and drag the card sideways onto another driver's column. Drag the card to Unassigned to take the driver off it.
- Or unassign from the card. Expand the card and click Unassign. The card returns to Ready and reappears in the Location and Consignee views.
Drag-to-reassign only works in one place.
Dragging is enabled only in the Driver arrangement and only at desktop width (768 pixels and up). In Location or Consignee view, or on a phone, the only way to move a load to a different driver is to expand the card, click Unassign, and assign again. The card itself never offers a "change driver" control once a driver is on it.
The picker lists drivers whose status is active and who have a name on record. Two dispatchers cannot double-drive the same move: the server rejects an assignment onto a leg that is already in progress, and an unassign that arrives after the driver started gets No live assignment to remove (it may already be in progress).
Confirming routes
A card in Needs Route came from an automated sync and nobody has vouched for the stops yet. Instead of the + Assign link it shows a blue Confirm Route button. Click it and the card moves to Ready, and the route's authority changes from sync-seeded to dispatcher-confirmed — your name is now on it.
Confirming a route does not assign anyone. Assign the driver as a second step. If the card already has a driver and is still in Needs Route, the Confirm Route button sits to the right of the driver name instead.
Assigning a driver to a sync-seeded route also promotes it to dispatcher-confirmed, so you never end up with a driver on a route nobody owns.
Recording equipment actuals and notes
Expand a card and you get two free-text equipment fields — Tractor (placeholder e.g., T-114) and Chassis (placeholder e.g., SAF 22-1187). Both save when you leave the field, not as you type. They are freeform on purpose: type whatever the driver actually called in.
Under them, Chassis plan shows the planned pickup and return for the chassis, with the provider on the right. Missing values read Pickup TBD and Return TBD, and an unknown return is printed in orange because that is the one a driver will call you about.
There are two separate note fields, and they behave differently:
- The inline note
- The one-line + Add note row always visible at the bottom of a collapsed card. Enter saves, Escape cancels. It rides with the assignment and is the Note column on the printed ledger — this is where 'call the guard shack first' goes.
- Notes (flow to billing)
- The larger box inside the expanded card. It belongs to the load, not the assignment, saves on blur, and is what billing reads later.
Tractor, chassis, and the inline note need a driver first.
All three are stored on the driver assignment, so writing them on a card that has no driver fails. You will see the red toast Assign a driver first — these details live on the assignment and the field will snap back to what it was. The Notes (flow to billing) box has no such restriction. Assign the driver first, then record equipment.
Flagging exceptions
Expand a card and click Flag exception. A popover opens against the button, headed Flag exception with the container number underneath, and offers a fixed checklist:
- Wait time — reveals a minutes box. The number must be greater than zero.
- Dry run
- Chassis swap
- Returned to yard instead of pier
- Appointment missed
- Other (requires note) — reveals a text box with the placeholder Required when 'Other' is selected.
The Flag exception confirm button stays disabled until at least one box is ticked and any conditional field is valid. Cancel or Escape closes without recording. Ticking boxes on a card that already carries flags starts from what was recorded before, so you can add to an existing exception rather than retype it.
A flagged card leaves the board and cannot be un-flagged here.
The grid renders only Ready, Needs Route, Committed, and In Progress cards. The moment you confirm an exception the card is in the Exception state, so it disappears from the columns you are looking at — and the workbench has no control that clears the flag. Get the detail right before you confirm, and use Open container record on the expanded card to follow the container afterwards.
Recording a field empty call
When a driver calls in an empty from a customer's yard, switch to the Location arrangement and click + Empty in the Delivered column header. An input opens with the placeholder Empty container, then Enter. Type the number and press Enter, or click Lookup.
- If the container is recognized you get Add [container] to Delivered → return to [pier] and an Add to Delivered button. When another load at the same consignee is heading to the same pier, a Pair with [container] button appears next to it so you can hand the driver both halves of a double move.
- If it is not recognized you get Container not found: [container] with Record anyway and Reject. Record anyway creates a card labelled Pending reconciliation carrying a Pending Recon chip and the note Container unknown at call time — billing must reconcile.
Empty-call cards are not saved yet.
Cards created by Add to Delivered, Pair with, and Record anyway exist only in your browser tab. They are not written to the database, so a refresh, a navigation, or a second tab will not have them. Treat the feature as a scratch pad until it is wired to storage — and keep your own record of a call you took this way.
Reject does not log the call.
The Reject and Reject (log call) buttons currently discard the entry and record nothing anywhere. If you need a rejected call on the record, write it in the notes of the related load instead.
The lookup also only searches the cards currently on your board. A container that is not on today's board — because it is on a different day, or already filtered out — comes back as Container not found even though Conterminal knows it. Clear your filters and check the day scope before you decide the box is not yours.
Closing and reopening a shift
The pill in the top bar reads Shift Open or Shift Closed. Click Close Shift and a dialog asks Close shift? and explains: completed moves drop out of the ledger's default view, nothing is deleted, the board resets for tomorrow's planning, and you can reopen at any time. Confirming shows Closing… while it saves; the dialog stays open and shows the error if it fails. Once closed, the button becomes Reopen Shift.
A shift record is keyed to your workspace, your user, and today's business date in US Eastern time. Opening the workbench creates or fetches that record automatically — you never have to "start" a shift.
Closing a shift is a marker, not a filter.
Closing does not change what the grid shows. Completed cards were already excluded from the columns whether the shift was open or not, and every actionable card stays exactly where it was. Treat Close Shift as a timestamp saying you handed off, not as an action that clears your board.
Printing the ledger
Press Shift + P to print the full ledger. There is no print button and no per-driver print — the full sheet is the only print scope. Your browser's own print dialog opens; the screen returns to normal when you close it.
You get one page per driver, drivers who have work first and then the rest alphabetically, so an idle driver still gets a blank sheet to write on. Each page carries the driver's name, the shift date, and Dispatcher: [your name], then a table with #, Time, Container, From, To, Type, Note, and Driver sign-off. A driver with nothing on them prints No moves assigned yet.
Move types are abbreviated: PU pickup, DEL delivery, MT RET empty return, ST street turn, DM double move. The Note column is the card's inline note, not the billing notes. The footer has a signature and date line and the reminder Hand-back this sheet at end of shift for billing reconciliation.
The ledger prints every assigned card in the workspace, ignoring the Today/Tomorrow tabs and every filter you have set. Unassigned cards are never printed. If a move is missing from a driver's sheet, the driver was never assigned to it.
Keyboard shortcuts
- /
- Focus the text filter.
- g
- Cycle the arrangement: Location → Consignee → Driver → Location.
- Shift + P
- Print the full ledger.
- Enter
- Expand or collapse the card that has keyboard focus. Tab moves focus between cards.
- Escape
- Close the exception popover, the driver picker, or cancel an inline note edit.
Shortcuts are suppressed while your cursor is in any text box, number box, textarea, or dropdown, so typing a container number with a g in it will not flip your view.
Troubleshooting
My change flipped back and a red box appeared
The workbench applies your change on screen first, then sends it. If the server refuses, the change is rolled back and the reason appears in a red box at the bottom right of the screen with a Dismiss link. The card in front of you is the truth; read the message before you retry, because most of these mean somebody else moved first.
“This shell has no dispatchable leg yet”
You tried to assign a driver to a Delivered card that has no modeled return leg — it is a stand-in Conterminal shows so the delivered container does not vanish from the board. Nothing can be assigned to it until the return leg exists. Open the container record from the expanded card and work the return from there.
“Route was already confirmed or the shell changed state”
Another dispatcher confirmed the same route, or the load moved on while your tab sat idle. Reload the page; the card will already be in Ready or further along.
“No live assignment to change — assign a driver first”
A reassignment landed on a load whose assignment was cancelled or already started. Reload, then assign fresh.
“An active move is already in progress on this leg”
A driver already started this move. It cannot be reassigned; it has to finish or be handled on the container record.
“Assign a driver first — these details live on the assignment”
Tractor, chassis, and the inline note are stored on the driver assignment, so they need a driver. Use the Notes (flow to billing) box on the expanded card if you need to record something before a driver is on the load.
Unpair does not stick
The Unpair button clears the pairing on screen only — pairing is not persisted yet, and the server never sends paired cards down. In practice the Paired chip and Unpair button only appear for a pair you created in this tab with the empty-call Pair with button, and both are gone after a refresh.
A colleague's Close Shift did not close mine
Shift records are per dispatcher. Your pill reflects your own shift for today only. Two dispatchers on the same workspace close and reopen independently, and neither one changes what the other sees on the board.
A card I assigned vanished from the column
Location and Consignee show unassigned cards only. Switch to the Driver arrangement — the card is on that driver's column. Cards also leave the grid when they reach Completed or Exception.
The board is empty or a load is missing
Check the Today/Tomorrow tabs first, then Clear the filters. A load whose empty has already been returned to the pier, or that has no container number on its record, is deliberately not shown. The board also reads at most 1,000 loads at a time.
The board took a long time and then errored
The dispatch read runs against an eight-second database timeout and retries itself once. If it still fails, reload before escalating — this is usually a passing load spike.