---
title: "Time tracking and dispatch"
description: "Log time on tickets and project tasks so it reaches client invoices, time work with the timer, and book technicians on the dispatch calendar."
url: "https://support.outpostplatform.com/msp/time-and-dispatch/"
product: "depot"
type: "how-to"
status: "draft"
ai_summary: "MSP plan. Log time on a ticket's Time tab with an optional internal or public note. Charge type defaults to the agreement's, else Labor. Start timer drives the technician's one timer, stopped from the header. Schedule books a ticket on the dispatch calendar; Projects > My day lists today's appointments. Permissions ticket:write, project:time, project:calendar."
availability:
  plans: ["msp"]
  permission: "project:time"
  preview: false
source: "https://gitlab.com/outpostplatform/docs/-/edit/main/src/content/docs/msp/time-and-dispatch.md"
license: "CC BY 4.0"
---

# Time tracking and dispatch

On the MSP plan, the time your team logs is what client invoices are built
from. Time can be logged on a ticket or on a project task, and both go through
the same billing rules. This page shows how to log time so it bills
correctly, how to time work on a ticket, how to see your own work and your
day across clients, and how to book technicians on the dispatch calendar.

## Before you begin

- You are on the MSP plan.
- Logging time on a ticket needs `ticket:write`. Logging time on a project
  task needs `project:time`. Managing appointments and time off, scheduling a
  ticket, and seeing **My day** need `project:calendar`.
- For time to bill, the client needs an active agreement. See
  [Client agreements](/msp/agreements/).

## Log time on a ticket

The ticket's **Time** tab logs the time and, if you write one, a note about
the work, in one step.

