HaloPSA setup
The HaloPSA template identifies callers against Halo end-users, journals each finished call as a new ticket with the call note attached as an Action, journals closed SMS conversations as tickets, mirrors Halo users into the phonebook, and can create a Halo user for unknown callers. It authenticates with OAuth2 client credentials — no interactive Authorize step.
Register an API application in Halo
In HaloPSA, go to Configuration → Integrations → HaloPSA API and view your applications, then register a new application for Exovo:
- Set the authentication method to Client ID and Secret (Services) and note the generated Client ID and Client Secret — the secret is shown once.
- Choose the agent to log in as. This matters: the application's effective rights are the intersection of the application's permissions and that agent's permissions. Pick (or create) an agent that can read users, and create tickets and actions if you want journaling.
- Grant the application the permissions you need — at minimum read access to users; add ticket/action creation for journaling and user creation for automatic contact creation.
Also note your Authorisation Server URL if your instance uses a dedicated one (common on on-premise installs — it's shown on the same API configuration page). Hosted instances normally authenticate against the main HaloPSA URL.
Configure the template in Exovo
On Admin → Integrations → CRM, choose HaloPSA and fill in:
- HaloPSA URL — your instance, e.g.
https://yourcompany.halopsa.com. - Authorisation Server URL — leave empty unless your instance has a separate one.
- Tenant Name — hosted instances only, and only if Halo requires it on token requests; otherwise leave empty.
- Client ID / Client Secret — from the application you registered.
Journaling options
Enable Call Journaling to log each finished external call, and set:
- Ticket Type ID — the numeric id of the Halo ticket type new call tickets should use. Ticket type ids are instance-specific; check yours in Halo's ticket type configuration.
- Action Outcome — the outcome name for the call note Action, matching an outcome that
exists on your instance (
Phone Callby default).
The ticket summary and details are templated fields — the defaults include direction, number, contact name, agent, duration, and (when available) the recording link, transcript, summary and sentiment. Chat Journaling logs each closed SMS conversation as a ticket carrying the transcript.
Contact creation
Enable contact creation to add a Halo user for callers the lookup doesn't match. New users need a Site ID to belong to — set the id of the site (e.g. your catch-all "unassigned" site) new contacts should land in.
Test it
Use the Test panel on the template page before trusting live calls: enter a phone number and inspect exactly what Halo returned, including the full request/response trace. A 401 means the client id/secret or authorisation URL is wrong; an empty result for a number you know exists usually means the application's agent lacks rights to read users.
Caller lookup searches Halo end-users (not agents) across their phone, mobile, home, site and fax numbers. Phonebook sync mirrors the same user list on a schedule.