Resources · n8n integration

Harvest n8n integrationAutomate Harvest with n8n.

How much of Harvest can n8n actually drive? The Harvest n8n integration exposes 51 operations across 10 resources, clients, contacts, estimates, expenses and time entries included. No Harvest trigger node exists, so a Schedule Trigger or another app opens the workflow.

Verified Trustpilot reviews · AI, automation & growth agency

Why automate

What can the Harvest n8n integration actually automate?

The Harvest node ships inside n8n and turns the Harvest API into ready made steps: pick a resource, pick an operation, fill the fields the node asks for. It covers 51 operations across 10 resources, so clients, contacts, projects, tasks, estimates, invoices, expenses, users and time entries are all reachable from a workflow, without writing a single API call by hand.

The first scenario is the end of month billing run. A Schedule Trigger fires on the first working day, Get Many time entries pulls everything logged since the last cutoff, and the workflow groups the hours per client before creating the invoice. The same run can drop a copy of the hours into Google Sheets so finance keeps a readable audit trail next to the accounting export.

The second one is client onboarding. A signed deal creates the client in Harvest, then the contact attached to it, then the project the team will log time against. Because every step returns the record it created, the client ID flows straight into the next node as an expression. A short message in Slack tells the team the project is open, and the account details land in the Notion page the delivery team already uses.

The third one watches margin. Get Many expenses with the Is Billed filter set to false lists what has been spent and never re-invoiced, project by project. Run it weekly and the gap between what a project costs and what the client pays stops being a surprise discovered three months later.

Two limits are worth knowing before building. Harvest has no trigger node in n8n, so nothing pushes events into a workflow: a Schedule Trigger at a fixed interval, an n8n Webhook called by another service, or the trigger of another tool has to open the run. And the node covers 10 resources, not the whole Harvest API. Anything missing, such as a resource the node does not expose, goes through the HTTP Request node, which calls any Harvest endpoint while reusing the same credential through predefined authentication.

If n8n itself is the new part, the n8n review covers what the tool does well and where it hurts, and the n8n training walks through building a first workflow end to end.

Connect

How do you connect Harvest to n8n?

  1. 01

    Create the Harvest credential

    In n8n, open the Credentials menu and add a Harvest credential. A credential is the stored login n8n reuses on your behalf, created once and available in every workflow from the node dropdown. Harvest supports two methods: an API access token and OAuth2. Pick the access token for a workflow that runs under one account, and OAuth2 when the connection has to follow a specific Harvest user.

  2. 02

    Generate a personal access token

    For the token method, create a personal access token in your Harvest account and paste it into the Access Token field of the credential. Harvest documents the exact path in its Personal Access Token authentication page. A Harvest account is the only prerequisite. Save the credential, and n8n keeps it encrypted for every later workflow, on n8n Cloud or on a self-hosted instance alike.

  3. 03

    Select the account in the node

    Drop the Harvest node on the canvas, select the credential, then set Account Name or ID. Every one of the 51 operations asks for it, because a Harvest login can belong to several accounts and the API needs to know which one. The field reads the list from your credential, so pick the account by name instead of typing an ID. An expression works too when the account comes from an earlier node.

Actions

Every Harvest operation the node exposes

The Harvest node exposes 51 operations across 10 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.

Resources × operations matrix
ResourceCreateGetGet ManyUpdateDeleteCreate via DurationCreate via Start and End TimeDelete External ReferenceMeRestartStop
Client✓✓✓✓✓
Company✓
Contact✓✓✓✓✓
Estimate✓✓✓✓✓
Expense✓✓✓✓✓
Invoice✓✓✓✓✓
Project✓✓✓✓✓
Task✓✓✓✓✓
Time Entry✓✓✓✓✓✓✓✓✓
User✓✓✓✓✓✓

Client

5 operations
01

Create a client

client.create

What you see in n8n

Notes & use cases

A new client record lands in Harvest and comes back with its ID, which the rest of the workflow reuses to attach contacts, projects or invoices.

