---
title: "Actions: H"
description: "How to set up each action of the 8 apps starting with H."
label: "H"
generated: "the tool catalog in services/core/src/tool-catalog"
---


Apps starting with H. Add any of these from **Integrations → n8n → Add tools → Browse apps**; see [Set up an action](/build/set-up-actions) for each way a key is sent, and the [catalog index](/reference/actions) for every app.

## HaloPSA

- **n8n node:** [HaloPSA](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.halopsa/) (`n8n-nodes-base.haloPSA`, version 1), 20 actions.
- **n8n performs it:** runs on the n8n credential *HaloPSA API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/halopsa/)).
- **Veefore performs it:** not available. HaloPSA first exchanges the client ID and secret for a short-lived token; n8n performs it.

**HaloPSA in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a client | n8n performs it | `clientName` |
| Delete a client | n8n performs it | `clientId` |
| Get a client | n8n performs it | `clientId` |
| Get many clients | n8n performs it | — |
| Update a client | n8n performs it | `clientId` |
| Create a site | n8n performs it | `siteName`, `clientId` |
| Delete a site | n8n performs it | `siteId` |
| Get a site | n8n performs it | `siteId` |
| Get many sites | n8n performs it | — |
| Update a site | n8n performs it | — |
| Create a ticket | n8n performs it | `ticketType`, `summary`, `details` |
| Delete a ticket | n8n performs it | `ticketId` |
| Get a ticket | n8n performs it | `ticketId` |
| Get many tickets | n8n performs it | — |
| Update a ticket | n8n performs it | — |
| Create a user | n8n performs it | `userName`, `siteId` |
| Delete a user | n8n performs it | `userId` |
| Get a user | n8n performs it | `userId` |
| Get many users | n8n performs it | — |
| Update a user | n8n performs it | — |

## Harvest

