Shipping & Pickup
The Shipping module owns the entire inbound side of the warehouse pipeline — from creating a shipment as soon as you have a bill of lading, through customs clearance, NOA upload, pickup scheduling, and the hand-off to Receiving.
Start with the Quickstart for a 10-minute walkthrough that covers shipping in context. This page goes deeper.
Status lifecycle
Every shipment moves through this sequence. Statuses are deterministic — EMS won't let you skip stages, so the audit trail stays clean.
Documents Processing (shipment just created) → Awaiting Customs (broker notified) → In Transit (flight departed) → Arrived (landed at airport) → Customs Cleared (released by CBSA) → Ready for Pickup (NOA uploaded; visible on pickup calendar) → Picked Up (driver collected at airport or depot) → Ready for Receiving (arrived at warehouse, awaiting confirmation) → Received (warehouse confirmed; box-scan can begin) → Inventoried (all boxes scanned to skids; available to Production)
Each transition is logged in the shipment's history with operator and timestamp. The Reports module exposes this as a chain-of-custody report.
Creating a shipment
From Shipments → + New Shipment. The wizard is six steps:
- Source — supplier, AWB number, flight date, estimated arrival.
- Consignee — pick from the consignee list (or create one inline).
- Documents — drag-drop PDFs / Excel files (commercial invoice, packing list).
- Items — line items by product + quantity. Auto-extracted if a packing list was uploaded; otherwise manual.
- Pre-schedule — optional: pre-book the pickup date if known.
- Review & create — confirms; shipment created in Documents Processing status.
Wizard PDF / Excel upload
EMS parses common packing-list templates and pre-populates the Items grid. Supported:
- PDF packing lists from major air freight carriers
- Excel (.xlsx) with one row per box-line — columns are auto-detected from headers
- CSV with the same shape
If the parser can't fully map a template, you'll see a column-mapping screen. Confirm once and EMS remembers the mapping for future shipments from the same supplier.
If a single AWB carries two distinct production batches (different flavour mix or stamp regions), EMS detects the duplicate box-number ranges and prompts you to confirm which batch a scan belongs to during Receiving. The two batches stay tagged through the rest of the pipeline.
Manual items entry
If you don't have a parseable packing list:
- Click + Add line.
- Pick the product (or "+ custom" to create a new SKU on the fly).
- Enter the quantity and any per-line notes.
The total line count is shown at the bottom of the wizard; quantities feed into the production-availability calculation later.
Uploading the Notice of Arrival (NOA)
The NOA is the document from your customs broker indicating the shipment has been released. It's the gate between Customs Cleared and Ready for Pickup.
- Open the shipment, click Upload NOA.
- Drag the NOA PDF (or other file) into the dropzone — stored in IndexedDB-backed BlobStore, not localStorage, so it doesn't bloat your browser quota.
- Enter the Skid count from the NOA. This may differ from the packing list (e.g. NOA says 17 skids, packing list says 15) — EMS uses the NOA value for pickup planning.
- Set the Arrival date (defaults to today).
- The Schedule Pickup Date auto-fills as Arrival + 1 day. Override it manually if you have a specific pickup window booked. Tick Schedule later if you don't know yet.
- Click Save NOA. The shipment moves to Ready for Pickup and appears on the pickup calendar.
If the NOA skid count exceeds the truck capacity (currently 12 skids), the shipment must be picked up over multiple trips. EMS handles this automatically — it tracks how many skids are still remaining across the trip history.
The pickup schedule calendar
The Shipping module's Ready-for-Pickup tab shows a month/week calendar of every shipment with a scheduled pickup. You can:
- Click a day to filter the list to shipments scheduled for that day
- Drag a shipment between days to reschedule
- See per-day skid totals and remaining truck capacity
- Switch between Month and Week views
The calendar tiles themselves are read-only after v2.5 — clicking a tile filters the list rather than navigating away.
Truck capacity (12 skids per trip)
Each pickup trip is capped at 12 skids. The dispatcher can select multiple shipments for one trip; if the cumulative skid count exceeds 12, you'll see a red over-capacity warning at the bottom of the schedule:
If you select 3 shipments totalling 14 skids, EMS will warn you that you are 2 skids over the truck capacity of 12.
You can either reduce the selection or proceed (with a confirmation) and EMS will leave the overflow skids for a follow-up trip.
Damage at pickup
If the driver finds visible damage at airport pickup, they can report it before the shipment ever reaches the warehouse:
- From the ready-for-pickup card, click Report damage.
- Three independent actions are available (since v2.4):
- Tag Box — flag a specific box # as damaged with an optional reason (e.g. "3, crushed corner"). No photo required.
- Photo — opens the camera (mobile) or file picker, captures images linked to the shipment.
- Upload — upload existing photos from the device.
- Tagged boxes appear in a confirmable list above the photo gallery, with [Untag] and Confirm-all buttons.
- Click Save report. The shipment carries a damage flag through the rest of the pipeline; receiving will see a yellow banner asking the receiver to verify the flagged boxes first.
Damage photos are stored in IndexedDB on the device that captured them, with metadata syncing to localStorage. For multi-device deployments and Pro/Enterprise tiers, EMS uploads them to backend blob storage automatically.
Filtering & search
The Shipments list supports:
- Search by AWB — global search at the top, also works for box numbers and PO numbers
- Status filter — multi-select; defaults to "active" (everything except Shipped)
- Pending Actions Required — a separate tab that shows shipments with missing NOA, missing consignee, or other actionable gaps
- Sort — by AWB, supplier, status, ETA, or skid count
The shipment detail page
Click any shipment in the list to open its detail view, with these tabs:
- Overview — milestone phase bar, KPIs (cartons, units, skids), and the next recommended action.
- Items — packing list line items, with editable quantities until receiving begins.
- Documents — uploaded PDFs (commercial invoice, packing list, NOA) — preview inline with the bundled PDF viewer.
- Boxes — appears once receiving has started; lists every box with its scanned status, current location, and per-box history.
- Skids — once skids are built, shows the per-skid contents and zone assignment.
- Production runs — POs that source from this shipment.
- History — full audit trail of state transitions and operator actions.
- Pickup — pickup history with skid count per trip.
Best practices
- Create shipments early. As soon as the supplier ships, create the EMS record — even with a placeholder estimated arrival. Status moves cleanly forward as info comes in.
- Always upload the NOA before scheduling pickup. It's the single source of truth for skid count and arrival, and downstream modules use the NOA's skid count rather than the packing list aggregate.
- Schedule pickups in the Logistics calendar, not the Shipping pickup tab — the Logistics calendar shows inbound and outbound side-by-side so you can balance truck use across both directions.
- Tag damage at pickup, photograph at receiving. Driver tags = quick triage. Receiving photos = forensic detail. Both feed the same chain-of-custody report.
- Don't manually edit shipment items after receiving begins — the box scans become the source of truth. Edits there propagate cleanly; edits to the original packing list don't.
