How to set up the Harvest integration

Written By Timothy Murenzi

Last updated 13 days ago

How to set up the Harvest integration

Pull timelogs from Harvest into Workroom by mapping your projects + tasks once and importing on demand or on a nightly schedule. This guide walks you through it end-to-end.

Before you start

  • Pro plan required. Harvest is free, but only available on Pro accounts.

  • You need to be an Admin or the Designer on your Workroom account — the connection is account-wide.

  • You'll need login access to your Harvest account.

Step 1 — Connect Harvest

  1. Go to Settings → Integrations → Harvest. (You can also reach it from the App marketplace by clicking the Harvest tile and choosing Integrate.)

  2. Click Connect Harvest.

  3. You'll be sent to Harvest's consent screen. Log in if you aren't already and choose the Harvest account you want to connect — most users only have one.

  4. Click Authorize App. Harvest sends you back to Workroom and the Settings page shows a green Connected badge with the Harvest account name + when it was connected.

That's the OAuth handshake done. Workroom stores the access tokens server-side and refreshes them automatically — you'll never have to reconnect unless you explicitly disconnect.

Step 2 — Map Harvest projects to Workroom projects

The mapping table opens automatically once you're connected. For each active Harvest project, pick the Workroom project that imported timelogs should land in.

  • Use the dropdown next to each Harvest project to choose its Workroom target.

  • Leave any project as — Not mapped — to skip it. Time entries for unmapped projects won't be imported.

  • Each pair is 1:1 — if you change a target, any other pair that touched either side is cleared.

💡 Don't worry about mapping every project. If your Harvest workspace has projects you don't use in Workroom (or vice-versa), just leave them unmapped.

Step 3 — Map Harvest tasks to Workroom Activity Types

Same pattern: each Harvest task gets paired with a Workroom Activity Type so the hourly rate and billable flag travel with each imported entry.

  • An unmapped task means time entries for that task type are skipped on import.

  • Most studios map a small set of common tasks (e.g. Design / Drafting / Client Meeting → corresponding Workroom Activity Types).

When you've set what you want, click Save mappings.

Step 4 — Run your first import

The Sync card has two date inputs and an Import from Harvest button.

  1. Pick a From and To date — the date inputs default to the last 14 days, but you can choose any window.

  2. Click Import from Harvest.

  3. After a few seconds you'll see a result panel like:

    Imported 12 of 14 entries (2026-06-01 → 2026-06-12) Skipped:

    • Project not mapped: 1

    • Already imported: 1

That's the import done — head over to Timelogs to see the imported entries on the right projects and members.

Optional — Turn on nightly auto-sync

If you'd rather not run imports manually, flip the Automated sync toggle in the Connection card.

  • Runs every night at 2am UTC.

  • Imports the last 24 hours of Harvest entries.

  • Uses your saved mappings — no need to reconfigure.

  • The card shows Last auto-sync + Result so you can confirm the cron is alive.

You can flip it back off any time without affecting manual imports.


How it works (and what to expect)

Direction. Harvest is import-only — entries flow Harvest → Workroom. Workroom timelogs are not pushed back to Harvest.

Owner attribution. Every imported entry needs a Workroom user to "own" it. Workroom tries to match the Harvest entry's user by email first. If no Workroom user has that email, the entry is attributed to the designer who connected Harvest — so nothing gets dropped over identity mismatches.

Idempotency. Each imported entry is stamped with its Harvest entry id. Re-running the same window won't create duplicates — already-imported entries show up under Skipped: Already imported.

Imported fields.

Workroom field Comes from Harvest

Project

Your project mapping

Activity Type / Service

Your task mapping

Date

spent_date

Duration

hours (split into hours + minutes)

Title / memo

notes

Billable

billable

Logged by

matched user (email) or fallback owner

What's not imported. Expenses, invoices, and clients. Just time entries.


Troubleshooting — what each "Skipped" reason means

After every import, the result panel groups skipped entries by reason:

  • Project not mapped — the entry's Harvest project doesn't have a Workroom target set. Go back to Project mapping and pick one.

  • Task not mapped — same idea for tasks. Map the Harvest task to a Workroom Activity Type.

  • Already imported — that Harvest entry was imported in an earlier run. Safe to ignore; it's the duplicate guard doing its job.

  • No fallback owner on the connection — the designer who connected Harvest can't be resolved. Disconnect + reconnect to refresh.

  • Save failed / Harvest API error — transient. Try again in a few minutes; if it persists, contact support with the result panel screenshot.

Disconnecting

Click Disconnect at the bottom of the Connection card. Workroom revokes the tokens and clears the saved mappings — your imported timelogs stay where they are.