Migration · CSV import

Import from
Harvest.

Step-by-step CSV migration. Clients, projects, and time entries — including one Harvest-specific gotcha you need to know about. Most teams finish in under an hour.

What works
CSV import for clients, projects, time entries. Dedupes on re-upload.
Safety net
Every import has a Dry-run that rolls back inside a transaction.
One gotcha
Harvest exports don't include user emails. Add a column before import.

The 6 steps

  1. 1

    Export Clients from Harvest

    In Harvest, go to Manage → Clients. Click Export at the top-right. You get a CSV of every client, including name and default rate.

    File: clients.csv. The default rate column will come through if it's set in Harvest.

  2. 2

    Export Projects from Harvest

    In Harvest, go to Manage → Projects. Use Export to download a CSV containing project name, the linked client name, billable status, and any budget fields.

    File: projects.csv. The client_name column is what links each project to a client during import.

  3. 3

    Export Time entries from Harvest

    In Harvest, go to Reports → Detailed time. Pick the date range you want — usually all-time for a full migration, or a fiscal year if you only need recent history. Click Export → CSV.

    File: time.csv. Columns: date, hours, project_name, task, notes, user (display name).

  4. 4

    Add a user_email column to the time CSV

    Open the time CSV in a spreadsheet. Add a column called user_email. Paste each person's work email next to their name. Save as CSV.

    Why: Tempough matches time entries to users by email, not display name (two "Alex Johnson"s would collide). Five minutes for a small team.

  5. 5

    Sign up for Tempough and invite your team

    Create your workspace at tempough.com. Free tier works fine for the import. Invite team members at Settings → Team. Their emails must match what you pasted in step 4.

    You don't need a paid plan to import. Upgrade later when you actually want to send invoices or run team reports.

  6. 6

    Run the imports in order

    Go to /imports. Upload in order: Clients → Projects → Time. Each one has a Dry-run button — use it first to preview exactly what would land. If anything looks off, fix the CSV and try again.

    Dry-run rolls back inside a transaction, so it can't corrupt anything. Real imports dedupe automatically — re-uploading a fixed file is always safe.

The Harvest export gotcha

Harvest's time export doesn't include emails.

Harvest identifies people by their display name in CSV exports. Tempough matches on email — that way "Alex Johnson" and "Alex Johnson" (two different people) don't collide silently.

The fix is a one-time spreadsheet step. Open the time CSV. Add a column called user_email. Paste each person's work email next to their name. Save. The importer will pick it up from there.

For a 5-person team this is about 5 minutes. For a 25-person team, maybe 15 minutes with copy-paste. After that, imports are clean.

Common questions

Clients (name, default rate, currency, address), Projects (name, client, billable status, code, budget if you map it), and Time entries (date, hours, project, task, user, notes, billable flag). The importer dedupes on natural keys so re-running a fixed file won't double-import.
Full migration
Switching from Harvest →
The case
Why switch from Harvest →
Pricing
Harvest pricing breakdown →

Sign up — it's free to import.

Bring your Harvest history over before you commit to a paid plan.