Dispatch & scheduling

Plan loads on the Scheduling board

The Scheduling board is the planning half of dispatch. Everything unplanned sits in the Pool; two day columns hold what you have committed to. You drag loads onto a day, set the terminal and customer appointments, and the Dispatch Workbench executes what you planned.

10 minute read · Updated July 27, 2026

The board lives at Operations → Scheduling. Any workspace member with the admin, manager, or user role can plan on it. Scheduling settings — availability windows, receiver ownership, contacts, invites — is admin and manager only; a plain user who follows the Settings link is sent to the unauthorized page.

Pool, Today, Tomorrow

Three columns, left to right: the Pool, then two day columns. On a desktop screen all three are visible at once. The page itself never scrolls — each column scrolls inside its own frame.

The two day columns are a sliding two-day window. They start on Today and Tomorrow. The Next day arrow steps the whole window forward, and when it does, both titles change to weekday names — Wednesday, Thursday — so it is obvious you are no longer looking at today. Previous day is disabled once you are back at today; you cannot plan into the past. The Today button jumps the window home.

Which column a load lands in

One rule decides the day, and it is the same rule the Dispatch Workbench uses: the explicit slot you dragged, otherwise the terminal pickup appointment, otherwise the customer delivery appointment. A load whose effective day is one of the two visible days sits in that column. Everything else — no day at all, or a day outside the window — sits in the Pool.

Appt
An amber badge on a day-column card. The load is on that day because of an appointment, not because anyone dragged it. Its tooltip reads “Placed by appointment (effective day) — drag to override.”
A bare 07-29
On a Pool card, the month-day it is actually planned or appointed for, outside the current window. Step the days forward to see it in a column.
Assigned
A driver is already on this move. It stays plannable until dispatch starts it.
LFD / LMTFD / ETA
The deadline chip. Pickups race the pier's last free day, returns race the last empty free day. A pre-arrival pickup with no LFD yet falls back to the vessel ETA, tagged SSL, TERM, or AIS by source. Orange means today or already past.

Loads disappear from this board once dispatch is driving them. Anything already in progress or completed is filtered out — Scheduling plans, Dispatch executes.

Available versus All Loads

The Pool header carries a Load view dropdown with two options, and it opens on Available. Available is deliberately narrow: import pickups only, where LongShorty's last check of the terminal says the container is available and on the ground at a named terminal, with no active hold and no gate-out, gate-in, or return recorded yet. Those are the loads you can actually send a truck for. Within each group they sort by earliest last free day first.

All Loads drops the filter and shows everything unplanned — empty returns, cartage, and pickups the terminal has not confirmed. Two empty states tell you which view you are in: “No provider-confirmed pickup-ready loads are in the pool.” and “Pool is clear — everything is planned.”

If the readiness check fails, the Available count shows and the Pool shows “Availability couldn’t be loaded.” with “Switch to All Loads to keep planning.” That is not an empty pool. Switch to All Loads or you will plan a short day for no reason.

Dragging a load onto a day

  1. Grab the card body. The whole card is the drag handle. A drag arms after about six pixels of movement, so a plain click on the card does nothing — the buttons and links on the card stay clickable.
  2. Drag over the target column. The pointer decides the column, not the preview under your hand. The destination list parts to show exactly where the card will land, and the column tints blue.
  3. Drop. The day is written immediately and the card settles into place. If the write fails, the board snaps back to where it was and a red banner appears in the bottom-right corner with the reason and a Dismiss button.

Card order inside a day is not saved.

You can reorder cards within a column and the preview follows you, but only the day itself is persisted. A pure reorder writes nothing, and the order you left behind will not survive a refresh. Use the deadline chips to read urgency instead of trying to hand-rank the column.

Putting a load back

