> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.chrt.com/prod/forwarders/multi-leg-orders/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.chrt.com/_mcp/server. # Multi-Leg Orders > How forwarders compose multi-segment orders in chrt — ground, flight, and OBC segments, assignment, and flight tasks. A forwarder's shipment usually crosses more than one leg and more than one courier. chrt models that as a list of **segments** on a single order, where each segment is a [task group](/docs/concepts/orders) that can be assigned to its own courier and tracked independently. This page walks the **Segments** and **Flights** tabs of the draft builder end to end. ## Before you start * You need a connected shipper (or an off-platform shipper you've recorded) so the draft has a customer on it. * For ground legs, you need connected couriers in the markets where pickups and deliveries happen. * For flight legs, no separate carrier connection is required — chrt tracks flights through its FlightAware integration. WebCargo bookings are made in-line from the Flights tab. > **Note** > > Segments are also called task groups. Couriers see a task group as their > job; the shipper and you see the full order. See > [Orders](/docs/concepts/orders) for how the two views relate. ## 1. Start a draft and complete Order setup Open [chrt.com/orders/drafts/new](https://chrt.com/orders/drafts/new). The **Segments** tab stays locked until **Order setup** is complete — you'll see an alert reading *"Order required — Please complete Order Setup first to create a draft order."* until the shipper and basics are saved. 1. On **Order setup**, pick the shipper this order is for. 2. Add an **External reference ID** if the customer gave you a PO or order ID. 3. Add **cargo** on the Cargo tab. Cargo is required before you can attach it to stops on each segment. ## 2. Add segments Open the **Segments** tab. The header reads **"Add Segments"** with the subtitle *"Segments — Add and arrange the segments for this shipment."* From the empty state or the **+ Add Segment** dropdown in the top-right, pick one of: | Option | Use for | | ------------------- | ------------------------------------------------------------------------------------------------------------------------ | | **Ground Segment** | A single ground leg run by one courier. The most common shape. | | **Flight Segment** | An air leg with cargo on a commercial flight. Pair with ground segments before and after for a tender-and-recover chain. | | **Onboard courier** | A hand-carry shipment where one person accompanies the cargo door-to-door, including one or more flight legs. | Add segments in the physical order they happen — pickup ground, then flight, then delivery ground for a typical ground → flight → ground chain. > **Tip** > > Drag unsaved segments to reorder them before saving. Once a segment is > saved (it has a task group ID), you can't reorder it, but you can still > delete and re-add it. ## 3. Assign a courier to each ground segment Open each ground segment and pick the courier from your connected providers. You can use a different courier per leg — that's the whole point of the multi-segment model. * Pickup leg → courier in the origin market. * Delivery leg → courier in the destination market. * Cross-dock or transfer leg → courier handling the middle hop, if any. Flight segments don't have a courier selector — chrt handles flight tracking through integrations. Onboard-courier segments have one selector for the person accompanying the cargo. ## 4. Configure flight segments on the Flights tab The **Flights** tab only appears when the order has at least one flight or onboard-courier segment. The header reads **"Flight Details"** with the subtitle *"Configure flight information for each air segment (flight segments and onboard courier legs)."* For each flight segment: 1. Pick **origin** and **destination** airports. 2. Pick a search window in the **Show flights:** dropdown — **Next 6 hr**, **Next 12 hr**, **Next 24 hr**, or **Select Date** for a specific date. 3. Optionally toggle **Include connections** to surface connecting itineraries. 4. Click **Search Flights**. 5. Pick a flight from the results. 6. Click **Save Flight \{n}**. chrt writes the flight info onto the segment and creates 7 milestone tasks for that leg (e.g. airline accepted cargo, tendered, departed, arrived, recovered). The card status badge tells you where each flight segment is: * **Pending** — no tasks created yet. * **Action Required: Select Flight** — tasks exist but no flight has been attached. * **Configured** — flight info and tasks are both in place. Use **Edit Flight Details** on a configured card to swap the flight before the order goes live. ## 5. Configure an onboard-courier segment An onboard-courier (OBC) segment is a single task group that holds **multiple flight legs** plus wrapper milestones for pickup, airport handling, customs, and delivery. Use OBC for the highest-value, time-critical shipments where a person accompanies the cargo door-to-door. On the Flights tab, find the OBC card titled **"Onboard courier — flight legs"** with the subtitle *"Add each flight the courier will board. Saving creates \{N} milestone tasks (\{L} legs)."* 1. Click **Add flight leg**. 2. For each leg, search the origin → destination → time window and pick the flight (same flow as a flight segment). 3. Add additional legs if the courier is taking multiple flights. 4. Click **Save flights & create tasks** to commit. chrt writes per-leg **board / depart / arrive / deboard** milestones plus the surrounding pickup, handling, customs, and delivery tasks. > **Note** > > OBC segments don't generate ground tasks until you save the flights — > that's why the segment card shows *"Stops for this segment are created > when you save flights."* in the Segments tab. ## 6. Book cargo space with WebCargo (optional) For commercial flight legs, you can request rates and book cargo space directly from the Flights tab via the embedded **WebCargo by Freightos** integration. See [Flights and WebCargo](/forwarders/flights#book-with-webcargo) for the booking flow. ## 7. Add stops on each segment Open the **Stops** tab. Each segment has its own default stop set: * **Ground segments** — pickup + deliver. * **Flight segments** — tender (drop at the airline) + recover (pick up from the airline). Created automatically when you save the flight. * **OBC segments** — pickup, board, deboard, customs, and deliver per leg. Created automatically when you save the OBC flights. For each stop: 1. Set the **address** (autocomplete or use a saved contact's map pin). 2. Add a **point of contact** with phone and email so drivers can reach someone on arrival. 3. Select **which cargo** applies to this stop. Forgetting this is the most common multi-leg mistake — the preview validation catches it, but it's faster to do it as you go. 4. Set a **time window** for the appointment. 5. Add **special instructions** and required **task artifacts** (photo, signature, barcode scan). > **Warning** > > On a multi-leg order, every cargo item needs both a pickup stop and a > delivery stop on the correct segment. A tender stop counts as the "delivery" > for the pickup leg; a recover stop counts as the "pickup" for the delivery > leg. The preview validator confirms each cargo line has a complete path. ## 8. Preview and submit Open the **Preview** tab. 1. Click **Validate** to run all checks (missing addresses, unassigned cargo, missing stops on a segment, missing flight info). 2. Fix anything flagged. 3. Click **Submit** to stage the order. chrt assigns each ground task group to its courier; couriers see only their own task group. You see the full order at `/orders/`. ## How to know it worked * The URL changes from `/orders/drafts/` to `/orders/`. * Each ground segment has a **Pending acceptance** badge until its courier accepts. * Each flight segment shows its flight info with a live tracker once the order is in motion. * The order timeline lists order-staged plus the staged event for each task group. ## If something looks different * **Flights tab is missing.** Add at least one flight segment or onboard-courier segment first — the tab only renders when one exists. * **No courier selector on a flight segment.** That's expected — flight segments are auto-tracked, not courier-assigned. * **You can't reorder a saved segment.** Saved segments lock to preserve task group integrity. Delete and re-add if you need to change the order. * **Validation fails with no obvious error.** Open each stop and confirm cargo selection — that's the most common silent failure. * Contact [hi@chrt.com](mailto:hi@chrt.com) if something looks wrong. ## Related guides * [Flights and WebCargo](/forwarders/flights) — search, book, and track commercial cargo flights. * [Tracking shipments](/shippers/tracking) — read the map, timeline, and ETA on an in-motion order. * [Trackers for international cargo](/forwarders/trackers) — attach hardware trackers across the full chain. * [Billing for forwarders](/forwarders/billing) — rate sheet per leg, line items per task group. * [Orders](/docs/concepts/orders) — the task group / task / cargo data model. > Build ground, flight, and onboard-courier shipments segment by segment in the draft builder.