Search all guides

Reference · Tools

HaloPSA integration

Manage clients, sites, tickets, and users in HaloPSA IT service management platform

Action Communication v1

The HaloPSA node manages the core records of an IT service desk — clients, sites, tickets and users — through the HaloPSA API. A typical build is opening a ticket automatically from a monitoring alert, attached to the right client and site, then updating it as the incident progresses.

Works as
Action
Tool name
halo_psa
Operations
5 — Create , Delete , Get , Get Many , Update
Parameters
46
Outputs
Output, Error
Credentials
HaloPSA API
Official docs
HaloPSA docs usehalo.com

What you can build with HaloPSA

  • Create a new client in HaloPSA.
  • Get all open tickets from HaloPSA.
  • Update a HaloPSA user email address.
  • Delete a site in HaloPSA.
  • List all HaloPSA clients filtered by search term.

Overview

HaloPSA is a professional services automation (PSA) and IT service management (ITSM) platform. This tool enables CRUD operations on clients, sites, tickets, and users. It uses OAuth2 client credentials for authentication and supports filtering, pagination, and simplified output modes.

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires HaloPSA API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Clientclient
Sitesite
Ticketticket
Useruser

Operations

Every resource offers the same five operations.

OperationValueDescription
CreatecreateCreate a new record
DeletedeleteDelete a record by ID
GetgetRetrieve one record by ID
Get ManygetAllList records, with filtering and pagination
UpdateupdateUpdate an existing record

Parameters

Client: Create

ParameterTypeRequiredDefaultDescription
Name (clientName)stringYes—The name of the client to create. Supports expressions like {{ $json.company }}.
Additional FieldscollectionNo{}Optional client attributes. Add only the ones you need.
— Account Status (inactive)optionsNofalseWhether the client account is active.
Options: false (Active), true (Inactive)
— NotesstringNo—Free-text notes stored on the client.
— VIP (is_vip)booleanNofalseWhether the client is VIP or not.
— WebsitestringNo—The client’s website URL.

Client: Get

ParameterTypeRequiredDefaultDescription
Client IDstringYes—The ID of the client. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Client: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the client list. Add only the filters you need.
— Active Status (activeStatus)optionsNoactiveWhich accounts to include.
Options: active (Active Only), all, inactive (Inactive Only)
— Text To Filter By (search)stringNo—Filter clients by your search string.

Client: Update

ParameterTypeRequiredDefaultDescription
Client IDstringYes—The ID of the client to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the client. Add only the ones you need.
— Account Status (inactive)optionsNofalseWhether the client account is active.
Options: false (Active), true (Inactive)
— NamestringNo—The client’s name.
— NotesstringNo—Free-text notes stored on the client.
— VIP (is_vip)booleanNofalseWhether the client is VIP or not.
— WebsitestringNo—The client’s website URL.

Client: Delete

ParameterTypeRequiredDefaultDescription
Client IDstringYes—The ID of the client. Supports expressions.

Site: Create

ParameterTypeRequiredDefaultDescription
Name (siteName)stringYes—The name of the site to create. Supports expressions.
Client IDstringYes—The ID of the client this site belongs to. Find in HaloPSA under Clients. Supports expressions.
Additional FieldscollectionNo{}Optional site attributes. Add only the ones you need.
— Main Contact (maincontact_name)stringNo—Name of the site’s main contact.
— NotesstringNo—Free-text notes stored on the site.
— Phone Number (phonenumber)stringNo—Telephone number for the site.

Site: Get

ParameterTypeRequiredDefaultDescription
Site IDstringYes—The ID of the site. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Site: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the site list. Add only the filters you need.
— Active Status (activeStatus)optionsNoallWhich sites to include.
Options: active (Active Only), all, inactive (Inactive Only)
— Text To Filter By (search)stringNo—Filter sites by your search string.

Site: Update

ParameterTypeRequiredDefaultDescription
Site IDstringNo—The ID of the site to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the site. Add only the ones you need.
— Client ID (client_id)stringNo—The ID of the client this site belongs to.
— Main Contact (maincontact_name)stringNo—Name of the site’s main contact.
— NamestringNo—Enter site name.
— NotesstringNo—Free-text notes stored on the site.
— Phone Number (phonenumber)stringNo—Telephone number for the site.