Key parameters

  • Account Name or ID: the Harvest account the client belongs to, picked from the list the credential loads.
  • Name: the name of the client, the only content the node truly requires.
  • Currency: sets the currency used for that client, which later estimates inherit when they leave it empty.
  • Address: a textual address that accepts line breaks, useful for the block printed on documents.
Use cases
a signed contract in your CRM creates the client here, and the returned ID feeds the project created in the next node.
02

Delete a client

client.delete

What you see in n8n

Notes & use cases

The node sends a deletion for the client whose ID you pass, and the record leaves the account.

Key parameters

  • Client ID: the ID of the client you want to delete, usually {{ $json.id }} from the node that listed or created it.
  • Account Name or ID: the account holding that client, since an ID only makes sense inside one account.
Use cases
cleaning up the test clients created while a workflow was being built, by listing them first and passing each ID into this operation. Archiving is the safer route for a real client: Update a client with Is Active set to false keeps the history instead of dropping it.
03

Get data of a client

client.get

What you see in n8n

Notes & use cases

One ID in, the full client record out: name, address, currency and active flag, ready to be read by the following nodes.

Key parameters

  • Client ID: the ID of the client you are retrieving, not its name, which the API does not accept here.
  • Account Name or ID: the Harvest account to read from.
Use cases
an invoice arrives in a workflow carrying only a client ID, and this step resolves it into a readable name and currency before the message is sent to the team.
04

Get data of all clients

client.getAll

What you see in n8n

Notes & use cases

Listing the client book is where Return All changes everything: enabled, n8n walks through the API pages and returns every client; disabled, it stops at the number set in Limit.

Key parameters

  • Return All: on for a complete export, off when a preview of the first few clients is enough.
  • Limit: the maximum number of clients returned when Return All stays off.
  • Is Active: true keeps active clients only, false returns the archived ones.
  • Updated Since: only clients modified after that date and time, which turns a full export into an incremental sync.
Use cases
a nightly export of active clients into a spreadsheet the sales team filters.
05

Update a client

client.update

What you see in n8n

Notes & use cases

Changing a client that already exists means passing its ID and only the fields that move, since anything left empty in Update Fields stays as it was.

Key parameters

  • Client ID: the ID of the client to update, the pivot of the whole operation.
  • Is Active: false archives the client instead of deleting it, true brings it back.
  • Name: the client name, for a rebrand or a legal entity change.
  • Address: the postal address, including line breaks.
Use cases
a client that has not ordered for a year gets archived automatically, once a list step has found it.

Company

1 operation
06

Retrieve the company for the currently authenticated user

company.get

What you see in n8n

Notes & use cases

No ID to hunt for here. The operation returns the Harvest company behind the credential, which is the quickest way to confirm that the connection works and that it points at the right account.

Key parameters

  • Account Name or ID: the only field to fill, and the one that decides which company is read when the login covers several accounts.
Use cases
a first node placed at the top of a workflow as a health check, so a broken or expired credential fails on a harmless read instead of halfway through an invoicing run.

Contact

5 operations
07

Create a contact

contact.create

What you see in n8n

Notes & use cases

Contacts hang off a client in Harvest, so this operation always attaches the person to an existing company record.

Key parameters

  • First Name: required, even when the rest of the identity comes later.
  • Client ID: the ID of the client this contact belongs to, typically {{ $json.id }} from the client created just before.
  • Email: the contact address, the field that matters for anything you plan to send.
  • Title: the role of the person, handy when several people share one client.
Use cases
a form submission creates the client, then the billing contact attached to it, in two chained nodes.
08

Delete a contact

contact.delete

What you see in n8n

Notes & use cases

When someone leaves a client's team, this removes the person from the account without touching the client itself.

Key parameters

  • Contact ID: the ID of the contact you want to delete, which a list step usually provides.
  • Account Name or ID: the account where that contact lives.
Use cases
an HR or CRM workflow flags a departure, matches the person against the Harvest contact list, and removes the entry so invoices stop being addressed to someone who left.
09

Get data of a contact

contact.get

What you see in n8n

Notes & use cases

Pulling one contact back is the cheapest way to get an email address and a title without loading the whole list.

