HaloPSA
Before you start
Section titled “Before you start”- A HaloPSA API application that uses Client Credentials. The connection form’s help says to create it in HaloPSA under Configuration > Integrations > HaloPSA API. You need its client ID and client secret.
- Your HaloPSA address, for example
https://yourcompany.halopsa.com. The tenant and authentication address are only needed when the defaults don’t fit, such as on a self-hosted instance. - The application needs access to the records listed in What ZenTop Triage reads and writes.
- One HaloPSA instance can send intake to one ZenTop Triage workspace.
Connect HaloPSA
Section titled “Connect HaloPSA”Open Setup → Configuration → Integrations, then select HaloPSA under PSA. The general steps are in Integrations.
| Field | What to enter |
|---|---|
| Client ID | The identifier for the connection. |
| Client Secret | The corresponding secret. |
| Tenant | Optional. Leave blank to use the default described beside the field. |
| Resource URL | Your HaloPSA instance address. |
| Auth URL | Optional. Leave blank to use the default described beside the field. |
Test Connection checks that the application can sign in to HaloPSA. It doesn’t check what the application is allowed to read or change.
Automatic triage is turned on per team in Teams & Routing. Saving a team with intake on registers a HaloPSA webhook and a new-ticket notification. HaloPSA then notifies ZenTop Triage when a new ticket is logged. Tickets that move into an intake team later are picked up by a check every 5 minutes.
To limit intake to certain ticket types, choose Intake ticket types in the same step. Then, in HaloPSA, set each selected type’s default team to this team so new tickets land there.
What ZenTop Triage reads and writes
Section titled “What ZenTop Triage reads and writes”ZenTop Triage reads:
- tickets, their actions (including private notes), and time taken
- customers (of your selected customer types), users, and each customer’s primary and secondary technicians
- agents, their workdays, and qualifications
- teams, ticket types, statuses, the Category 1 tree, and priorities
- assets, contracts, holidays, approved leave, and appointments
ZenTop Triage writes:
- new tickets, from Triage and from alert sources
- ticket fields: team, status, ticket type, category, and agent, plus the summary when summary rewriting is on
- impact, urgency, and priority
- private notes, hidden from the end user
- appointments for assignments and escalations
- assets and the contract on a ticket, when those settings are on
- the webhook and notification used for intake
ZenTop Triage doesn’t delete tickets or actions.
HaloPSA terms in ZenTop Triage
Section titled “HaloPSA terms in ZenTop Triage”| In ZenTop Triage | In HaloPSA |
|---|---|
| Service scope | Team (Teams & Routing) |
| Classification | Ticket type, category, and category detail |
| Client company types | Customer types (default: every type, plus No type) |
| Client team | The customer’s primary and secondary technicians |
| Holidays | A calendar’s holiday list |
| Agreement attachment | Contracts |
| PSA Members | Agents |
Feature availability
Section titled “Feature availability”With HaloPSA, bundle and merge, search inside the PSA, and documentation PSA-link matching aren’t available. Priority comes from ZenTop Triage’s own table, because HaloPSA’s SLA rules don’t run when tickets are changed through the API. Private agent notes don’t count as touches for escalation thresholds. See Compare PSAs.
Troubleshooting
Section titled “Troubleshooting”| Message or symptom | What to check |
|---|---|
| “Invalid credentials — check your Client ID, Client Secret, and Tenant” | Check the application’s client ID and secret, and the Tenant if you set one. |
| “Halo auth endpoint returned status …”, or the connection timed out | Check Resource URL and Auth URL. |
| “Couldn’t load ticket types from HaloPSA.” | Shown in the intake step. Test the connection, then try again. |
| A notice that HaloPSA category filtering is on | ZenTop Triage shows the global Category 1 tree, because HaloPSA may not expose the allowed category list for that team or type. |
| “Failed to refresh holidays from HaloPSA.” | Recurring HaloPSA holidays aren’t supported. List their dates individually in HaloPSA, or use manual holidays. |
| “… saved, but intake callback registration failed” | ZenTop Triage couldn’t register the webhook, so intake (including the 5-minute check) is off for that team. Save the team again. |