Site: Delete

ParameterTypeRequiredDefaultDescription
Site IDstringYes—The ID of the site. Supports expressions.

Ticket: Create

ParameterTypeRequiredDefaultDescription
Ticket Type ID (ticketType)stringYes—The ID of the ticket type. Find in HaloPSA under Configuration > Ticket Types. Note: types containing “Request”, “Offboarding”, “Onboarding”, “Other Hardware”, or “Software Change” may fail with 400 errors as they require CAB approval.
SummarystringYes—The summary/title of the ticket. Supports expressions.
DetailsstringYes—The details/description of the ticket. Supports expressions.
Additional FieldscollectionNo{}Optional ticket attributes. Add only the ones you need.
— Assigned Agent ID (agent_id)stringNo—The ID of the agent to assign. Find in HaloPSA under Configuration > Agents.
— Start Date (startdate)stringNo—The start date for the ticket (ISO 8601 format).
— Target Date (targetdate)stringNo—The target/due date for the ticket (ISO 8601 format).

Ticket: Get

ParameterTypeRequiredDefaultDescription
Ticket IDstringYes—The ID of the ticket. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Ticket: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the ticket list. Add only the filters you need.
— Active Status (activeStatus)optionsNoallWhich tickets to include.
Options: active (Active Only), all, inactive (Inactive Only)
— Text To Filter By (search)stringNo—Filter tickets by your search string.

Ticket: Update

ParameterTypeRequiredDefaultDescription
Ticket IDstringNo—The ID of the ticket to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the ticket. Add only the ones you need.
— Assigned Agent ID (agent_id)stringNo—The ID of the agent to assign. Find in HaloPSA under Configuration > Agents.
— DetailsstringNo—The details/description of the ticket.
— Start Date (startdate)stringNo—The start date for the ticket (ISO 8601 format).
— SummarystringNo—The summary/title of the ticket.
— Target Date (targetdate)stringNo—The target/due date for the ticket (ISO 8601 format).

Ticket: Delete

ParameterTypeRequiredDefaultDescription
Ticket IDstringYes—The ID of the ticket. Supports expressions.

User: Create

ParameterTypeRequiredDefaultDescription
Name (userName)stringYes—The name of the user to create. Supports expressions.
Site IDstringYes—The ID of the site the user belongs to. Find in HaloPSA under Clients > Sites. Supports expressions.
Additional FieldscollectionNo{}Optional user attributes. Add only the ones you need.
— Email (emailaddress)stringNo—The user’s email address.
— NotesstringNo—Free-text notes stored on the user.
— PasswordstringNo—Must be at least 8 characters long and contain at least one letter, one number or symbol, one upper case and one lower case character.
— SurnamestringNo—The user’s surname.
— User Is Inactive (inactive)booleanNofalseWhether the user account is inactive.

User: Get

ParameterTypeRequiredDefaultDescription
User IDstringYes—The ID of the user. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

User: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the user list. Add only the filters you need.
— Active Status (activeStatus)optionsNoallWhich users to include.
Options: active (Active Only), all, inactive (Inactive Only)
— Text To Filter By (search)stringNo—Filter users by your search string.

User: Update

ParameterTypeRequiredDefaultDescription
User IDstringNo—The ID of the user to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the user. Add only the ones you need.
— Email (emailaddress)stringNo—The user’s email address.
— NamestringNo—Enter user name.
— NotesstringNo—Free-text notes stored on the user.
— PasswordstringNo—Must be at least 8 characters long and contain at least one letter, one number or symbol, one upper case and one lower case character.
— Site ID (site_id)stringNo—The ID of the site to assign the user to. Find in HaloPSA under Clients > Sites.
— SurnamestringNo—The user’s surname.
— User Is Inactive (inactive)booleanNofalseWhether the user account is inactive.

User: Delete

ParameterTypeRequiredDefaultDescription
User IDstringYes—The ID of the user. Supports expressions.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The HaloPSA record is merged into the incoming item JSON at the top level, so the fields you sent in pass through and binary data is forwarded.