Key parameters

  • Contact ID: the ID of the contact you are retrieving.
  • Account Name or ID: the Harvest account to query.
Use cases
before an invoice reminder goes out, this step fetches the current address of the billing contact so the message reaches the person who actually pays, rather than a copy stored months ago in another tool.
10

Get data of all contacts

contact.getAll

What you see in n8n

Notes & use cases

The contact list comes back page by page, and the two filters decide how much of it the workflow has to read.

Key parameters

  • Return All: enabled, every page is fetched; disabled, the run stops at Limit.
  • Limit: the ceiling on returned contacts when Return All is off.
  • Updated Since: restricts the answer to records changed after a date and time.
  • Is Active: keeps active records, or returns the inactive ones when set to false.
Use cases
a weekly sync that only reads contacts touched since the last run, then updates the mailing list.
11

Update a contact

contact.update

What you see in n8n

Notes & use cases

Phone numbers, titles and even the client a person belongs to change more often than the contact itself, and Update Fields carries exactly what moved.

Key parameters

  • Contact ID: identifies the record to modify.
  • Client ID: moves the contact to another client, for a person who changed company.
  • Email: the new address, in the name@email.com form the field expects.
  • Phone Office and Phone Mobile: the two numbers stored separately, so updating one leaves the other alone.
Use cases
a CRM update pushes a promotion into Harvest by changing Title and Phone Office in one node.

Estimate

5 operations
12

Create an estimate

estimate.create

What you see in n8n

Notes & use cases

An estimate starts life attached to a client, and Harvest numbers it on its own unless the workflow imposes a number.

Key parameters

  • Client ID: the ID of the client this estimate belongs to, the only required content beyond the account.
  • Subject: the estimate subject, the line the client reads first.
  • Number: left empty, the number is generated automatically; filled, it follows your own numbering.
  • Tax: a percentage applied to the subtotal, written as 10.0 for ten percent.
  • Issue Date: defaults to today when the workflow leaves it out.
Use cases
a quote approved in a sales pipeline becomes a Harvest estimate with its subject and tax already set.
13

Delete an estimate

estimate.delete

What you see in n8n

Notes & use cases

Draft clean-up is the usual reason to call this one: the estimate matching the ID disappears from the account.

Key parameters

  • Estimate ID: the ID of the estimate you want to delete, which comes from a list step or from the creation that produced it.
  • Account Name or ID: the account the estimate belongs to.
Use cases
a workflow that creates estimates from a form has a rollback path: if a later step fails, the estimate created seconds earlier is deleted so no half finished document stays in front of the client.
14

Get data of an estimate

estimate.get

What you see in n8n

Notes & use cases

Before anything is sent to a customer, reading the estimate back gives its current state, amounts and subject as Harvest stores them.

Key parameters

  • Estimate ID: the ID of the estimate you are retrieving.
  • Account Name or ID: the Harvest account holding it.
Use cases
a follow-up workflow checks one estimate before acting, so a document already accepted never triggers the reminder email meant for a quote still waiting.
15

Get data of all estimates

estimate.getAll

What you see in n8n

Notes & use cases

Filtering by state is what makes this operation useful: the query can target only what is waiting for an answer.

Key parameters

  • State: draft, sent, accepted or declined, one value per query.
  • From and To: bound the period read.
  • Client ID: narrows the answer to one client.
  • Return All: on to page through everything, off to stop at Limit.
  • Page: the page number in pagination, starting at 1, for a manual walk through a long list.
Use cases
every Monday, list the estimates still in sent state and post the total to the sales channel.
16

Update an estimate

estimate.update

What you see in n8n

Notes & use cases

Amounts move between a first draft and a signature, and this operation rewrites only what the workflow provides.

Key parameters

  • Invoice ID: the label the node uses for the ID of the document to update, so the value to pass is the estimate ID returned by the creation or the list.
  • Discount: a percentage subtracted from the subtotal, 10.0 for ten percent.
  • Notes: additional notes printed on the estimate.
  • Purchase Order: the purchase order number the client asked to see.