- **n8n node:** [Harvest](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.harvest/) (`n8n-nodes-base.harvest`, version 1), 51 actions.
- **n8n performs it:** runs on the n8n credential *Harvest API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/harvest/)).
- **Veefore performs it:** 51 of 51 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Personal access token, Account ID.
- **Also sent:** Account ID in the `Harvest-Account-Id` header.
- **API address:** `https://api.harvestapp.com/v2`.
- **Get the key:** [help.getharvest.com](https://help.getharvest.com/api-v2/authentication-api/authentication/authentication/#personal-access-tokens)

**Harvest in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a client | `POST /clients` | `accountId`, `name` |
| Delete a client | `DELETE /clients/{id}` | `accountId`, `id` |
| Get data of a client | `GET /clients/{id}` | `accountId`, `id` |
| Get data of all clients | `GET /clients` | `accountId` |
| Update a client | `PATCH /clients/{id}` | `accountId`, `id` |
| Retrieve the company for the currently authenticated user | `GET /company` | `accountId` |
| Create a contact | `POST /contacts` | `accountId`, `firstName`, `clientId` |
| Delete a contact | `DELETE /contacts/{id}` | `accountId`, `id` |
| Get data of a contact | `GET /contacts/{id}` | `accountId`, `id` |
| Get data of all contacts | `GET /contacts` | `accountId` |
| Update a contact | `PATCH /contacts/{id}` | `accountId`, `id` |
| Create an estimate | `POST /estimates` | `accountId`, `clientId` |
| Delete an estimate | `DELETE /estimates/{id}` | `accountId`, `id` |
| Get data of an estimate | `GET /estimates/{id}` | `accountId`, `id` |
| Get data of all estimates | `GET /estimates` | `accountId` |
| Update an estimate | `PATCH /estimates/{id}` | `accountId`, `id` |
| Create an expense | `POST /expenses` | `accountId`, `projectId`, `expenseCategoryId`, `spentDate` |
| Delete an expense | `DELETE /expenses/{id}` | `accountId`, `id` |
| Get data of an expense | `GET /expenses/{id}` | `accountId`, `id` |
| Get data of all expenses | `GET /expenses` | `accountId` |
| Update an expense | `PATCH /expenses/{id}` | `accountId`, `id` |
| Create an invoice | `POST /invoices` | `accountId`, `clientId` |
| Delete an invoice | `DELETE /invoices/{id}` | `accountId`, `id` |
| Get data of an invoice | `GET /invoices/{id}` | `accountId`, `id` |
| Get data of all invoices | `GET /invoices` | `accountId` |
| Update an invoice | `PATCH /invoices/{id}` | `accountId`, `id` |
| Create a project | `POST /projects` | `accountId`, `name`, `clientId`, `isBillable`, `billBy`, `budgetBy` |
| Delete a project | `DELETE /projects/{id}` | `accountId`, `id` |
| Get data of a project | `GET /projects/{id}` | `accountId`, `id` |
| Get data of all projects | `GET /projects` | `accountId` |
| Update a project | `PATCH /projects/{id}` | `accountId`, `id` |
| Create a task | `POST /tasks` | `accountId`, `name` |
| Delete a task | `DELETE /tasks/{id}` | `accountId`, `id` |
| Get data of a task | `GET /tasks/{id}` | `accountId`, `id` |
| Get data of all tasks | `GET /tasks` | `accountId` |
| Update a task | `PATCH /tasks/{id}` | `accountId`, `id` |
| Create a time entry via duration | `POST /time_entries` | `accountId`, `projectId`, `taskId`, `spentDate` |
| Create a time entry via start and end time | `POST /time_entries` | `accountId`, `projectId`, `taskId`, `spentDate` |
| Delete a time entry | `DELETE /time_entries/{id}` | `accountId`, `id` |
| Delete a time entry’s external reference | `DELETE /time_entries/{id}/external_reference` | `accountId`, `id` |
| Get data of a time entry | `GET /time_entries/{id}` | `accountId`, `id` |
| Get data of all time entries | `GET /time_entries` | `accountId` |
| Restart a time entry | `PATCH /time_entries/{id}/restart` | `accountId`, `id` |
| Stop a time entry | `PATCH /time_entries/{id}/stop` | `accountId`, `id` |
| Update a time entry | `PATCH /time_entries/{id}` | `accountId`, `id` |
| Create a user | `POST /users` | `accountId`, `firstName`, `lastName`, `email` |
| Delete a user | `DELETE /users/{id}` | `accountId`, `id` |
| Get data of a user | `GET /users/{id}` | `accountId`, `id` |
| Get data of all users | `GET /users` | `accountId` |
| Get data of authenticated user | `GET /users/me` | `accountId` |
| Update a user | `PATCH /users/{id}` | `accountId`, `id` |

## Help Scout

- **n8n node:** [Help Scout](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.helpscout/) (`n8n-nodes-base.helpScout`, version 1), 13 actions.
- **n8n performs it:** runs on the n8n credential *HelpScout OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/helpscout/)).
- **Veefore performs it:** 13 of 13 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://api.helpscout.net/v2/oauth2/token`.
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://api.helpscout.net`.
- **Get the key:** [secure.helpscout.net](https://secure.helpscout.net/apps/custom/)

**Help Scout in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a conversation | `POST /v2/conversations` | `mailboxId`, `status`, `subject`, `type` |
| Delete a conversation | `DELETE /v2/conversations/{conversationId}` | `conversationId` |
| Get a conversation | `GET /v2/conversations/{conversationId}` | `conversationId` |
| Get many conversations | `GET /v2/conversations` | — |
| Create a customer | `POST /v2/customers` | — |
| Get a customer | `GET /v2/customers/{customerId}` | `customerId` |
| Get many customers | `GET /v2/customers` | — |
| Get customer properties | `GET /v2/customer-properties` | — |
| Update a customer | `PUT /v2/customers/{customerId}` | `customerId` |
| Get a mailbox | `GET /v2/mailboxes/{mailboxId}` | `mailboxId` |
| Get many mailboxes | `GET /v2/mailboxes` | — |
| Create a thread | `POST /v2/conversations/{conversationId}/{threadType}` | `conversationId`, `type`, `text`, `threadType` |
| Get many threads | `GET /v2/conversations/{conversationId}/threads` | `conversationId` |

## HighLevel

- **n8n node:** [HighLevel](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.highlevel/) (`n8n-nodes-base.highLevel`, version 2), 17 actions.
- **n8n performs it:** runs on the n8n credential *HighLevel OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/highlevel/)).
- **Veefore performs it:** 17 of 17 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://services.leadconnectorhq.com/oauth/token`.
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://rest.gohighlevel.com/v1`.
- **Get the key:** [app.gohighlevel.com](https://app.gohighlevel.com/settings/integrations)

**HighLevel in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create or update a contact | `POST https://services.leadconnectorhq.com/contacts/upsert/` | — |
| Delete a contact | `DELETE https://services.leadconnectorhq.com/contacts/{contactId}/` | `contactId` |
| Get a contact | `GET https://services.leadconnectorhq.com/contacts/{contactId}/` | `contactId` |
| Get many contacts | `GET https://services.leadconnectorhq.com/contacts/` | — |
| Update a contact | `PUT https://services.leadconnectorhq.com/contacts/{contactId}/` | `contactId` |
| Create an opportunity | `POST https://services.leadconnectorhq.com/opportunities/` | `contactId`, `name`, `status` |
| Delete an opportunity | `DELETE https://services.leadconnectorhq.com/opportunities/{opportunityId}` | `opportunityId` |
| Get an opportunity | `GET https://services.leadconnectorhq.com/opportunities/{opportunityId}` | `opportunityId` |
| Get many opportunities | `GET https://services.leadconnectorhq.com/opportunities/search` | — |
| Update an opportunity | `PUT https://services.leadconnectorhq.com/opportunities/{opportunityId}` | `opportunityId` |
| Create a task | `POST https://services.leadconnectorhq.com/contacts/{contactId}/tasks/` | `contactId`, `title`, `dueDate`, `completed` |
| Delete a task | `DELETE https://services.leadconnectorhq.com/contacts/{contactId}/tasks/{taskId}/` | `contactId`, `taskId` |
| Get a task | `GET https://services.leadconnectorhq.com/contacts/{contactId}/tasks/{taskId}/` | `contactId`, `taskId` |
| Get many tasks | `GET https://services.leadconnectorhq.com/contacts/{contactId}/tasks/` | `contactId` |
| Update a task | `PUT https://services.leadconnectorhq.com/contacts/{contactId}/tasks/{taskId}/` | `contactId`, `taskId` |
| Book appointment in a calendar | `POST https://services.leadconnectorhq.com/calendars/events/appointments` | `calendarId`, `locationId`, `contactId`, `startTime` |
| Get free slots of a calendar | `GET https://services.leadconnectorhq.com/calendars/{calendarId}/free-slots` | `calendarId`, `startDate`, `endDate` |

## Home Assistant

- **n8n node:** [Home Assistant](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.homeassistant/) (`n8n-nodes-base.homeAssistant`, version 1), 13 actions.
- **n8n performs it:** runs on the n8n credential *Home Assistant API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/homeassistant/)).
- **Veefore performs it:** 13 of 13 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Long-lived access token.
- **API address:** `https://{host}/api`.