OperationOutput items
create, updateOne item — the record HaloPSA returns. Simplify does not apply to writes, so the full record comes back.
getOne item — the record, trimmed by Simplify when it is on.
getAllFans out — one output item per record. Return All pages through the whole result set; otherwise up to Limit records.
deleteOne item — HaloPSA’s delete response.

Simplify keeps only the fields that matter for most workflows, and differs per resource:

ResourceFields kept when Simplify is on
Clientid, name, notes, is_vip, website
Siteid, name, client_id, maincontact_name, notes, phonenumber
Ticketid, summary, details, agent_id, startdate, targetdate
Userid, name, site_id, emailaddress, notes, surname, inactive

Turn Simplify off when a downstream node needs a field that is not in that list.

Example Configuration

Get one client, simplified:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "client",
    "operation": "get",
    "clientId": "123",
    "simplify": true
  }
}

List active clients matching a search string:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "client",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "simplify": true,
    "filters": {
      "activeStatus": "active",
      "search": "Acme"
    }
  }
}

Update a client:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "client",
    "operation": "update",
    "clientId": "123",
    "updateFields": {
      "name": "Acme Corporation Ltd",
      "notes": "Updated company name after incorporation",
      "website": "https://acmecorp.com",
      "is_vip": true
    }
  }
}

Create a site under a client returned by an upstream node:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "site",
    "operation": "create",
    "siteName": "Acme Headquarters",
    "clientId": "{{ $json.id }}",
    "additionalFields": {
      "maincontact_name": "John Smith",
      "phonenumber": "+1-555-0123",
      "notes": "Main office location"
    }
  }
}

Raise a ticket:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "ticket",
    "operation": "create",
    "ticketType": "1",
    "summary": "Network connectivity issues",
    "details": "Users are experiencing intermittent network connectivity issues in the main office.",
    "additionalFields": {
      "agent_id": "5",
      "startdate": "2024-01-15T09:00:00Z",
      "targetdate": "2024-01-15T17:00:00Z"
    }
  }
}

Create a user on a site:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "user",
    "operation": "create",
    "userName": "Jane Doe",
    "siteId": "789",
    "additionalFields": {
      "emailaddress": "jane.doe@acmecorp.com",
      "surname": "Doe",
      "password": "TempPassword123!",
      "notes": "New employee - IT Department",
      "inactive": false
    }
  }
}

List active users without trimming the response:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "user",
    "operation": "getAll",
    "returnAll": false,
    "limit": 100,
    "simplify": false,
    "filters": {
      "activeStatus": "active"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

This tool manages clients, sites, tickets, and users in the HaloPSA service management platform. It is ideal for creating, updating, retrieving, or deleting these resources when direct interaction with HaloPSA is required. The tool produces confirmation of successful operations or the requested resource data from HaloPSA.

Notes

  • Build the hierarchy in order. A site needs a Client ID and a user needs a Site ID, so create the client first, feed its id into the site, then feed the site’s id into the user.
  • The Name field has a different internal name per resource. In a JSON config it is clientName, siteName or userName depending on the resource — but plain name inside Update Fields.
  • Some ticket types need approval. Types whose names contain “Request”, “Offboarding”, “Onboarding”, “Other Hardware” or “Software Change” can be rejected with a 400 because HaloPSA requires CAB approval for them.
  • Simplify is on by default. If a downstream expression reads a field that is missing, turn Simplify off before assuming the record is incomplete.

Frequently asked questions

In what order do I have to create records?

Follow the hierarchy: a site needs a Client ID and a user needs a Site ID. Create the client first, feed its `id` into the site, then feed the site's `id` into the user. Trying to create a user before its site exists fails.

Why does the Name field have a different key depending on what I create?

Its internal name changes per resource — `clientName`, `siteName` or `userName` in a JSON configuration — while inside Update Fields it is plain `name`. Copy the key shown for the resource you selected rather than assuming.

Why is my ticket sitting unactioned?

Some ticket types require approval. Types whose names contain Request, Onboarding or Offboarding route into an approval flow, so the ticket exists but waits for a decision before progressing.

Which credential does it use?

A HaloPSA API credential. The same credential covers clients, sites, tickets and users, so one setup serves every operation on the node.

Build with HaloPSA

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need HaloPSA API credentials first.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.