Use cases
a negotiated discount is applied to the estimate without rebuilding it from scratch.

Expense

5 operations
17

Create an expense

expense.create

What you see in n8n

Notes & use cases

Four fields are non negotiable here, because Harvest books an expense against a project, a category and a date.

Key parameters

  • Project ID: the project the expense is charged to.
  • Expense Category ID: the category it is tracked against, an ID rather than a label.
  • Spent Date: the date the expense occurred, not the date the workflow runs.
  • Total Cost: the total amount, or Units when the cost is computed from a quantity.
  • Billable: true by default, so an internal cost has to set it to false explicitly.
Use cases
a receipt approved in an expense tool creates the matching line in Harvest, charged to the right project.
18

Delete an expense

expense.delete

What you see in n8n

Notes & use cases

Duplicate receipts are the common case: two imports of the same card statement, one line too many, and this operation removes it.

Key parameters

  • Expense ID: the ID of the expense you want to delete.
  • Account Name or ID: the account it was booked in.
Use cases
a deduplication workflow lists the expenses of the month, spots two lines with the same amount, project and date, and deletes the second one before it reaches an invoice.
19

Get data of an expense

expense.get

What you see in n8n

Notes & use cases

Reading a single expense back returns its amount, project, category and billable flag, which is often what a validation step needs.

Key parameters

  • Expense ID: the ID of the expense you are retrieving.
  • Account Name or ID: the Harvest account to read.
Use cases
an approval workflow receives an expense ID from a message, fetches the line, and routes it to a manager only when the total crosses the threshold the company set.
20

Get data of all expenses

expense.getAll

What you see in n8n

Notes & use cases

Eight filters make this the widest query of the resource, and combining them is what keeps the run short.

Key parameters

  • Is Billed: false lists what has not been invoiced yet, true what already has.
  • Project ID and Client ID: restrict the answer to one project or one client.
  • From and To: the period covered.
  • User ID: the person who logged the expenses.
  • Return All: on to collect every page, off to cap the result with Limit.
Use cases
a monthly margin report listing unbilled expenses per project.
21

Update an expense

expense.update

What you see in n8n

Notes & use cases

An expense is usually corrected after the fact, once someone notices the wrong project or a missing amount.

Key parameters

  • Invoice ID: the label the node gives to the ID of the record to update, so pass the expense ID here.
  • Project ID: rebooks the expense on another project.
  • Expense Category ID: changes the category it is tracked against.
  • Billable: flips a cost between billable and internal.
  • Spent Date: fixes a date typed wrong at capture.
Use cases
expenses imported with a default project get reassigned in bulk once the real project is known.

Invoice

5 operations
22

Create an invoice

invoice.create

What you see in n8n

Notes & use cases

Billing starts here. The node opens a new invoice in Harvest for a client and returns the created record with its identifier, ready for the next node.

Key parameters

  • Account Name or ID: the Harvest account to bill from, picked in the dropdown or passed as an ID with an expression, the n8n syntax that reads a field from the incoming item.
  • Client ID: the client the invoice belongs to.
  • Number: leave it empty in Additional Fields and Harvest generates the invoice number itself.
  • Payment Term: upon receipt, net 15, net 30, net 45 or net 60.
Use cases
raise the monthly retainer invoice for every active client at the start of the month, without opening Harvest.
23

Delete an invoice

invoice.delete

What you see in n8n

Notes & use cases

Deletion is final on the Harvest side, so this operation usually sits at the end of a cleanup branch guarded by an IF node.

Key parameters

  • Invoice ID: the invoice to remove, most often {{ $json.id }} coming from a Get Many step upstream.
  • Account Name or ID: the account that holds the invoice, since an ID from one Harvest account will not resolve in another.
Use cases
clear the draft invoices a test run produced, so the real billing month starts from a clean list.
24

Get data of an invoice

invoice.get

What you see in n8n

Notes & use cases

One invoice, one call. The node reads a single invoice and hands the full record to the rest of the workflow.