Drag a card from a day column back over the Pool. The Pool takes over with a dashed drop panel that reads Drop to add back to the pool and “The pool auto-sorts — it will file under its group.” That message is literal: the Pool has no manual order, so there is no insertion point to preview. Nothing moves until you actually drop. After the drop, the card flashes and the Pool scrolls it into view so you can see where it filed. If the load does not qualify for the Available view, the Pool switches itself to All Loads so the card does not vanish.

Unplanning does not defeat an appointment. Dropping a card in the Pool clears the explicit day, but if the load carries a terminal or customer appointment, the appointment day takes over again and the card returns to that column. To really get it out of the window, clear the appointment first in the Appt popover. The phone version is honest about this: the Move load menu hides Move to Pool entirely for a card that has either appointment.

On a phone

Below tablet width the board shows one lane at a time. A Planning lane dropdown at the top switches between Pool, Today, and Tomorrow, each with its count. Instead of dragging, every card carries a Move load row that expands into Move to Today, Move to Tomorrow, and Move to Pool buttons — the same write, one tap. The date stepper and the Add Cartage Job and Scheduling settings links move into a More actions menu.

Grouping the pool

The Group by control offers Terminal, Type, and Customer, and opens on Terminal. Grouping affects the Pool only; the day columns are always a flat list. Each group header shows its count, and under Terminal and Customer the header name links out to that terminal or company page.

Terminal
Keys on the pier the move actually touches — the pickup terminal for a load coming off a pier, and the return pier for a delivered or return-leg load. Never the customer. Groups are alphabetical with Cartage pushed to the bottom.
Type
Four buckets: Import pickup, Empty return, Cartage, and Other move. Alphabetical, with no special place for Cartage.
Customer
The consignee on the load. A load with no consignee groups under Unknown customer, and a bare cartage shell with no delivery order behind it groups under Cartage. Cartage sorts last.

Group by Terminal when you are building a run to one pier. Group by Customer when a receiver has asked you to bring several boxes the same day. Group by Type when you are clearing empties.

The appointment popover: terminal pickup vs customer delivery

The Appt button in the top-right corner of a card opens a single popover that handles both appointments on that load. It only appears on cards backed by a delivery order — a bare cartage shell has no appointments to set. The header reads Delivery · and the container number, and under it a chip names the receiver and who owns the schedule: Trucker sets or Warehouse sets, with a change link to settings.

Delivery date and window
The appointment with the receiver. The window is free text in the shape 08:00-12:00; en and em dashes are accepted. Setting it here emails the receiver's designated contacts.
Terminal pickup date
The gate appointment at the origin terminal, shown with a “Terminal pickup at …” line naming the pier. Conterminal records this date; it does not book the slot with the terminal for you.

The third block, Invited, is the exact list of people who will be emailed. Its label tells you what the email will be: Invited · FYI to when you own the schedule, and Invited · accept request to when the receiver does. Under the list, one line says either “Managed by you until receiver claims their workspace.” or “receiver has claimed their workspace — they manage this list too.”

The action bar narrates the save before you make it. With nothing touched it reads No changes yet; once you edit, it spells out what will happen, for example “confirms 07-29 · 08:00-12:00 · terminal 07-28 · notifies 2”. The primary button reads Confirm appt when you are setting a delivery date and Save when you are only changing the terminal date. Clear wipes the terminal appointment immediately — and the delivery appointment too, when you own the schedule — then closes the popover. There is no undo.

The popover is rendered inside the card, and the card is the drag handle. Only a few links inside it opt out of that. If you press-and-drag anywhere else in the popover — dragging to select text in the window field, for instance — you can arm the card's drag and re-slot the load while you are trying to type. Click into fields rather than dragging across them, and use select-all instead of a drag-select.

Suggest vs Confirm and who owns the schedule

Every receiver carries a stored setting for who owns delivery times. It changes what the popover lets you do, so it is worth setting honestly rather than leaving everything on the default.

