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
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
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
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
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
uninvoiced_hours
Billable hours not yet invoiced
uninvoiced_expenses
Expenses not yet invoiced
uninvoiced_amount
Total uninvoiced revenue
Invoices
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
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, comparehourstoweekly_capacityClient profitability — Join Time entries + Invoices on
client.id, comparebillable_amounttocost_rate × hoursBudget burn rate — Use the Project budget report and track
budget_spentvs.budgetweek over week with AppendUnbilled 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
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
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
Platform-specific notes
The
weekly_capacityfield 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_atfield — it is not the same as filtering byspent_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
truenotTRUEwhen filtering boolean fields likeis_active.
Last updated
Was this helpful?