1. Open the ticket in the client's workspace and select the **Time** tab.
2. Enter **Minutes**. To time the work as you do it instead, use the timer.
   See [Time work with the timer](#time-work-with-the-timer).
3. Check **Charge type**. It is preselected with the **Default charge type**
   of the client's active agreement. When the agreement names none, or the
   client has no active agreement, it is **Labor**.
4. **Billable** is selected by default. Clear it when the time is not charged
   to the client.
5. Optionally, write a note in the box below. It opens on **Internal note**,
   which only technicians see. Select **Public reply** to send the note to the
   requester instead.
6. Select **Log time**.

The time and the note are saved together, or not at all. A note is optional,
but attaching files needs one. An entry logged with a note shows **View
note**, which opens the note in the ticket's conversation.

:::caution
A public note logged with time is a reply to the requester in every way. It
is emailed to them when the public reply notification is on, and on a parent
ticket it is copied to the open child tickets. See
[Ticket notifications](/service-desk/ticket-notifications/).
:::

Every time entry has a charge type. If **Charge type** shows **Agreement
default**, the agreement's default could not be shown, for example while it is
still loading. The entry still gets that default, or Labor.

See [Tickets](/service-desk/tickets/#log-time).

### Time work with the timer

Each technician has one timer, kept by your Outpost, so it follows you to any
browser or device you are signed in on. Opening a ticket does not start it.

- Select **Start timer** on the ticket's **Time** tab or on a project task to
  start it. When it is running on other work, the button is **Switch timer
  here**, which stops and logs the running timer first.
- The running timer shows in the header. Select it, then **Stop and log** to
  log the time, with the minutes editable, or **Discard** to throw it away.

The time is logged on the ticket or task the timer was on. See
[Time your work with the timer](/msp/timesheet-timer/).

## Log time on a project task

1. Open the task from the project's **Tasks** tab, or from **My work**.
2. In the task's time section, enter **Minutes** and a **Note**.
3. Choose a **Charge type**. It decides how the agreement prices the work.
4. **Billable** is selected by default. Clear it when the time is not charged
   to the client.
5. Select **Log time**.

Select **Edit** or **Delete** on an entry to change it. An entry marked
**Invoiced** is already on a finalized invoice and cannot be changed.

With `psa:write`, **Reprice** prices an entry again with the client's current
agreement rules, for example after the agreement changed. See
[Reprice an entry](/msp/client-invoicing/#reprice-an-entry).

## How logged time reaches an invoice

1. **When you log it**, the client's active agreement classifies the entry by
   its rules: **Covered**, **Prepaid**, **Billable**, or **Excluded**. On a
   project, the project's billing mode decides first. See
   [How a project bills](/msp/projects/#how-a-project-bills).
2. **Until it is on a draft invoice**, it is listed on **Client billing** >
   **Unbilled time**. After that it shows only in the **Everything** view.
   Changing an entry's minutes, start, or charge type classifies it again.
3. **When the client's period is drafted**, billable entries become lines on
   the draft invoice at the rate recorded when the entry was classified. Prepaid entries are taken
   off the prepaid block. Covered and excluded entries add no line.
4. **When the invoice is finalized**, the entries are marked invoiced and
   cannot be changed. If the invoice is voided, they return to **Unbilled
   time**.

An entry not marked **Billable** is never billed, whatever the agreement says.
An entry with no outcome shows **Unclassified**. That means the client had no
active agreement when it was logged. It is classified by the agreement's rules
when the client's next invoice is drafted. See
[Invoice clients](/msp/client-invoicing/).

Every entry also appears on the technician's timesheet for the week, and
when that week's timesheet is approved, the technician's entries in it cannot
be changed until an approver reopens it. See [Timesheets](/msp/timesheets/).

## See your own work

Select **Projects** > **My work**. It lists the tasks assigned to you across
every client that are coming due, with today's calendar beside them. Overdue
tasks are marked **Overdue**.

The page opens on the **This week** view. **Today and overdue** and **Next 30
days** are the other built-in views, and **Due within** in the filters sets
the range. Select **Start** to move a task to in progress, and **Done** to
finish it.

## See your day

Select **Projects** > **My day**. It lists the appointments booked for you
today, earliest first, in your time zone. Each row shows the time, the title,
the client, and where an on-site visit is. A row booked for a ticket opens that
ticket.

An appointment that started before today shows **Earlier** as its start, and
one that runs past today shows **later** as its end. Canceled appointments are
left out.

## Book technicians on the dispatch calendar

Select **Projects** > **Dispatch** to see who is where, and when.

- **Day** shows every technician's day.
- **Week** shows one technician's week. Choose them in **Technician**.
- **Technicians** shows every technician's week.

**Previous**, **Today**, and **Next** move through the calendar, and **Date**
jumps to a day.

### Book an appointment

1. Select **New appointment**.
2. In **What**, choose **A project task**, **A ticket**, **Something else**,
   or **Time off**.
3. Pick the task or ticket, or enter a **Title**.
4. Choose the **Technician** and the **Date**.
5. Enter when it **Starts** and how long it is **For**.
6. For a visit, select **On site** and enter **Where**. To send the client's
   contact a calendar invitation for an on-site visit, fill in **Tell the
   customer**.
7. Select **Save**.

For **Time off**, the form asks for a range of days instead, ending on the
**Last day off**.

Booking somebody over their capacity or outside working hours is allowed. The
calendar shows it rather than refusing it. To cancel, open the appointment,
select **Cancel appointment**, and confirm with **Cancel it**. Anybody who was
invited gets a cancellation.

Technicians are reminded before an appointment starts, as set in
**Projects** > **Settings**. Each technician's weekly capacity is set there
too. See
[Projects](/msp/projects/#set-the-project-defaults).

### Schedule a ticket

To book work on a ticket without leaving it:

1. Open the ticket and select **More** > **Schedule**.
2. Check the **New appointment** form and change anything that is wrong. It
   opens on **A ticket** with this ticket chosen. The **Technician** is the
   ticket's assignee, or you when the ticket is unassigned. The appointment is
   today, starting at the next half hour in your practice's time zone, for one
   hour.
3. Select **Save**.

Without `project:calendar`, **Schedule** is shown but cannot be selected.

## Verify

- After logging time on a ticket, the entry is on **Client billing** >
  **Unbilled time**, with the **Everything** view, showing the outcome the
  agreement's rules gave it.
- An entry logged with a note shows **View note** on the **Time** tab, and
  the note is in the ticket's conversation.
- On the day a scheduled ticket is booked for, it is on the booked
  technician's **Projects** > **My day**, and the row opens the ticket.
- A new appointment appears on **Dispatch** for the technician and the day you
  chose.

## Next steps

- [Invoice clients](/msp/client-invoicing/)
- [Projects](/msp/projects/)
- [Client agreements](/msp/agreements/)
- [Timesheets](/msp/timesheets/)
