> ## 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.

# The TimeTracker data model

> How clients, projects, sections, tasks, time entries, timesheets, budgets and invoices relate to each other, and which records depend on which.

This page is the structural view of TimeTracker. If
[how TimeTracker works](/concepts/how-timetracker-works) is the story, this is the
map.

## The shape

```
Workspace
├── Members ──────────── belong to Groups
│ carry a Role (and a supervision scope)
│ carry Rates (billable and cost)
│ follow a Work schedule
│
├── Clients ──────────── the companies you bill
│ └── Projects ─────── one engagement for a client
│ ├── Sections ─── the phases or columns of that project
│ │ └── Tasks ── the unit of work
│ │ ├── Estimate
│ │ ├── Assignees
│ │ ├── Tags
│ │ ├── Subtasks
│ │ └── Comments and attachments
│ ├── Budget ───── hours or money, one-time or monthly
│ ├── Members ──── who works on it
│ └── Rates ────── overrides for this project
│
├── Time entries ─────── one person, one stretch of time, one task or project
│ ├── roll up into ─── Timesheets (a person's week)
│ │ └── Submission → Approval → Locked
│ ├── consume ──────── the project Budget
│ └── become ───────── Invoice lines (if billable and approved)
│
├── Timecards ────────── clock in and out, a person's day at work
├── Expenses ─────────── costs that are not hours
├── Leave requests ───── time off, against a Leave policy
├── Planned blocks ───── intended work, before it happens
├── Invoices ─────────── └── Payments
└── Reports ──────────── read across everything above
```

## The records, one by one

### Workspace

The tenant. Everything below belongs to exactly one workspace and never crosses
between them. See [workspaces](/concepts/workspaces).

### Member

A person's membership of a workspace. This is where their **role** lives, so the
same login can be an Owner in one workspace and a Member in another.

A member also carries their rates, their schedule and their group memberships.

<Note>
  **A member is not the same as an invitation.** An invitation is a pending offer of
  access. It counts toward your seats, but it is not yet a person. Once accepted it
  becomes a membership, and the two are never double-counted. See
  [pending invitations](/team/pending-invitations).
</Note>

### Group

A standing team of people – "Design", "Engineering", "Dublin office". Groups are
used for reporting and for [supervision scope](/concepts/supervision-scope).

A group does not own projects. It is a way of naming a set of people.

### Client

A company you bill. Clients own projects and are the anchor for the
[client portal](/portal/overview).

### Project

One engagement for one client. This is the most important record in the product,
because almost everything hangs off it: tasks, time, budget, rates, invoices and
portal access.

**A project belongs to exactly one client.** Moving a project to a different client
changes who can see it in the portal, because portal access is derived from the
client. See [project visibility](/projects/project-visibility).

### Section

The phases or columns inside a project – "To do / Doing / Done", or "Discovery /
Design / Build / Launch". Sections are per project, so each project describes its
own workflow.

Sections are the user-facing status model for tasks. See
[project sections](/projects/project-sections).

### Task

The unit of work. A task sits in a section, inside a project.

A task carries an estimate, assignees, tags, subtasks, comments, attachments,
dependencies and a task number. See [task fields](/tasks/task-fields).

### Time entry

The atom of the whole product: **one person, one stretch of time, against one task
or project**.

Every entry records:

* Who, when, how long
* Which task or project
* Billable or not
* **A frozen copy of the rates that applied at that moment**

That last one matters. Changing a rate next month never rewrites last month's
numbers. See [rate snapshots](/rates/rate-snapshots).

### Timesheet

Not a separate record you fill in – it is a **view** of one person's time entries for
one week, plus a submission state.

Recording time *is* filling in your timesheet. The timesheet adds the workflow:
draft → submitted → approved or rejected, and locked once approved. See
[how timesheets work](/timesheets/how-timesheets-work).

### Timecard

A record of **presence**: clocked in at 09:02, clocked out at 17:30. It says you were
at work. It does not say what you worked on.

Timecards and time entries are separate on purpose. A factory or shop floor cares
about presence. An agency cares about what the hours were spent on. Some businesses
track both. See [Time Clock](/time-clock/overview).

### Budget

A ceiling on a project – **hours** or **money**, **one-time** or **monthly**.
Recorded time consumes it. See [how budgets work](/budgets/how-budgets-work).

### Rate

The price of an hour. There are two kinds, and they are walled off from each other:

* **Billable rate** – what you charge
* **Cost rate** – what it costs you

Rates can be set at several levels, and a resolution order decides which one wins for
a given hour. See [how rates are chosen](/rates/how-rates-are-chosen).

### Expense

A cost that is not an hour – software, travel, a stock photo licence. An expense can
be billable, in which case it can end up on an invoice. See
[expenses](/expenses/overview).

### Leave request

Time off, checked against a leave policy and a balance. See
[time off](/time-off/overview).

### Planned block

Intended work, placed on a calendar before it happens. A block has one **organiser**
and a roster of participants. Only the organiser's copy syncs to Google Calendar.

A block is an intention. A time entry is a record. They never merge. See
[planner vs tracked time](/planner/planner-vs-tracked-time).

### Invoice

A bill to a client, made of lines. Lines usually come from approved billable time and
billable expenses.

An invoice snapshots the details it needs – including your own company's "bill from"
block – so changing your address next year does not rewrite last year's invoices. See
[invoice sender details](/invoicing/invoice-sender-details).

### Payment

Money received against an invoice. Several payments can sit against one invoice,
which is why `partially_paid` is a real status. See
[record a payment](/invoicing/record-a-payment).

## Which records depend on which

Useful to know before you delete something.

| If you remove…   | What is affected                                                                                                                              |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| A **member**     | Their time entries stay. Their tasks need reassigning.                                                                                        |
| A **client**     | Its projects go with it, and its portal contacts lose access.                                                                                 |
| A **project**    | Its tasks, budget and project rates go with it. Its time entries and any invoices already raised are the reason this is a high-impact delete. |
| A **task**       | Time recorded against it stays, attached to the project.                                                                                      |
| A **section**    | Its tasks must move somewhere first.                                                                                                          |
| A **time entry** | Budget burn and timesheet totals recalculate.                                                                                                 |
| An **invoice**   | Void it rather than delete it. The time behind it is untouched.                                                                               |

Nothing is deleted in one step. Most deletes move the record to
[Trash](/data/trash-and-restore) first, and high-impact deletes ask you to type the
record's name to confirm.

## One-to-many at a glance

| Parent    | Children                                                 |
| --------- | -------------------------------------------------------- |
| Workspace | Members, groups, clients, tags, roles, apps, settings    |
| Client    | Projects, portal contacts                                |
| Project   | Sections, tasks, budget, project members, project rates  |
| Section   | Tasks                                                    |
| Task      | Subtasks, comments, attachments, time entries            |
| Member    | Time entries, timecards, expenses, leave requests, rates |
| Invoice   | Lines, payments                                          |

## Related guides

<CardGroup cols={2}>
  <Card title="How TimeTracker works" icon="diagram-project" href="/concepts/how-timetracker-works">
    The same model as a story, with numbers.
  </Card>

  <Card title="Glossary" icon="book" href="/concepts/glossary">
    Every term defined in one place.
  </Card>

  <Card title="Archive, Trash and Delete" icon="trash" href="/concepts/archive-trash-and-delete">
    What happens when a record goes away.
  </Card>

  <Card title="Projects overview" icon="folder" href="/projects/overview">
    The record most of the model hangs off.
  </Card>
</CardGroup>
