Harvest
Harvest is a time tracking and invoicing tool used by teams to log hours, manage projects, and bill clients. Connecting it to Coupler.io lets you pull your time entries, expenses, invoices, and project data into the tools you already use — automatically, on a schedule, with no code.
Why connect Harvest to Coupler.io?
Automate your reporting — stop manually exporting CSVs every week and let Coupler.io refresh your data on a schedule
Combine multiple entities — use Join or Append transformations to merge Time entries with Projects, Clients, or Users into a single dataset
Send data anywhere — destinations include Google Sheets, Excel, BigQuery, Looker Studio, and AI tools like ChatGPT, Claude, Gemini, Cursor, Perplexity, and OpenClaw
Filter before you load — reduce dataset size by filtering on date range, project ID, or update time so you only pull what you need
Prerequisites
An active Harvest account (any plan)
Admin or Manager access in Harvest if you need to pull data across all users and projects (Members can only see their own data)
Quick start
How to connect
Create a new data flow. Log in to Coupler.io and click Add data flow. Search for Harvest and select it as your source.
Authorize your Harvest account. Click Sign in with Harvest and complete the OAuth flow. You'll be asked to choose which Harvest account to connect — select the correct one and approve access. Once authorized, you'll be returned to Coupler.io.
Select an entity. Choose the data you want to pull — for example, Time entries, Report: Time report, Invoices, or any of the other available entities. If your entity supports a date range (like the Time report or Expense report), set the From and To dates using the date picker.
Choose a destination. Select where you want your data to go — Google Sheets, Excel, BigQuery, Looker Studio, or an AI destination. Follow the prompts to authorize and configure your destination.
Run your data flow. Click Run to execute a manual import. Once it completes successfully, your data will appear in the destination you chose.
Available entities
Report: Time report
Aggregated time data by user, project, task, or client
Report: Expense report
Aggregated expense data by user, project, or client
Report: Uninvoiced report
Billable time and expenses not yet invoiced
Report: Project budget report
Budget vs. actual hours/costs per project
Time entries
Raw time log entries with hours, dates, and notes
Expenses
Individual expense records
Expense categories
Expense category definitions
Invoices
Invoice headers
Invoices with line items
Invoices including itemized line detail
Invoice item categories
Invoice line item category definitions
Estimates
Estimate headers
Estimates with line items
Estimates including itemized line detail
Estimate item categories
Estimate line item category definitions
Projects
Project list with budget and billing settings
Project task assignments
Tasks assigned to each project
Project user assignments
Users assigned to each project
Clients
Client list
Client contacts
Contacts associated with clients
Company
Your Harvest company/account settings
Users
Team member list and profile details
Roles
User role definitions
Tasks
Task list
Harvest 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.
Harvest common issues
Connection issues
Missing data
Permission errors
Data discrepancies
Rate limits
Harvest FAQ
Last updated
Was this helpful?
