Gusto

You can integrate your Gusto account with Harvest so the hours your team tracks in Harvest flow into Gusto automatically. That removes the double-entry of maintaining timesheets in both Harvest and Gusto when you run payroll, and means your team only has to track time in one place.

In addition to pushing tracked hours to Gusto as time sheets, the integration lets you match each Harvest user to the corresponding Gusto employee or contractor, choose the FLSA workweek your overtime threshold is calculated against, and schedule a reminder so you don't forget to sync before payroll.

What the integration does

When you connect Gusto to Harvest, an Administrator in Harvest can:

  • Push tracked hours to Gusto as time sheets for one or more pay periods at a time.
  • Match each Harvest user to a Gusto employee or contractor.
  • Review which hours are eligible to sync before sending anything — including any hours that fall inside an already-processed pay period, or that belong to team members who aren't eligible for overtime (exempt and owners).
  • Receive an email when a sync run finishes, whether it completed successfully or failed.
  • Set a weekly, semi-monthly, or monthly reminder so an Administrator gets a nudge to run the sync ahead of payroll.
  • Disconnect from Gusto at any time without losing your user mappings or sync history.

Before you connect

To integrate Gusto with Harvest you need:

  • A Harvest account with at least one user tracked against a project.
  • A Gusto account in good standing. The Gusto integration is available for US-based Gusto customers.
  • An Administrator in Harvest — the only role that can connect, configure, and run syncs.

Harvest syncs hours to Gusto as time sheets. Time sheets are created as pending in Gusto and must be reviewed and approved in Gusto's own Time Tracking UI before they're included in a payroll run. Approving in Gusto is a deliberate, separate step and is not handled by Harvest.

In the current release, each Harvest account can connect to one Gusto company. If you administer multiple Gusto companies, connect each one from a separate Harvest account.

Connecting Gusto to Harvest

  1. In Harvest, click Settings in the upper right corner. Only Administrators can view and change account settings.
  2. Click Integrations in the left sidebar.
  3. In the Gusto section, click Connect.
  4. Sign in to Gusto and authorize Harvest to access your Gusto company.

When the connection completes you'll land on Gusto settings, where you can map users and configure the workweek.

Matching Harvest users to Gusto employees and contractors

Before any hours can sync, each Harvest user who should have their hours pushed to Gusto must be matched to a Gusto employee or contractor. This step is required — Harvest can't send hours for a user unless it knows which Gusto entity to send them to.

  1. From the Gusto settings page, find the People to link section.
  2. For each Harvest user, pick the matching Gusto employee or contractor from the dropdown and click Link.
  3. Repeat for everyone whose hours you want synced.

A Harvest user can only be linked to one Gusto entity per connection. To change a link, unlink the user and re-link them — editing an existing link directly isn't supported.

Harvest shows each Gusto employee's FLSA status (the US classification that determines overtime eligibility). The integration enforces this at sync time: hours for Exempt and Owner employees are never sent to Gusto, because sending them can corrupt their paycheck. The status is read fresh on every sync, so a reclassification in Gusto is picked up automatically on the next run.

Choosing your workweek anchor

Overtime in the US is calculated against a fixed seven-day workweek, which Gusto needs to know before it can accept any time sheets. The default is whatever day your Harvest week starts on.

You can change the workweek anchor from the Gusto settings page in Harvest. The change is blocked while a sync run is in flight, so you don't move the workweek out from under an in-progress sync.

Setting a sync reminder

The integration never runs automatically — every sync is started by an Administrator from Harvest. If you'd like a nudge, you can set a cadence from the Gusto settings page:

  • Weekly on a chosen day of the week.
  • Monthly on a named point in the month — the 1st, the 7th, the 15th, seven days before the end, or the last day of the month.
  • Semi-monthly on two different named points in the month (for example, the 1st and the 15th).

On the day the reminder fires, a Run payroll button appears at the top of the Team and Approvals pages with a Due today badge. Click it to land on the sync wizard. The reminder never starts a sync on its own.

Running a sync