**Home Assistant in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Get a screenshot | `GET /camera_proxy/{cameraEntityId}` | `cameraEntityId`, `binaryPropertyName`, `host` |
| Get the config | `GET /config` | `host` |
| Check the config | `POST /config/core/check_config` | `host` |
| Create an event | `POST /events/{eventType}` | `eventType`, `host` |
| Get many events | `GET /events` | `host` |
| Get a log for an entity | `GET /error_log` | `host` |
| Get all logs for an entity | `GET /logbook/{startTime}` | `host`, `startTime` |
| Call a service | `POST /services/{domain}/{service}` | `domain`, `service`, `host` |
| Get many services | `GET /services` | `host` |
| Create or update a state | `POST /states/{entityId}` | `entityId`, `state`, `host` |
| Get a state | `GET /states/{entityId}` | `entityId`, `host` |
| Get many states | `GET /states` | `host` |
| Create a template | `POST /template` | `template`, `host` |

## HubSpot

- **n8n node:** [HubSpot](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hubspot/) (`n8n-nodes-base.hubspot`, version 2.2), 31 actions.
- **n8n performs it:** runs on the n8n credential *HubSpot API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/hubspot/)).
- **Veefore performs it:** 31 of 31 actions, with a bearer token, sent as `Authorization: Bearer <token>`.
- **You enter:** Token.
- **API address:** `https://api.hubapi.com`.
- **Get the key:** [app.hubspot.com](https://app.hubspot.com/private-apps/)

**HubSpot in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a company | `POST /companies/v2/companies` | `name` |
| Delete a company | `DELETE /crm/v3/objects/companies/{companyId}` | `companyId` |
| Get a company | `GET /companies/v2/companies/{companyId}` | `companyId` |
| Get many companies | `GET /companies/v2/companies/paged` | — |
| Get recently created/updated companies | `GET /companies/v2/companies/recent/modified` | — |
| Search for a company by Domain | `POST /companies/v2/domains/{domain}/companies` | `domain` |
| Update a company | `PUT /companies/v2/companies/{companyId}` | `companyId` |
| Create or update a contact | `POST /contacts/v1/contact/createOrUpdate/email/{email}` | `email` |
| Delete a contact | `DELETE /contacts/v1/contact/vid/{contactId}` | `contactId` |
| Get a contact | `GET /contacts/v1/contact/vid/{contactId}/profile` | `contactId` |
| Get many contacts | `GET /contacts/v1/lists/all/contacts/all` | — |
| Get recently created/updated contacts | `GET /contacts/v1/lists/recently_updated/contacts/recent` | — |
| Search contacts | `POST /crm/v3/objects/contacts/search` | — |
| Add a contact to a list | `POST /contacts/v1/lists/{listId}/add` | `by`, `email`, `listId` |
| Remove a contact from a list | `POST /contacts/v1/lists/{listId}/remove` | `id`, `listId` |
| Create a deal | `POST /deals/v1/deal` | `stage` |
| Delete a deal | `DELETE /deals/v1/deal/{dealId}` | `dealId` |
| Get a deal | `GET /deals/v1/deal/{dealId}` | `dealId` |
| Get many deals | `GET /deals/v1/deal/paged` | — |
| Get recently created/updated deals | `GET /deals/v1/deal/recent/created` | — |
| Search for deals | `POST /crm/v3/objects/deals/search` | — |
| Update a deal | `PUT /deals/v1/deal/{dealId}` | `dealId` |
| Create an engagement | `POST /engagements/v1/engagements` | `type` |
| Delete an engagement | `DELETE /engagements/v1/engagements/{engagementId}` | `engagementId` |
| Get an engagement | `GET /engagements/v1/engagements/{engagementId}` | `engagementId` |
| Get many engagements | `GET /engagements/v1/engagements/paged` | — |
| Create a ticket | `POST /crm-objects/v1/objects/tickets` | `pipelineId`, `stageId`, `ticketName` |
| Delete a ticket | `DELETE /crm-objects/v1/objects/tickets/{ticketId}` | `ticketId` |
| Get a ticket | `GET /crm-objects/v1/objects/tickets/{ticketId}` | `ticketId` |
| Get many tickets | `GET /crm-objects/v1/objects/tickets/paged` | — |
| Update a ticket | `PUT /crm-objects/v1/objects/tickets/{ticketId}` | `ticketId` |

## Humantic AI

- **n8n node:** [Humantic AI](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.humanticai/) (`n8n-nodes-base.humanticAi`, version 1), 3 actions.
- **n8n performs it:** runs on the n8n credential *Humantic AI API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/humanticai/)).
- **Veefore performs it:** 3 of 3 actions, with the key in the query string, as `?apikey=<key>`.
- **You enter:** API key.
- **API address:** `https://api.humantic.ai/v1`.
- **Get the key:** [app.humantic.ai](https://app.humantic.ai/#/settings/hiring/api-keys)

**Humantic AI in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a profile | `POST /user-profile/create` | `userId` |
| Get a profile | `GET /user-profile` | `userId` |
| Update a profile | `POST /user-profile/create` | `userId` |

## Hunter

- **n8n node:** [Hunter](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hunter/) (`n8n-nodes-base.hunter`, version 1), 3 actions.
- **n8n performs it:** runs on the n8n credential *Hunter API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/hunter/)).
- **Veefore performs it:** 3 of 3 actions, with the key in the query string, as `?api_key=<key>`.
- **You enter:** API key.
- **API address:** `https://api.hunter.io/v2`.
- **Get the key:** [hunter.io](https://hunter.io/api-keys)

**Hunter in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Get every email address found on the internet using a given domain name, with sources | `GET /domain-search` | `domain` |
| Generate or retrieve the most likely email address from a domain name, a first name and a last name | `GET /email-finder` | `domain`, `firstname`, `lastname` |
| Verify the deliverability of an email address | `GET /email-verifier` | `email` |