Trucker sets (the default)
You confirm the time. The appointment is written straight to the load, and the receiver's contacts get a “Delivery appointment confirmed” email as an FYI, with a View in Conterminal link. Replies go to your workspace notification inbox.
Warehouse sets
You propose and they answer. The delivery buttons change to Suggest time — or Re-suggest if a suggestion is already open — and a separate Save terminal button appears for the terminal date alone. With nothing but the delivery fields touched, the action bar reads “Delivery times go through Suggest”.

Suggest time stays disabled until you have both a date and a window that parses. Sending it records a pending proposal and emails each designated contact a Delivery appointment suggested message whose button reads Respond — no login needed. That link is single-use and expires after fourteen days; if it cannot be issued, the email falls back to a Review & respond link into Conterminal. Re-suggesting supersedes the open proposal rather than stacking a second one.

The card then wears the state of the conversation. A blue Suggested 07-29 · 08:00-12:00 chip means the ball is with them. An orange Counter 07-30 · 13:00-15:00 — respond chip means they came back with a different time and the ball is with you.

You cannot accept a counter from this board. The counter chip is a notice, not a control — open the container record to accept it or send another suggestion.

Suggesting from the board does not check the availability windows you publish in settings, and it does not check the receiver's dock capacity. The first suggestion for a receiver quietly creates a permissive default rule — every day, around the clock, ninety-nine deliveries a slot — so that the suggestion records rather than being blocked. Treat the window you type as your proposal, not as a validated slot.

One error is worth recognizing: “This receiver owns its delivery schedule — send a suggestion instead.” means someone flipped that receiver to Warehouse sets after your board loaded. Reload and the popover will offer Suggest. For the receiver-facing side of this exchange, see Delivery appointments.

Adding a cartage job

Add Cartage Job in the header — or in More actions on a phone — opens a dialog for hourly or non-container drayage work that has no delivery order behind it. Only Customer Name is required. Everything else is optional: a linked Customer Organization for billing, Customer Reference, Container, Description, Scheduled Date, and Billing Rate. Set the scheduled date here and the job appears directly in that day column; leave it blank and it lands in the Pool for you to drag.

The button is visible to every dispatcher, but saving requires the workspace admin role. If you are a manager or a user, submitting sends you to the unauthorized page instead of showing an error in the dialog. Ask an admin to create the job.

A cartage job with no delivery order behind it has no Appt button, no deadline chip, and groups under Cartage in both the Terminal and Customer views. Submitting with the customer name blank returns “Customer name is required” at the top of the dialog.

Scheduling settings: availability windows, per-receiver owner, contacts

Settings in the board header opens Scheduling settings. Admins and managers only.

My delivery availability

Weekly windows, described on the page as “Weekly windows receivers can book into when you own the schedule. No windows published = receivers can’t self-book.” Pick a Day, a From and To time, and how many Deliveries that window can absorb, then Add window. Published windows render as chips like Mon 08:00–16:00 ×4 with a Remove button.

Windows are add-and-remove only. There is no edit and no enable toggle on this screen — a window that has been disabled elsewhere shows struck through. To change one, remove it and add the replacement.

Receivers

The list is built from your live delivery orders — every consignee organization currently receiving your loads. You cannot add a receiver here; one appears when a live delivery order points at it. With none, the section reads “No receivers with live delivery orders.”

  1. Set the owner. The two-button toggle is the same Trucker sets / Warehouse sets setting the board popover shows. The page explains it plainly: Trucker sets means you confirm delivery times and their contacts get an FYI; Warehouse sets means you suggest and they accept.
  2. Add scheduling contacts. Contact name is optional, Contact email is not. These are the exact addresses that receive confirmations and suggestions, and the same list the board popover shows under Invited. A malformed address is rejected with “Enter a valid email address”.
  3. Check the claim badge. A green Claimed chip with an email address means that receiver has taken over their own workspace and manages this contact list themselves.

If the page shows “The scheduling settings tables are not in the database yet (migration 20260971 pending). Everything below renders, but saves will fail until it is applied.” then this deployment’s database is behind. The controls all draw normally and every save will fail. Contact support rather than retrying.