Key parameters

  • Invoice ID: the invoice you are retrieving, typically stored in the CRM record or carried by the item that triggered the run.
  • Account Name or ID: the Harvest account the lookup runs against.
Use cases
before a payment reminder goes out, read the invoice again and stop the branch if it has already moved to paid.
25

Get data of all invoices

invoice.getAll

What you see in n8n

Notes & use cases

This is the reporting workhorse of the Invoice resource. It lists invoices and pushes one item per invoice into the workflow.

Key parameters

  • Return All: on, n8n walks the pages of the Harvest API until every invoice is in; off, Limit caps how many come back.
  • State: a filter that keeps only draft, open, paid or closed invoices.
  • From and To: bound the period; Updated Since narrows a run to what changed since the last execution.
Use cases
build a weekly list of open invoices per client and send it to the person who chases payment.
26

Update an invoice

invoice.update

What you see in n8n

Notes & use cases

An invoice that already exists can still move. This operation edits it in place and returns the updated version.

Key parameters

  • Invoice ID: the invoice to modify. Everything else lives in Update Fields, so only what you fill gets touched.
  • Due Date: pushes the deadline; left alone, Harvest keeps the date it computed from the issue date.
  • Subject and Notes: the text a client reads on the document.
  • Tax and Tax2: percentages applied to the subtotal, written as 10.0 for ten percent.
Use cases
grant a two week extension on a late invoice and log the reason in the notes.

Project

5 operations
27

Create a project

project.create

What you see in n8n

Notes & use cases

Time entries attach to projects, which makes this operation the first step of most client onboarding flows.

Key parameters

  • Name and Client ID: what the project is called and who it belongs to.
  • Is Billable: whether the hours logged on it can end up on an invoice.
  • Bill By: none, People, Project or Tasks, the method Harvest uses to invoice the work.
  • Budget By: the email of the user, or the literal value none.
Use cases
when a deal is marked won in the CRM, open the matching Harvest project so the team can track time the same day.
28

Delete a project

project.delete

What you see in n8n

Notes & use cases

Removing a project is the hard version of archiving it. Reach for it only when the project should leave Harvest for good.

Key parameters

  • Project ID: the project to delete.
  • Account Name or ID: the account it lives in.
Use cases
a duplicate project created by two people on the same day gets removed once the time entries have been moved. If the goal is only to take a finished project out of the way, the Update operation and its Is Active field do the job without losing history.
29

Get data of a project

project.get

What you see in n8n

Notes & use cases

Reading a project gives the workflow its settings, from the client it belongs to down to the budget fields, before anything else happens.

Key parameters

  • Project ID: the project you are retrieving, often {{ $json.projectId }} taken from a time entry handled earlier.
  • Account Name or ID: the Harvest account to query.
Use cases
a monthly recap reads each project to get its name and notes, then writes the summary into the tool the client actually uses.
30

Get data of all projects

project.getAll

What you see in n8n

Notes & use cases

Pull the project list once and loop over it. Every project comes back as its own item.

Key parameters

  • Return All: on, every project comes back page after page; off, Limit decides how many.
  • Is Active: true keeps the live projects, false returns the archived ones.
  • Client ID: restricts the list to one client.
  • Updated Since: only projects touched after the date you pass.
Use cases
feed a dashboard that shows which active projects have no time logged this week.
31

Update a project

project.update

What you see in n8n

Notes & use cases

Budgets and rates change during a client relationship. This operation applies those changes to an existing project.

Key parameters

  • Project ID: the project to update; fields left empty in Update Fields stay as they are.
  • Budget and Budget Is Monthly: the hours allowed, and whether that allowance resets every month.
  • Hourly Rate: used when the project is billed by project hourly rate.
  • Is Active: set it to false to archive the project instead of deleting it.
Use cases
raise next year's budget on every renewed project in one scheduled run.

Task

5 operations
32

Create a task

task.create

What you see in n8n

Notes & use cases

Tasks are the activity labels a person picks when logging time, such as design or support. This operation adds one to the account.

