Skip to main content

Setup Overview

Setting up the HaloPSA integration involves three main steps:

Creating an Agent Resource

Set up a dedicated agent in HaloPSA that Neo Agent will use for time entries, ticket assignments, and action attribution.

Creating an API Application

Configure API credentials with the right scopes for Neo Agent to access your HaloPSA system programmatically.

Connecting to Neo Agent

Configure the connection between your HaloPSA system and Neo Agent using API credentials and integration settings.

Webhook Events

The ticket events Neo Agent subscribes its webhook to, created for you on connect.

Optional Capabilities

Letting Neo Manage Email Rules

Let an agent block repeat spam senders at source with an Ignore Email rule, instead of closing the same spam ticket over and over. Needs one extra OAuth scope.

How Permissions Work

Neo Agent uses two layers of access control: the HaloPSA API application’s OAuth scopes set the maximum API access (configured during setup), while the Neo Agent dashboard controls what Neo actually does — which areas it can read, write, or ignore, and whether actions require technician approval.

Projects and Project Tasks

HaloPSA stores projects and project tasks as tickets, so an agent or workflow that processes tickets also runs on them. Its ticket filter decides whether it does. Filter on Ticket Type ID:
  • Only project work: add a rule Ticket Type ID is in list with your project ticket types, such as Project and Project Task.
  • No project work: add one rule Ticket Type ID != per project ticket type, all joined with AND.
The Ticket Type ID picker lists every ticket type in your HaloPSA, project types included.

Mandatory Fields

HaloPSA lets you mark any field mandatory, and it enforces that on API writes as well as in the web interface. When an agent creates something that omits one — an action on a ticket, a new ticket, a contact, a knowledge base article — Halo refuses the write with a message such as Categories is mandatory. Neo reads that refusal, tells the agent which field Halo asked for, and lets it look up the valid values for your instance and retry. Two things follow from this:
  • Keep the picklist behind a mandatory field populated. If Halo requires a category but the list has no option the agent may select, the write cannot succeed and the agent reports the refusal instead.
  • Categories is mandatory on an action is about the ticket. An action that carries an outcome makes Halo re-validate the ticket the outcome applies to, and Category is a ticket field. So this refusal usually means the ticket’s own Category 1 is empty, or holds a value that is not valid for the ticket’s type — a category the ticket kept after its type changed, for example. Halo shows such a ticket with a category ID but no category name.
  • That one needs a person, or permission. Category is a triage field, and most dispatch agents are told not to change a ticket’s triage fields. When the agent may not set it, the agent reports the blocker in its run summary and the ticket stays where it is until someone sets a valid Category. A note on the ticket is not a dependable record of that blocker: a note that carries an outcome is itself an action, and Halo refuses it for the same reason. Correcting the ticket, or allowing the agent to set categories, unblocks it.
A ticket that Neo itself creates works differently. The end-user Chat Agent and the Create New Ticket action fill a fixed set of fields, so no agent can add a missing one. When Halo refuses such a ticket because the ticket type makes a field mandatory (a Category, for example), the ticket is not created and your Neo Inbox gets a warning that names the field and the ticket type. Every ticket Neo creates with that ticket type and without that field fails the same way until you make the field optional for it in HaloPSA, or choose a ticket type that does not require it in the Neo setting that creates the ticket. If you would rather agents never have to supply a field, clear its mandatory flag in HaloPSA under Configuration for that entity.

Prerequisites

Before starting the integration setup, ensure you have:
  • Admin Access: Administrative access to your HaloPSA system (Configuration section)
  • API Access: An active HaloPSA subscription with API access enabled
  • Named Licence: An available agent licence for the Neo Agent resource