> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Expected vs tracked hours

> See how TimeTracker compares your work schedule with the hours you tracked, and what the day-off, today and shortfall colours on your timesheet mean.

Your timesheet grid colours each day by comparing what you were expected to work with what you actually tracked. The expected hours come from your work schedule.

## Expected vs tracked

Two different things, and they are often mixed up.

| Term               | What it is                     | Where it comes from |
| ------------------ | ------------------------------ | ------------------- |
| **Expected hours** | What you are scheduled to work | Your work schedule  |
| **Tracked hours**  | What you actually recorded     | Your time entries   |

The timesheet compares the two, day by day. It never changes either one – it only shows you the gap.

<Note>
  Expected hours come from the **person's own work schedule**, not from a single workspace-wide setting. Two people on different schedules see different targets on the same day.
</Note>

## Where the colours appear

Open **Time** and switch to **Grouped view**. The comparison lives in that grid.

| What you see                           | What it means                               |
| -------------------------------------- | ------------------------------------------- |
| A greyed-out, dimmed column            | A **day off** on your schedule              |
| A highlighted column                   | **Today**, read in the workspace timezone   |
| A coloured figure in the **Total** row | How that day compares to its expected hours |
| A red tinted cell                      | An entry that came back **rejected**        |

The day comparison only colours the **Total** row cell for that day. Individual project rows are not coloured.

## The three day states

| State         | When it shows                              | Which days     |
| ------------- | ------------------------------------------ | -------------- |
| **Completed** | Tracked hours exactly match expected hours | Past and today |
| **Overtime**  | Tracked hours are above expected hours     | Past and today |
| **Short**     | Tracked hours are below expected hours     | Past days only |

Three rules follow, and they are deliberate.

* **A future day never shows a state.** There is nothing to complete yet.
* **Today under target stays neutral.** You may still hit the target before the day ends. Only a past day flags as short.
* **A day off never shows a state.** There is no target to miss.

## Where expected hours come from

Your work schedule sets, per weekday, whether you work and for how long. The schedule also handles the exceptions.

| Source                         | Effect on the day                                                 |
| ------------------------------ | ----------------------------------------------------------------- |
| A working day on your schedule | Expected minutes for that day                                     |
| A non-working day              | Day off, no target                                                |
| A holiday that covers you      | The day is off for everyone it covers, so no shortfall is counted |
| Approved leave                 | The schedule resolves the day as not working                      |

Set schedules up in **Settings → Schedules**. See [/schedules/overview](/schedules/overview) and [/schedules/working-hours-and-days-off](/schedules/working-hours-and-days-off).

## How to read your week

<Steps>
  <Step title="Open the grouped view">
    Go to **Time** and click the grid icon in the view toggle.
  </Step>

  <Step title="Find the Total row">
    It runs across the bottom of the grid, with one figure per day.
  </Step>

  <Step title="Scan for colour">
    A coloured past-day total means the day is not neutral. Compare it to what you expected to work.
  </Step>

  <Step title="Check the greyed columns">
    Those are your days off. Hours you tracked on them still count toward the period total. They carry no target.
  </Step>

  <Step title="Fix and submit">
    Add anything missing, then submit the period.
  </Step>
</Steps>

## Timecards compare the same way

If your workspace uses the Time Clock app, the timecard review shows the same comparison in a table.

| Column        | What it shows                      |
| ------------- | ---------------------------------- |
| **Day**       | The date                           |
| **Worked**    | Minutes actually clocked           |
| **Scheduled** | Minutes expected from the schedule |
| **Late**      | Minutes late, or a dash            |
| **Status**    | The day's attendance status        |

That is presence at work. The timesheet grid is hours against tasks. Both read expected hours from the same schedule.

## Example

Sarah Lin is on a standard Northwind Studio schedule – Monday to Friday, 9:00 to 17:00, 8 hours a day, 40 hours a week.

Her week reads like this on Friday afternoon.