Key parameters

  • Name: the only required field beyond the account, so the node stays short.
  • Default Hourly Rate: the rate applied when the task is added to a project, 0 unless you set it.
  • Is Default: on, the task is added automatically to future projects.
  • Billable By Default: whether the hours logged on it count as billable.
Use cases
create the task list of a new service line from a single validated source.
33

Delete a task

task.delete

What you see in n8n

Notes & use cases

Harvest drops the task from the account when this runs, which also removes it from the picker people use when tracking time.

Key parameters

  • Task ID: the task you want to delete.
  • Account Name or ID: the account it belongs to.
Use cases
a task created with a typo gets deleted right after the correct one is created, so nobody logs hours against the wrong label. For a task with history behind it, archiving through Update is the safer move.
34

Get data of a task

task.get

What you see in n8n

Notes & use cases

Use it to confirm what a task ID actually points to before another node writes anything.

Key parameters

  • Task ID: the task you are retrieving.
  • Account Name or ID: the account to read from.
Use cases
a time tracking form sends a task ID; the workflow reads the task, checks that it is still active, and only then creates the entry. It saves a support round trip when someone pastes an ID that no longer exists.
35

Get data of all tasks

task.getAll

What you see in n8n

Notes & use cases

The task list is short in most accounts, which makes it a good source for dropdowns and lookups built elsewhere.

Key parameters

  • Return All: on, the node collects the whole list; off, Limit stops it earlier.
  • Is Active: true for the tasks people can still pick, false for the archived ones.
  • Page: moves through the pages by hand when Return All stays off.
Use cases
refresh the task reference table used by an internal form every night.
36

Update a task

task.update

What you see in n8n

Notes & use cases

Renaming or repricing a task keeps every past time entry intact, unlike a delete.

Key parameters

  • Task ID: the task to update.
  • Name: the new label, visible immediately to the people tracking time.
  • Default Hourly Rate: the rate future projects will inherit.
  • Is Active: false archives the task without erasing its history.
Use cases
apply the new rate card across the task list in one run, then archive the tasks nobody has used since last year.

Time Entry

9 operations
37

Create a time entry via duration

timeEntry.createByDuration

What you see in n8n

Notes & use cases

When the workflow already knows how long something took, this is the operation that writes it to Harvest.

Key parameters

  • Project ID and Task ID: what the hours are charged to. Both are required, so keep a lookup in front of this node.
  • Spent Date: the date the time was spent, in ISO 8601 format.
  • Hours: the amount of time tracked.
  • User ID: defaults to the authenticated user, so set it when the entry belongs to someone else.
Use cases
log the duration of every closed support ticket against the client project it came from.
38

Create a time entry via start and end time

timeEntry.createByStartEnd

What you see in n8n

Notes & use cases

Same result, different input. Here Harvest gets two clock times and works out the duration itself.

Key parameters

  • Started Time and Ended Time: clock values such as 8:00am and 3:00pm. Left empty, the start defaults to the current time.
  • Spent Date: the ISO 8601 date the entry belongs to, which can differ from the day the workflow runs.
  • Notes: free text that explains the entry to whoever reviews it.
Use cases
turn a finished calendar meeting into billable time using the slot it occupied.
39

Delete a time entry

timeEntry.delete

What you see in n8n

Notes & use cases

Hours logged on the wrong project are worse than no hours at all. This operation takes the entry out of Harvest.

Key parameters

  • Time Entry ID: the entry you are deleting.
  • Account Name or ID: the account it was logged in.
Use cases
a nightly check lists the entries created by an automation that ran twice, keeps the first of each pair and deletes the rest, so the invoice built from those hours stays correct.
40

Delete a time entry’s external reference

timeEntry.deleteExternal

What you see in n8n

Notes & use cases

Narrower than it first looks. The entry stays in Harvest with its hours and notes; only the link to the outside record it came from is cut.

Key parameters

  • Time Entry ID: the entry whose external reference you are deleting.
  • Account Name or ID: the account holding the entry.
Use cases
a ticketing tool gets replaced, the old references point nowhere, and a scheduled workflow strips them one by one while the tracked time stays untouched.
41

Get data of a time entry

timeEntry.get

