Harvest

Online Time Tracking and Invoicing Software

Integrate the Harvest API with the Node API

Setup the Harvest API trigger to run a workflow which integrates with the Node API. Pipedream's integration platform allows you to integrate Harvest and Node remarkably fast. Free for developers.

Run Node Code with Node API on New Invoice Entry from Harvest API
Harvest + Node
 
Try it
Run Node Code with Node API on New Time Entry from Harvest API
Harvest + Node
 
Try it
Run Node Code with Node API on New Timesheet Entry from Harvest API
Harvest + Node
 
Try it
New Invoice Entry from the Harvest API

Emit new notifications when a new invoice is created

 
Try it
New Time Entry from the Harvest API

Emit new notifications when a new time entry is created

 
Try it
New Timesheet Entry from the Harvest API

Emit new notifications when a new timesheet entry is created

 
Try it
Create Timesheet Entry with the Harvest API
 
Try it
Run Node Code with the Node API

Write custom Node.js code and use any of the 400k+ npm packages available. Refer to the Pipedream Node docs to learn more.

 
Try it
Start Time Entry with the Harvest API

Restart a stopped timer entry. See docs here

 
Try it
Stop Time Entry with the Harvest API

Stop a timer entry. See docs here

 
Try it

Connect Harvest

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { axios } from "@pipedream/platform"
export default defineComponent({
  props: {
    harvest: {
      type: "app",
      app: "harvest",
    }
  },
  async run({steps, $}) {
    return await axios($, {
      url: `https://api.harvestapp.com/v2/users/me`,
      headers: {
        Authorization: `Bearer ${this.harvest.$auth.oauth_access_token}`,
        "Harvest-Account-Id": `${this.harvest.$auth.account_id}`,
        "User-Agent": `Pipedream.com`,
      },
      params: {
        account_id: `${this.harvest.$auth.account_id}`,
      },
    })
  },
})

Connect Node

1
2
3
4
5
6
7
// To use previous step data, pass the `steps` object to the run() function
export default defineComponent({
  async run({ steps, $ }) {
    // Return data to use it in future steps
    return steps.trigger.event
  },
})