When you're ready to push hours to Gusto:

  1. In Harvest, click Settings then Integrations, and in the Gusto section click Sync.
  2. Step 1 — Date range. Pick a single pay period (the latest unprocessed one is suggested) or a custom date range up to 90 days. The default range is the last 7 days.
  3. Step 2 — Choose people. Tick the Harvest users whose hours you want to send. Only mapped users appear here.
  4. Step 3 — Choose projects. For each person, pick the projects (and, for employees with multiple Gusto jobs, the specific Gusto job) you want included.
  5. Review the eligibility preview — Harvest shows you exactly what will be sent and what will be skipped, and why.
  6. Click Sync to start the run.

The run runs asynchronously; you can leave the page and come back. Harvest emails the Administrator who started the run when it finishes, with a link to the full results.

What gets skipped

The preview and the actual sync apply the same rules, so what you see is what gets sent:

  • Unmapped users — their hours aren't eligible. Map them first if you want their hours included.
  • Exempt and Owner employees — never sent, per Gusto's policy.
  • Hours inside a processed pay period — Gusto locks periods that have already been run for payroll. Adjust these directly in Gusto.
  • Days with no time tracked — only hours logged against a project in Harvest can be sent; empty days aren't part of the sync.
  • Hours that haven't changed since they were last synced — re-running the same range is a safe no-op for those entries.
  • Hours outside the selected date range — not eligible.

What gets sent

For each eligible entry, Harvest sends Gusto a time sheet with:

  • The Harvest user's hours, broken down into Regular and Overtime against the FLSA 40-hour weekly threshold, with overtime applied per workweek.
  • Start and end times for the shift (or, for duration-only entries, a synthetic 9 AM shift).
  • The originating Harvest company ID and day-entry ID in the metadata, so you can trace any Gusto time sheet back to its Harvest source.

Approving time sheets in Gusto

Harvest creates time sheets as pending. They do not appear on a Gusto payroll until an Administrator reviews and approves them in Gusto's Time Tracking UI. If you don't see your hours on a payroll run, check Gusto's pending queue.

Reviewing past sync runs

Every sync run is recorded. From the Gusto settings page, click Sync to see the full history with counts of created, skipped, and failed operations and the reason for each skip or failure. Failed entries can be retried by running a new sync over the same date range — the run is idempotent, so re-running re-attempts only the entries that didn't succeed the first time.

Disconnecting Gusto from Harvest

Disconnecting tears down the connection to Gusto. Your user mappings, sync history, and reminder setting are preserved so you can reconnect later without losing your setup.

  1. Head to Settings > Integrations.
  2. In the Gusto section click View settings.
  3. Click the Disconnect button.
  4. Type DISCONNECT and click Disconnect to confirm.

Common questions

Can I connect more than one Gusto company to a single Harvest account? Not in the current release. Each Harvest account can hold one active Gusto connection at a time. If you administer several Gusto companies, connect each one from its own Harvest account.

Why aren't some of my team's hours showing as eligible to sync? The eligibility preview lists every reason. The most common are: the user isn't mapped to a Gusto entity yet, the user is Exempt or Owner in Gusto, the hours fall inside a pay period that Gusto has already processed, or there are no hours tracked against that user for the date range you picked.

Why isn't my synced time sheet on the Gusto payroll? Time sheets created by Harvest land in Gusto as pending. Approve them in Gusto's Time Tracking UI before the payroll run — Harvest doesn't submit or approve on Gusto's behalf.

Can Harvest sync hours automatically, without me clicking Sync? No. Every sync is started by an Administrator. The reminder cadence can nudge you on a schedule you pick, but it never starts a run on its own.

Does the integration support state-specific overtime rules (for example, California daily overtime)? The current release calculates overtime against the federal weekly 40-hour threshold only. State-specific rules — including California daily overtime — are not yet supported.

What happens to my mappings and sync history if I disconnect? Both are preserved. Reconnecting to the same Gusto company restores your previous mappings; you won't need to re-link your team. Sync history stays available regardless of connection state.

Did you find this article helpful?

Still have questions? We’re happy to help!

Contact us