What you see in n8n

Notes & use cases

Reading a single entry gives the workflow the detail behind a line in a report.

Key parameters

  • Time Entry ID: the entry you are retrieving.
  • Account Name or ID: the account to read from.
Use cases
a manager flags one line in a weekly export; the workflow fetches that entry and posts its notes into the review thread, so the discussion happens with the same data on both sides.
42

Get data of all time entries

timeEntry.getAll

What you see in n8n

Notes & use cases

Everything invoicing and reporting needs comes out of this operation. Filters decide how much of the history comes with it.

Key parameters

  • Return All: on, n8n pages through the full history, which can be long on an old account; off, Limit keeps the run small.
  • From and To: the period the entries were spent in.
  • Is Billed: false isolates the hours not yet invoiced.
  • Is Running: true returns only timers still counting.
  • User ID and Client ID: narrow the list to one person or one client.
Use cases
collect last month's unbilled hours per client before the invoicing run.
43

Restart a time entry

timeEntry.restartTime

What you see in n8n

Notes & use cases

Harvest picks the timer back up on an entry that was stopped earlier, instead of creating a second one for the same work.

Key parameters

  • Time Entry ID: the stopped entry to restart. Harvest refuses the call if that entry is already running, so branch on the state before you send it.
  • Account Name or ID: the account the timer lives in.
Use cases
a developer reopens a ticket, and the timer that was already tracking it starts again rather than splitting the work in two lines.
44

Stop a time entry

timeEntry.stopTime

What you see in n8n

Notes & use cases

The opposite move, and the one that saves the most hours at the end of a month. It closes a timer that is still counting.

Key parameters

  • Time Entry ID: the running entry to stop. The call only works while it is running, so pair it with a Get Many filtered on Is Running.
  • Account Name or ID: the Harvest account concerned.
Use cases
every evening, close the timers people forgot, before they run through the night and ruin the billable total.
45

Update a time entry

timeEntry.update

What you see in n8n

Notes & use cases

Corrections belong here rather than in a delete followed by a fresh entry, because the entry keeps its place in the timeline.

Key parameters

  • Time Entry ID: the entry to fix.
  • Hours: the corrected amount of time tracked.
  • Started Time and Ended Time: the clock values, when the entry was created from a start and end pair.
  • Notes: the place to record why the line changed.
Use cases
round the hours of a finished ticket to the agreed increment and note the adjustment for the client.

User

6 operations
46

Create a user

user.create

What you see in n8n

Notes & use cases

Adds a person to the Harvest account and returns the new user record, identifier included.

Key parameters

  • Account Name or ID: the Harvest account the user lands in, picked from the dropdown or passed through an expression, meaning a value borrowed from a previous node, such as {{ $json.accountId }}.
  • First Name, Last Name and Email: the three identity fields Harvest asks for, the email box showing name@email.com as its example format.
  • Additional Fields: 13 optional settings, among them Is Admin, Default Hourly Rate and Weekly Capacity, counted in seconds and set to 126000 by default, which is 35 hours a week.
Use cases
a freelancer signs on Monday and the workflow opens the Harvest seat the same morning.
47

Delete a user

user.delete

What you see in n8n

Notes & use cases

Deletion here is final, so this operation belongs at the end of an offboarding run, once everything that had to be billed has been billed.

Key parameters

  • Account Name or ID: tells the node which Harvest account holds the person, from the list or from an expression.
  • User ID: the ID of the user you want to delete. Harvest expects that identifier, not an email address or a display name, so read it from an earlier step with {{ $json.id }}.
Use cases
a contract ends, the last invoice goes out, and the workflow closes the seat instead of leaving a dormant account in the roster.
48

Get data of a user

user.get

What you see in n8n

Notes & use cases

Fetches one user record from its identifier and passes the full profile down the workflow, which saves a manual lookup when only an ID has been travelling between nodes.

Key parameters

  • Account Name or ID: the Harvest account to query, selected in the node or resolved by expression.
  • User ID: the ID of the user you are retrieving, most often {{ $json.id }} when the value comes from a list step earlier in the run.
