Step by Step: How to enable Harvest Integration?

How to set up your Runn <> Harvest integration

Rowan Savage avatar
Written by Rowan Savage
Updated over a week ago

What will be imported from Harvest to Runn

When the integration is turned on, we run two types of imports.

The first is a create data import, this is occurs when a new project or person is found in harvest that doesn't exists in Runn. This data will be imported once, and will not be kept in sync between the two systems, nor will we update Runn's data if the person/project already exists in Runn.

Projects

  • Project name

  • Client

  • Project type (if available)

  • Budget (only "Total project fees" budget type)

People

  • First name

  • Last name

  • Email

  • Role (Smart matching. Attempts create a role from harvest tags)

  • Cost (if available)

The second is the create and update data import. This will be imported daily and overwrite existing data within Runn.

Actual Hours (timesheet entries)

  • Billable hours

  • Non-billable hours

  • The project/person/role

Note:

  • Charge-out rates, Employment contracts, costs to business, time offs will NOT be synced in Runn. Please add these details in Runn directly while you are in the Runn account.

Step 1: Set-up

1. To enable the Harvest integration, log into your Runn account.

2. Click on your account name in the top right corner, then go to Settings > Integrations (you can also get there by following this link: https://app.runn.io/integrations)

3. Toggle on the Harvest integration:

4. Create a New Personal Access Token (suggested name: runn)


5. Copy Your Token & Account ID and head back to Runn.


6. Back in Runn, enter Your Token into the API Token field and the Harvest Account ID int the Account ID field.

You're now ready to import your Harvest data into Runn!


Step 2: Importing your client, project, and people data

Note: You'll need to import your clients, projects and people first, before you can import any timesheet data (sync actuals). This is so you can check and make sure you're happy with the imported data first.

1. Select Sync Clients & Projects and Sync People.

2. Click Save and Run. Your data should be imported within a few minutes.

3. Once the import is complete, the page will automatically refresh and you'll see the last sync date appear in the bottom left corner.

Note: If a person on your team has no role or multiple roles in Harvest, Runn will assign the role "Unknown". You will need to manually update the person's role in Runn before you can start using the timesheet sync.

How the Harvest integration works

Our Harvest integration allows you to import your clients, projects, and people from Harvest.

Once a day, Runn automatically imports any new clients, projects, and people you have added to Harvest.

You may also run the import manually if you have created something new in Harvest and need to see it in Runn immediately.

You can find the button to do this at the top of the respective Client, Projects, and People pages.

Our Harvest Integration is a one-way, daily sync. This means:

  • If a client, project, or person exists in Harvest but not in Runn, it will automatically bring them across. 

  • All Harvest timesheets will automatically synchronize daily. See the Harvest Actuals Integration page for more details.

  • If you updated or delete a client, project, or person in either Harvest or Runn, we will not update the details between the two. They remain separate after being imported.

  • Any client, project, or person created in Runn will not appear in Harvest. They must be created in Harvest separately.

  • We match purely on the ID created in Harvest. If you create the same client, project, or person in both Runn and Harvest, they will be duplicated.

  • If you have an existing client, project, or person in Runn, and want to ensure a duplicate isn't made from Harvest, you can manually enter the Harvest ID (external reference) within Runn. You can do that when editing a client, project, or person.

FAQs

I created a client, project, or person in Harvest and it doesn't appear in Runn.

Try going to the Clients, Projects, or People list page in Runn and click the "Import from Harvest" button. Wait 5 minutes and check if the item you created appears.

If these Button is missing, then you may not have the importing function turned on.

A person has the role "Unknown" what happened?
If a person has no role or multiple roles in Harvest we will assign the role "Unknown". You will need to manually update the person's role.

There is a duplicate client, project, or person.

You must decide which item to keep. You should base this on which item has data attached to it. For example, if a project or person has assignments and another one doesn't. You should delete the item without the assignments.

You can then manually add a reference for Harvest to this item (see above), and it will no longer be duplicated. In the future, always ensure that, if an item is added to Runn first and then added to Harvest, you update the external ID for the item in Runn.

I created a client, project, or person in Runn, and now want to create it in Harvest. How can I avoid duplicates?

You can avoid duplications by ensuring that any item that is created in Runn first, and then in Harvest, has the Harvest ID attached.

If you create the item in Harvest first, simply click the "Update client, project, or person from Harvest" button and within a few minutes, the new item from Harvest will appear in Runn.

How can I delete all imported data?

You will need to manually remove any of the clients, projects pr people you have imported, and no longer need.

If I have a large amount of existing data within Runn, how can I make sure no duplicates appear?
You can manually enter the harvest id (found in the harvest URL or from the API) into Runn.

How can I ignore a specific project (such as leave?)

After importing a project, you can add the tag sync_off to the project.
If you have data for this project, you can duplicate the project, ensure the harvest id is in the references, and then delete the original. Now add sync_off and it should not sync on next update.

I see 0 has been entered for our staff - even thought their timesheets haven't been completed in Harvest

To ensure that Runn shows the same totals as Harvest, when you enable an integration we turn on an account setting called "Autofill Actuals". At the end of each week, we will automatically set any dates we are missing with 0 hours completed. This will remain until the user enters their real hours into Harvest - in which case 0 will be overwritten within 24 hours. For more detailed explanation of missing actuals, or to turn it off see our Missing Actuals help doc.

Additional actuals appearing in Runn compared to Harvest

There are some edge cases that our integration does not handle. However this should be rare, and easily picked up by a project manager who is keeping an eye on the project performance.

The two main ones you may encounter are:

  1. Someone adds time to the wrong project. Then deletes the time and adds it to a different project.

    1. Unfortunate Runn is unable to delete times off - as the API we use does not inform us of deletions. Instead this will need to be manually corrected in Runn.

  2. Someone has time repeated against two roles in a project

    1. Runn will try and find the best role to put the time against. However, if someone changed roles half-way through a project (such as intermediate to senior) and after the data was imported, someone went back and changed their role on the project - next time we run the import - it will see there is no data against their new role and import that as well. To fix this you can delete the time entries against the old role.

    2. You can avoid this situation by pro-actively change their role on the project before the change occurs. For example, if they were going to change to senior in two weeks. I would update the plan to have them as senior starting from two weeks. Then Runn will match up the role correctly based on the role they were assigned on the day of the actual.

Did this answer your question?