Best Practices

Use Time report for summaries, Time entries for raw data

The Time report entity gives you pre-aggregated rows by client, project, task, or team member — ideal for dashboards. Use Time entries when you need row-level detail for custom calculations or payroll inputs.

Filter by date range to control dataset size

Time entries and expense data can grow very large over time. Set a From and To date on Time report entities, or use "Changed after" on Time entries, to pull only the window you need. This prevents timeouts and plan limit errors.

Use Project ID filtering for project-level reporting

For Invoices, Expenses, and Time entries, you can filter by a single Project ID. This is the most reliable way to build project-specific reports without pulling your entire dataset.

Join entities to enrich your data

Time entries alone don't include user cost rates or project budgets. Use Coupler.io's Join transformation to combine Time entries with Users (for cost rates) or with Projects (for budget data) in a single output.

Data refresh and scheduling

Run a successful manual run before scheduling

Always confirm your data flow returns the expected data in a manual run before enabling a schedule. This is especially important when using date filters, since "Changed after" behaves differently than a spent-date filter.

Use Append mode for payroll and billing workflows

If you're building a running log of time entries for payroll, use Append mode combined with a "Changed after" filter. This adds only new or updated records each run, keeping your sheet lean without losing historical data.

Performance optimization

Split large datasets across multiple data flows

If a single Time entries pull times out, split it by year or project and use Append to combine the results. Harvest's API can struggle with very large date ranges in a single request.

Use the Project budget report instead of calculating manually

If you just need budget vs. actuals, the Project budget report entity returns pre-computed values directly from Harvest. This is faster and less error-prone than joining Time entries and Projects to calculate it yourself.

Common pitfalls

triangle-exclamation

Do

  • Use lowercase true/false in advanced filters for boolean fields

  • Divide weekly_capacity by 3600 to convert seconds to hours

  • Filter Time entries by Project ID when building project-specific reports

  • Connect with an Admin or Manager account to access all users' data

Don't

  • Use TRUE/FALSE in uppercase for boolean filter values — they won't work

  • Expect "Changed after" to filter by the date work was performed

  • Pull all Time entries without a date range if your dataset is large — you'll hit timeouts or row limits

  • Connect with a Member-level Harvest account if you need team-wide data

Last updated

Was this helpful?