- Home
- Resources
- Integrations
- HaloPSA
HaloPSA n8n integrationAutomate HaloPSA with n8n.
HaloPSA holds your clients, sites, tickets and users, and n8n can write to all four. The HaloPSA n8n integration ships as one node with 20 operations spread over 4 resources, and no trigger of its own. Built for service desk teams who already live in the tool every day.
Verified Trustpilot reviews · AI, automation & growth agency
What does the HaloPSA n8n integration change for a service desk?
The HaloPSA n8n integration is a single node, shipped with n8n, that calls the HaloPSA API for you. It covers 4 resources, client, site, ticket and user, with 20 operations in total: create, read one, read many, update and delete on each of them.
Nothing to install, no plugin to maintain. You pick the resource, pick the operation, fill the fields the node asks for, and the API call is built for you.
The first thing most teams wire up is ticket intake. A message lands in Gmail, a workflow reads it, and ticket.create opens the ticket with its Summary, its Details and a Ticket Type picked from the list. The ticket number never gets typed twice, and the requester gets an answer while the thread is still warm.
The second one is account structure. When a customer signs, client.create opens the record, site.create attaches the location, and user.create registers the contacts who will raise tickets from that site. Three operations, one workflow, and nobody has to remember the order at eight in the morning.
The third is reporting. ticket.getAll and client.getAll both accept Return All, so a scheduled workflow can pull the whole list and drop it into Google Sheets before the weekly review, with a summary line going out on Slack.
One thing to plan for: HaloPSA has no trigger node in n8n. A workflow that involves it starts somewhere else, with a Schedule Trigger running at a fixed interval, with an n8n Webhook called by another service, or with the trigger of a different tool. That is a design choice to make early, not a blocker.
For pagination, Return All walks through the pages the API returns and Limit caps the result when it is off. And when an endpoint of the HaloPSA API has no matching operation in the node, the HTTP Request node calls it directly, reusing the same credential through predefined authentication.
If you are still comparing platforms, the n8n review goes through the trade-offs, and the n8n training covers expressions and error handling, the two things that decide whether a service desk automation survives its first month.
How do you connect HaloPSA to n8n?
- 01
Register the application in HaloPSA
Open Configuration, then Integrations, then Halo API, and go to API Details. Register an application there to get a Client ID and a Client Secret. n8n recommends choosing
Client Credentialsas the Authentication Method and using theallpermission, so the node is not blocked halfway through a workflow on a call it was never allowed to make. - 02
Copy the two server URLs
The same API Details screen shows your HaloPSA Authorisation Server URL and your Resource Server URL. They are two different values and the node needs both: one to obtain the token, the other to reach your data. Copy them exactly as displayed, including the scheme, rather than rebuilding them from your HaloPSA address.
- 03
Create the credential in n8n
In the Credentials menu, add the HaloPSA API key credential, a stored set of connection details you create once and reuse in every workflow. Set Hosting Type to On Premise Solution if Halo runs on your own server, or to Hosted Solution Of Halo if Halo hosts it. With the hosted option, you also fill in your Tenant name, which the same API Details screen gives you.
What can the HaloPSA node do?
The HaloPSA node exposes 20 operations across 4 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete |
|---|---|---|---|---|---|
| Client | ✓ | ✓ | ✓ | ✓ | ✓ |
| Site | ✓ | ✓ | ✓ | ✓ | ✓ |
| Ticket | ✓ | ✓ | ✓ | ✓ | ✓ |
| User | ✓ | ✓ | ✓ | ✓ | ✓ |
Operations index
Client
5 operationsCreate a client
client.createWhat you see in n8n
Notes & use cases
This operation opens a new client record in HaloPSA and returns what the API sends back about it.
Key parameters
- Name: the client name, and the only required field. Type it in, or read it from an earlier node with an expression, the n8n syntax that pulls a value out of the incoming item.
- VIP: a boolean in Additional Fields that records whether the client is VIP or not.
- Website: optional, and worth filling when the same company shows up twice in a list.
Delete a client
client.deleteWhat you see in n8n
Notes & use cases
Removing a client record takes a single field. Hand the node the identifier and the record goes.
Key parameters
- Client ID: the identifier of the record to remove. It is an ID, not a company name, so read it from a previous step with something like
{{ $json.field }}instead of typing it by hand.
Get a client
client.getWhat you see in n8n
Notes & use cases
Point the node at one client and it brings that record back, ready for whatever comes next in the workflow.
Key parameters
- Client ID: the record to read.
- Simplify: switched on, n8n returns a simplified version of the response instead of the raw data, which makes the next nodes much quicker to map.
Get many clients
client.getAllWhat you see in n8n
Notes & use cases
Instead of a single record, this one lists clients, page after page when you ask for it.
Key parameters
- Return All: on, n8n walks through every page of clients the API hands back; off, Limit sets the maximum number returned.
- Active Status: Active Only keeps active customers, Inactive Only keeps the inactive ones, All returns both.
Update a client
client.updateWhat you see in n8n
Notes & use cases
Existing record, new values. The node sends the fields you fill in the Update Fields collection.
Key parameters
- Client ID: which record the change lands on.
- VIP: the same boolean as on creation, so an account can be promoted later.
- Notes: free text, useful for recording why the change happened.
Site
5 operationsCreate a site
site.createWhat you see in n8n
Notes & use cases
A site always hangs off a client, so this call needs both pieces before it can run.
Key parameters
- Name: the site name.
- Client ID: the client the site belongs to.
- Select Client by ID: a boolean that states whether the client can be selected by ID.
- Phone Number and Main Contact: both optional, in Additional Fields, and both worth filling for a location an engineer may have to call.
Delete a site
site.deleteWhat you see in n8n
Notes & use cases
Drop a location out of a client structure in one call. The operation asks for nothing beyond the identifier, which makes it easy to chain after a check step.
Key parameters
- Site ID: the site to remove.
Get a site
site.getWhat you see in n8n
Notes & use cases
Reading a single site gives you its record on its own, without pulling the whole client structure.
Key parameters
- Site ID: the site to read.
- Simplify: returns a simplified version of the response instead of the raw data.
Get many sites
site.getAllWhat you see in n8n
Notes & use cases
Sites pile up quickly on a growing account, and this operation is how you get the list back.
Key parameters
- Text To Filter By: filters sites by your search string, which is the fastest way to find a location when you only know part of its name.
- Return All and Limit: fetch every page, or stop at a set number of sites.
Update a site
site.updateWhat you see in n8n
Notes & use cases
Changing a site record works through the Update Fields collection, and the identifier sits outside it.
Key parameters
- Site ID: the node does not mark it as required, so fill it in yourself to say which site the change targets.
- Client ID: moves the site under another client.
- Main Contact: the name recorded for the location.
Ticket
5 operationsCreate a ticket
ticket.createWhat you see in n8n
Notes & use cases
Tickets are where this node earns its keep. Three fields are required, and the ticket exists.
Key parameters
- Ticket Type Name or ID: choose it from the list, or specify an ID using an expression when the type depends on the incoming data.
- Summary: the one line an agent reads in the queue.
- Details: the body of the request.
- Target Date: optional, in Additional Fields, and the field that decides where the ticket sits in a date sorted view.
Delete a ticket
ticket.deleteWhat you see in n8n
Notes & use cases
Duplicate tickets happen, usually when a workflow retries a step that had already succeeded. This operation clears them.
Key parameters
- Ticket ID: the ticket to remove, and the only field the operation takes.
Get a ticket
ticket.getWhat you see in n8n
Notes & use cases
Pull one ticket back by its identifier when a later step needs the current state rather than the state you saw earlier.
Key parameters
- Ticket ID: the ticket to read.
- Simplify: a simplified version of the response instead of the raw data, which keeps a notification template short.
Get many tickets
ticket.getAllWhat you see in n8n
Notes & use cases
Lists of tickets are the raw material of every report, and this is the operation that produces them.
Key parameters
- Return All: on, n8n chains through the pages until the queue is fully read; off, Limit caps how many tickets come back.
- Text To Filter By: filters tickets by your search string.
Update a ticket
ticket.updateWhat you see in n8n
Notes & use cases
Work moves, and so does the ticket. Update Fields carries the changes, the identifier stays outside the collection.
Key parameters
- Ticket ID: not marked required by the node, but it is what tells HaloPSA which ticket to change.
- Assigned Agent Name or ID: choose from the list, or specify an ID using an expression.
- Target Date: pushed back when the customer asks for more time.
User
5 operationsCreate a user
user.createWhat you see in n8n
Notes & use cases
Users sit under a site, which is why this operation asks for both a name and a site.
Key parameters
- Name: the user name.
- Site Name or ID: choose from the list, or specify an ID using an expression.
- Email and Surname: optional, in Additional Fields, and the pair that makes a user findable later.
- Password: if you set one, it needs at least 8 characters with a letter, a number or symbol, one upper case and one lower case character.
Delete a user
user.deleteWhat you see in n8n
Notes & use cases
Offboarding ends here. One identifier, one call, and the user record is gone from HaloPSA.
Key parameters
- User ID: the user to remove.
Get a user
user.getWhat you see in n8n
Notes & use cases
One user, one call. The node returns the record so you can check it before acting on it.
Key parameters
- User ID: the user to read.
- Simplify: a simplified version of the response rather than the raw data.
Get many users
user.getAllWhat you see in n8n
Notes & use cases
Listing users is how you answer the question every account review asks: who is allowed to raise tickets here?
Key parameters
- Simplify: keeps the response light when you only need names to compare.
- Active Status: Active Only, Inactive Only, or All.
- Return All and Limit: read every page, or stop early while you are testing.
Update a user
user.updateWhat you see in n8n
Notes & use cases
Moving a user or correcting their details goes through Update Fields, the widest collection of the four resources.
Key parameters
- User ID: the node leaves it optional, so set it to target the right person.
- Site Name or ID: choose from the list, or specify an ID using an expression, and the user follows their new location.
- User Is Inactive: a boolean, gentler than deletion when someone is only away.
Need help automating HaloPSA with n8n?
A person reads every message.