Use cases
a time entry arrives with a bare user identifier, and this step turns it into the person's record before anything gets posted or archived.
49

Get data of all users

user.getAll

What you see in n8n

Notes & use cases

Returns the people attached to an account, one item per user, which is the usual starting point for anything that loops over a team.

Key parameters

  • Account Name or ID: the account whose roster gets listed.
  • Return All: enabled, n8n follows every page of the Harvest API until the roster is complete; disabled, Limit caps how many users come back.
  • Filters: 3 options, Is Active to separate current people from archived ones, Updated Since to keep only records touched after a date, and Page to target a specific page of results.
Use cases
a monthly roster export that only keeps active people and drops the archived ones.
50

Get data of authenticated user

user.me

What you see in n8n

Notes & use cases

Reads back the profile tied to the credential itself, which is the shortest way to confirm that the token or the OAuth2 connection really reaches Harvest.

Key parameters

  • Account Name or ID: the only field to fill, and it doubles as a check that the credential can actually see that account.
Use cases
drop this node once after setting up the credential, run it, and read the output before building the rest of the workflow on top of a connection nobody tested.
51

Update a user

user.update

What you see in n8n

Notes & use cases

Changes what Harvest stores about someone already in the account, so rates, permissions and capacity move without creating a second record for the same person.

Key parameters

  • Account Name or ID: the account holding the record to edit.
  • Time Entry ID: the node labels the required identifier this way for this operation, and its description reads "The ID of the time entry to update".
  • Update Fields: 16 editable settings, including Email, First Name, Last Name, Is Active, Is Project Manager and Cost Rate.
Use cases
someone becomes a project manager, and one run flips Is Project Manager and Can Create Invoices together.
Need help

Need help automating Harvest with n8n?

A person reads every message.

FAQ

Harvest and n8n, the questions that come next

01Is the Harvest n8n integration free?
Yes on the n8n side. The Harvest node ships with n8n, so there is nothing to install and nothing extra to pay to use it, whether the workflow runs on n8n Cloud or on an instance you host yourself with Docker or npm under the Community Edition and its Sustainable Use licence. The same workflow behaves identically in both cases. What a Harvest subscription itself costs is a separate question, decided by your Harvest plan and not by n8n, and the node does not change it.
02What credentials do you need to connect Harvest to n8n?
A Harvest account, then one of two authentication methods. The simplest is an API access token: you create a personal access token in Harvest and paste it into the credential. The other is OAuth2, which requires declaring an application on the Harvest side before completing the web flow in n8n. Either way the credential is created once in the Credentials menu and reused by every workflow, since the node offers it in a dropdown. On top of that, each of the 51 operations asks for Account Name or ID, because one login can cover several Harvest accounts.
03What are the limits of the Harvest node in n8n?
Two of them matter. The node exposes 51 operations over 10 resources, which leaves the rest of the Harvest API outside its reach: anything it does not cover goes through the HTTP Request node, which calls any Harvest endpoint and reuses the same credential through predefined authentication. The second is pagination. List operations return one page unless Return All is enabled, and with it off the run stops at the number set in Limit, which quietly truncates an export that looked complete.
04Does Harvest trigger an n8n workflow in real time?
No, because Harvest has no trigger node in n8n. Nothing is pushed from Harvest into a workflow, so the run has to be opened another way. A Schedule Trigger at a fixed interval is the usual answer: it fires, a Get Many operation reads what changed, and the Updated Since filter keeps the result to records touched since the last pass. The alternatives are an n8n Webhook, an address another service calls when something happens on its side, or the trigger of another tool in your stack that already reacts to the event you care about.
05n8n or Make for automating Harvest?
It depends on three criteria, and neither tool wins on all of them. Hosting comes first: n8n runs on Cloud or on your own server, while Make is hosted only, so a team that has to keep Harvest data on its own infrastructure has one option. Cost model comes second: Make bills per operation, which is felt on workflows that loop through long lists of time entries or expenses. Visual logic comes third, and that one is a matter of habit more than capability. Try both on the same workflow before committing.