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

  • 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

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.

Last updated

Was this helpful?