> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.chrt.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.chrt.com/_mcp/server.

# Dispatching

> How couriers dispatch orders in chrt — open the order, assign a driver, attach a rate sheet, and reassign if plans change.

Dispatching turns a staged order into a job a driver is actively running. From
the order page you pick the driver, pick the rate sheet that determines what
they get paid, and create the route — the driver then sees the job in their
app and can accept it. This page walks the assign-driver flow end to end and
covers the support pieces around it (driver list, rate sheet defaults,
reassignment).

## Before you start

* You need at least one **driver** on your org. See
  [Drivers](/couriers/drivers) for adding and managing drivers.
* To preselect a rate sheet during assignment, create a **provider-pay-driver**
  rate sheet first — see [Rate sheets](/couriers/rate-sheets). Assignment
  works without one; you can attach a sheet later from the order's financials.
* Driver assignment is per **task group**, not per order. On a multi-leg
  order you'll dispatch each ground leg separately. See
  [Orders](/docs/concepts/orders) for the task group model.

## 1. Open the order

Open [chrt.com/orders](https://chrt.com/orders) and pick the order you want to
dispatch. Orders waiting on a dispatch decision show a **Pending acceptance**
or **Staged** badge.

If the order has multiple ground task groups, each one shows its own
**Assign Driver** action — dispatch them one at a time.

## 2. Open the assign-driver dialog

Click **Assign Driver** on the task group. The dialog opens with:

* A **search box** to filter your driver roster by name.
* A list of drivers showing **availability**, **current workload**
  (in-flight orders), and a **rate sheet** selector per row.
* An **estimated revenue** rollup at the bottom once a rate sheet is picked.

> **Note**
>
> Only drivers marked **Available** appear at the top. Drivers marked
> **Unavailable** still show, ordered below — useful when you need to override
> availability for a high-priority job.

## 3. Pick the driver and a rate sheet

1. Click the driver row to select them. The row expands.
2. Pick a **rate sheet** from the dropdown. The list shows active
   **provider-pay-driver** rate sheets owned by your org. If you've set a
   default sheet on this driver's profile, it's preselected.
3. Confirm the **estimated revenue** at the bottom of the dialog reflects what
   you expect for this job.

> **Tip**
>
> If you assign the same driver to most jobs at the same rate, set their
> default sheet on their profile (see [Drivers](/couriers/drivers)). The
> dialog preselects it and you can dispatch in two clicks.

If you don't have a rate sheet ready, you can still assign — the task group
goes to the driver without a sheet, and you can attach one later from the
order's **Financials** tab.

## 4. Create the route

Click **Create Route**. chrt:

* Assigns the task group to the driver.
* Attaches the selected rate sheet to the task group, so line items start
  generating as the driver completes work.
* Pushes a notification to the driver's app so they can **accept** or
  **decline** the job.

The order's status moves from **Staged** to **Pending acceptance**. Once the
driver accepts and marks **Started driving** in the app, the order moves to
**In progress** and live tracking applies. See
[Tracking](/docs/concepts/tracking) for what happens next.

## 5. Skip assignment for now

If you're not ready to pick a driver, click **Skip** on the dialog. The order
stays staged and shows the **Assign Driver** action so you can come back to
it. Skipping is useful when:

* You want to share the job to your team's [Marketplace](/couriers/marketplace)
  for first-accept or bidding instead of assigning directly.
* You need to wait on a customer confirmation before tendering the work.

## Reassign a driver

If the assigned driver can't run the job (sick day, equipment issue, customer
re-route), reassign without losing any progress already made.

1. Open the order.
2. Click **Reassign Driver** on the task group.
3. Pick a new driver in the same dialog. Existing milestones the prior driver
   completed stay on the task group; the new driver picks up from where the
   route left off.

> **Warning**
>
> Reassigning notifies the original driver that they've been removed from the
> job. Their app drops the order from the **Active** list. Don't reassign as a
> test — it sends real driver-facing notifications.

## Variant: marketplace dispatch

For jobs you want multiple drivers (or partner couriers) to see, use
**Marketplace** instead of direct assignment.

#### Direct dispatch — when you've already picked the driver

Open the order, click **Assign Driver**, pick the driver, attach the rate
sheet, click **Create Route**. Documented above.

#### Marketplace — when you want recipients to pick it up

Create a **listing** from the task group with **First accept wins** or
**Negotiation** mode. Recipients see the listing in their bidding inbox
and can accept, counter, or bid. See
[Marketplace](/couriers/marketplace) for the full flow.

## How to know it worked

* The task group's badge moves from **Staged** to **Pending acceptance** with
  the driver's name attached.
* The order's timeline shows a **Driver assigned** event with a timestamp and
  the rate sheet that was attached.
* The driver's app shows the order in their **Inbox**. Once they accept, the
  badge flips to **Accepted** and the order moves toward **In progress**.

## If something looks different

* **The driver list is empty.** No drivers are set up yet — see
  [Drivers](/couriers/drivers).
* **The rate sheet dropdown is empty.** You don't have any active
  provider-pay-driver rate sheets. Create one at
  [chrt.com/rate-sheets/ground/create](https://chrt.com/rate-sheets/ground/create)
  (see [Rate sheets](/couriers/rate-sheets)).
* **The driver never gets the assignment in their app.** Confirm they've
  installed the driver app and signed in. If the app is installed and they
  still don't see it, check their availability — drivers marked unavailable
  can still be assigned but won't get a push notification.
* **Assignment fails with an error.** The most common cause is a task group
  that's already in a state where a driver can't be added (e.g., it's been
  cancelled). Refresh the order page and check the task group's badge.
* Contact [hi@chrt.com](mailto:hi@chrt.com) if dispatch is blocked.

## Related guides

* [Drivers](/couriers/drivers) — manage your driver roster, defaults, and
  profile.
* [Marketplace](/couriers/marketplace) — list a job for first-accept or
  negotiation instead of assigning directly.
* [Rate sheets](/couriers/rate-sheets) — the pricing templates that drive
  driver pay.
* [Creating Orders](/couriers/creating-orders) — build orders before you
  dispatch them.
* [Orders](/docs/concepts/orders) — the task group model dispatching attaches
  to.