Inviting a receiver to self-schedule

Each receiver row has one email field and two buttons that do very different things. The page sums them up in a line worth reading before you click: “Pitch = signup page. Claim = provisions their account and hands them the keys.”

Send scheduling pitch
A marketing-style invitation from Conterminal Scheduling, subject “<your company> invites you to schedule deliveries on Conterminal”, whose button is “Set up scheduling — free”. It lands on a public page with a request form that emails your workspace back. No account is created. The button changes to “Pitch sent”.
Send login claim invite
Creates a real account. It provisions a user for that address, gives it the admin role on the receiver organization with billing access, marks the organization claimed, and emails a one-click “Claim workspace” link that signs them straight in. The button changes to “Claim invite sent”, and reads “Invite teammate” once the organization is already claimed.

The claim invite is not a preview and there is no confirmation step. It grants an administrator seat at the receiving company to whatever address is in that field. Send it only to a named person at that company who has agreed to take it, and check the address before you click.

After a claim, stewardship shifts: the receiver manages their own contacts and can respond to suggestions from their own workspace, and the board's popover stops claiming the list is yours.

Troubleshooting

“Window is HH:MM-HH:MM, end after start”

The delivery window in the card popover does not parse. It must be two clock times with a dash and the end must be later than the start — 08:00-12:00, 8:00-12:00, and 08:00 – 12:00 all work; 8-12, 0800-1200, and 12:00-08:00 do not. Until it parses, Suggest time stays disabled. The equivalent message when you add an availability window in settings is “Window must be HH:MM to HH:MM, end after start”, and the server rejects a bad suggestion with “Time window must be HH:MM-HH:MM” or “Window end must be after start”.

“No one at <receiver> is invited yet — add contacts.”

That receiver has no scheduling contacts, so confirming or suggesting saves the appointment and emails nobody. The action bar will not say “notifies …” either. Add at least one address under Scheduling contacts in Scheduling settings, then reopen the popover — the board reads the contact list when the page loads.

The card starts moving while you are editing the appointment

The popover sits inside the card, and the card carries the drag listeners. A press-and-drag on anything in the popover other than the handful of links that opt out — most often drag-selecting text in the delivery window field — arms a card drag and can drop the load on a different day. Click into the field and use select-all rather than dragging across the text, and check the day column afterwards if you think it happened.

A card you dragged to the Pool jumps back to the day

The load has a terminal or customer appointment. Unplanning clears only the explicit day; the appointment day then decides placement again. Clear the appointment in the Appt popover first, then move it.

“Availability couldn’t be loaded.” with a “—” count

The pickup-readiness check did not return, so the Available view has nothing to filter with and shows an empty pool. Switch the Load view dropdown to All Loads and keep planning; the Available count comes back on the next load of the page.

“This receiver owns its delivery schedule — send a suggestion instead.”

You tried to confirm a delivery time for a receiver set to Warehouse sets. The board was loaded before that setting changed. Reload the board and the popover will offer Suggest time instead of Confirm appt.

“No receiving party is linked to this delivery order”

Suggesting needs a receiver organization on the delivery order, and this one has none. Fix the consignee link on the container record; there is nothing to correct on the board.

“Shell not found for this workspace” / “Shell is cancelled” / “Shell is already completed”

The job behind the card is gone, cancelled, or finished — usually because someone else acted on it while your board sat open. The card rolls back to where it was. Reload the board.

A Pool card will not move at all

A few Pool rows have no job shell behind them yet. They can be looked at but not planned, and both dragging and the phone Move load menu ignore them. Confirm the route on the container record first, then plan it.

A load you planned is not on the board any more

The Scheduling board carries only plannable work. Once dispatch starts the move, or once it is completed, it drops off here and lives on the Dispatch Workbench instead. That is expected, not a lost load.

“Email is not configured”

The deployment has no outbound email key, so pitch and claim invites cannot be sent. Appointment writes still save. Contact support — nothing in the settings screen will fix this.