| Day            | Expected | Tracked | State                               |
| -------------- | -------- | ------- | ----------------------------------- |
| Sunday         | Day off  | 0       | No state – greyed column            |
| Monday         | 8h       | 8h      | Completed                           |
| Tuesday        | 8h       | 9h      | Overtime                            |
| Wednesday      | 8h       | 6h      | Short                               |
| Thursday       | 8h       | 8h      | Completed                           |
| Friday (today) | 8h       | 5h      | No state yet – she can still finish |
| Saturday       | Day off  | 0       | No state – greyed column            |

Her period total is 36 hours. Wednesday is the only day that flags short.

The next week Northwind observes a public holiday on the Monday. The holiday marks the day off for everyone it covers, so Monday shows no shortfall even though Sarah tracked nothing.

## Options and settings

| Setting                      | Where                    | Who can change it           |
| ---------------------------- | ------------------------ | --------------------------- |
| Working days and hours       | **Settings → Schedules** | Owner, Admin                |
| Who is on which schedule     | **Settings → Schedules** | Owner, Admin                |
| Holidays                     | **Time off → Holidays**  | Owner, Admin                |
| Your own schedule, read only | **My schedule**          | Anyone with `schedule.view` |

## Permissions

| Action                                | Capability        | Default roles                                              |
| ------------------------------------- | ----------------- | ---------------------------------------------------------- |
| See your own schedule                 | `schedule.view`   | Owner, Admin, Project Manager, Finance, Member, Contractor |
| Create or change a schedule           | `schedule.manage` | Owner, Admin                                               |
| See a teammate's timesheet comparison | `time.viewOthers` | Owner, Admin, Project Manager                              |

## Plan and app gating

The comparison is part of timesheets, which are **free**.

The **Work schedules** app must be on in **Settings → Apps** for expected hours to resolve. Without a schedule there is no target, so no day state shows.

## Common questions

<AccordionGroup>
  <Accordion title="Why does today never show as short?">
    The day is not over. Flagging you at 10 a.m. for not having worked 8 hours would be noise. Short only shows once a day is in the past.
  </Accordion>

  <Accordion title="I worked on a Saturday. Does it count?">
    Yes. Hours on a day off count toward the period total exactly like any other hours. The day carries no target, so it shows no state.
  </Accordion>

  <Accordion title="Nothing is coloured at all. Why?">
    Either the Work schedules app is off, you have no schedule assigned, or the schedule has not loaded yet. The grid renders un-styled until it resolves.
  </Accordion>

  <Accordion title="Does a shortfall stop me submitting?">
    No. The comparison is information, not a gate. You can submit a short week.
  </Accordion>

  <Accordion title="Does approved leave create a shortfall?">
    No. The schedule resolves a leave day as not working, so there is no target to fall short of.
  </Accordion>

  <Accordion title="Which timezone decides what &#x22;today&#x22; is?">
    The workspace timezone. That way everyone on a distributed team sees the same day highlighted.
  </Accordion>
</AccordionGroup>

## Troubleshooting

* **A working day shows as a day off.** Check the person's assigned schedule and any schedule exception on that date.
* **The wrong day is highlighted as today.** The highlight uses the workspace timezone. Check **Settings → General**.
* **Expected hours look wrong for one person.** They are probably on a different schedule template. Open their record and check which schedule they are assigned.
* **A holiday still shows a shortfall.** Check that the holiday covers that person – holidays can be scoped.

## Related guides

<CardGroup cols={2}>
  <Card title="Schedules overview" icon="calendar" href="/schedules/overview">
    Where expected hours are defined.
  </Card>

  <Card title="Working hours and days off" icon="clock" href="/schedules/working-hours-and-days-off">
    Set the days and hours a schedule expects.
  </Card>

  <Card title="Fill in a timesheet" icon="pen-line" href="/timesheets/fill-in-a-timesheet">
    The grid these colours appear on.
  </Card>

  <Card title="My schedule" icon="user" href="/schedules/my-schedule">
    Check your own expected hours.
  </Card>

  <Card title="Absence and expected hours" icon="user-x" href="/time-clock/absence-and-expected-hours">
    The same comparison for clock in and out.
  </Card>

  <Card title="Holidays" icon="party-popper" href="/time-off/holidays">
    Days that are off for everyone they cover.
  </Card>
</CardGroup>
