# Data Overview

Harvest exposes a wide range of data through Coupler.io — from raw time logs and expense records to rolled-up reports and billing documents. Here's a breakdown of what's available and how to use it.

## Entity types

| Type                 | Entities                                                                                                                    |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Reports (aggregated) | Time report, Expense report, Uninvoiced report, Project budget report                                                       |
| Time & expenses      | Time entries, Expenses, Expense categories                                                                                  |
| Billing              | Invoices, Invoices with line items, Invoice item categories, Estimates, Estimates with line items, Estimate item categories |
| Projects & tasks     | Projects, Project task assignments, Project user assignments, Tasks                                                         |
| People & org         | Users, Roles, Clients, Client contacts, Company                                                                             |

## Metrics and dimensions

#### Time entries

| Field              | Description                                |
| ------------------ | ------------------------------------------ |
| `hours`            | Hours logged for the entry                 |
| `billable`         | Whether the entry is billable (true/false) |
| `billable_rate`    | Hourly rate applied if billable            |
| `cost_rate`        | Internal cost rate for the user            |
| `spent_date`       | Date the time was logged                   |
| `user.name`        | Team member who logged the time            |
| `project.name`     | Project the time was logged against        |
| `task.name`        | Task associated with the entry             |
| `client.name`      | Client linked to the project               |
| `is_running`       | Whether the timer is currently active      |
| `timer_started_at` | Timestamp when the timer started           |
| `updated_at`       | When the record was last modified          |
| `notes`            | Free-text notes on the entry               |

#### Report: Time report

| Field                  | Description                                        |
| ---------------------- | -------------------------------------------------- |
| `total_hours`          | Total hours logged in the report period            |
| `billable_hours`       | Hours marked as billable                           |
| `currency`             | Currency used for billing                          |
| `billable_amount`      | Revenue value of billable hours                    |
| `spend_date` (From/To) | Date range for the report                          |
| Report type            | Breakdown by client, project, task, or team member |

#### Report: Project budget report

| Field              | Description                             |
| ------------------ | --------------------------------------- |
| `budget`           | Total budget allocated to the project   |
| `budget_spent`     | Budget consumed to date                 |
| `budget_remaining` | Budget still available                  |
| `is_over_budget`   | Whether the project has exceeded budget |

#### Report: Uninvoiced report

| Field                 | Description                     |
| --------------------- | ------------------------------- |
| `uninvoiced_hours`    | Billable hours not yet invoiced |
| `uninvoiced_expenses` | Expenses not yet invoiced       |
| `uninvoiced_amount`   | Total uninvoiced revenue        |

#### Invoices

| Field         | Description                              |
| ------------- | ---------------------------------------- |
| `amount`      | Total invoice amount                     |
| `due_amount`  | Amount still outstanding                 |
| `state`       | Invoice status (draft, open, paid, etc.) |
| `issue_date`  | Date the invoice was issued              |
| `due_date`    | Payment due date                         |
| `client.name` | Client the invoice was sent to           |
| `subject`     | Invoice subject line                     |

#### Users

| Field                     | Description                                               |
| ------------------------- | --------------------------------------------------------- |
| `first_name`, `last_name` | Team member name                                          |
| `email`                   | Email address                                             |
| `is_active`               | Active status                                             |
| `weekly_capacity`         | Weekly capacity **in seconds** (divide by 3600 for hours) |
| `roles`                   | Assigned roles                                            |
| `cost_rate`               | Default cost rate                                         |
| `default_hourly_rate`     | Default billing rate                                      |

## Common metric combinations

* **Utilization by team member** — Join Time entries + Users, group by `user.name`, compare `hours` to `weekly_capacity`
* **Client profitability** — Join Time entries + Invoices on `client.id`, compare `billable_amount` to `cost_rate × hours`
* **Budget burn rate** — Use the Project budget report and track `budget_spent` vs. `budget` week over week with Append
* **Unbilled work pipeline** — Use the Uninvoiced report filtered by date range to see revenue ready to invoice

## Use cases by role

{% tabs %}
{% tab title="Operations & project managers" %}

* Pull the **Project budget report** into Google Sheets or Looker Studio to monitor budget burn across all active projects in real time
* Use **Project user assignments** and **Time entries** with a Join transformation to see which team members are working on which projects and at what cost
* Track overdue deliverables by combining the **Uninvoiced report** with **Invoices** data
  {% endtab %}

{% tab title="Finance teams" %}

* Export **Invoices with line items** to BigQuery for revenue recognition and cash flow tracking
* Use the **Uninvoiced report** to forecast incoming revenue before month-end close
* Combine **Expenses** with **Expense categories** to analyze spend by category across projects
* Send invoice aging summaries to ChatGPT or Gemini for narrative reporting
  {% endtab %}

{% tab title="Team leads & HR" %}

* Export **Users** and **Time entries** to calculate actual utilization vs. capacity per team member
* Use **Roles** and **Project user assignments** together (Join) to see resource allocation by role
* Pull payroll-relevant data from **Users** and **Time entries** for headcount reporting — several teams use this for payroll inputs
  {% endtab %}
  {% endtabs %}

## Platform-specific notes

* The `weekly_capacity` field in the **Users** entity is returned in **seconds**, not hours. Divide by 3600 to convert to hours.
* The **"Changed after"** filter applies to the `updated_at` field — it is not the same as filtering by `spent_date`. If you want to pull entries for a specific time period, use the **Time report** entity with **From** and **To** date fields instead.
* The **Report: Time report** requires you to select a report type (by client, project, task, or team member) — this determines how rows are grouped.
* When filtering **Time entries**, **Invoices**, or **Expenses** by **Project ID**, you can only filter by one project at a time. Find the project ID in the Harvest URL when viewing a project.
* Advanced filters use lowercase field values — for example, use `true` not `TRUE` when filtering boolean fields like `is_active`.
