> ## Documentation Index
> Fetch the complete documentation index at: https://university.triggr-app.com/llms.txt
> Use this file to discover all available pages before exploring further.

# HaloPSA

> Connect HaloPSA to Triggr with a Client ID and Secret API application, then map your clients to Halo clients.

Triggr works with Halo clients, users, tickets, ticket actions, sites, assets and recurring invoices.

## Set up HaloPSA

<Steps>
  <Step title="Create an agent for Triggr">
    In **Configuration > Teams & Agents > Agents**, create an agent such as `Triggr API` with access to every client and team your workflows use. Triggr can only see and change what this agent can.
  </Step>

  <Step title="Create an API application">
    In **Configuration > Integrations > Halo API**, click View Applications, then New:

    * Authentication Method: Client ID and Secret (Services)
    * Login Type: Agent, with Agent to log in as set to your Triggr agent
    * Permissions tab: tick all

    Save it, then copy the Client ID and Client Secret. You may not see the secret again.
  </Step>

  <Step title="Find your Halo address">
    API Details on the Halo API page shows your Resource Server, such as `https://yourcompany.halopsa.com/api`. Your Halo address is that URL without `/api`.
  </Step>
</Steps>

See Halo's guide to [creating API applications](https://usehalo.com/halopsa/guides/1823/).

## Connect it in Triggr

<Steps>
  <Step title="Open the integration">
    Go to **Integrations > HaloPSA** and click Configure on the Base Configuration card.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/integrations-common/base-configuration.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=bb81acb082055015f91beda7b4876f35" alt="The Base Configuration card with Status Not Configured, Admin Consent Not Required and a Configure button." width="2272" height="330" data-path="images/integrations-common/base-configuration.png" />
    </Frame>
  </Step>

  <Step title="Enter your Halo details">
    Enter your Halo address as BaseURL, plus the ClientID and ClientSecret. Leave TenantID blank, then click Save Configuration.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/halopsa/configure.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=2c5743efcdc4eb466cd3dca67918efd0" alt="The HaloPSA configuration window with BaseURL, ClientID, ClientSecret and TenantID fields, an Allow insecure TLS switch under Advanced, and a Save Configuration button." width="1344" height="1582" data-path="images/halopsa/configure.png" />
    </Frame>
  </Step>
</Steps>

Ticket steps run against the PSA set as Default PSA: in Triggr Core, Settings > General; in Studio, **Settings > Org Variables > Setup Wizard**. See [Connect your PSA](/core/get-started/connect-your-psa).

<Frame>
  <img src="https://mintcdn.com/triggr/_d7ojda9vf8IHE31/images/studio/clients/setup-wizard-psa.png?fit=max&auto=format&n=_d7ojda9vf8IHE31&q=85&s=6103f45917d3fc6f0e9720f875f2aad3" alt="The Setup Wizard's Preferred PSA question with cards for Halo PSA, ConnectWise PSA, Syncro PSA, Autotask by Datto and Other." width="2272" height="800" data-path="images/studio/clients/setup-wizard-psa.png" />
</Frame>

## Map your clients

On the Client Mapping card, click **Apply 100% Matches**, then choose the Halo client in Mapped to for anyone left. Triggr saves each match as the client's `haloId` variable.

<Frame caption="The Client Mapping card, shown here for ConnectWise Manage.">
  <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/integrations-common/client-mapping.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=da797e78dc917005df8e55c6b6cb166b" alt="The Client Mapping card with All, Mapped and Unmapped filters, Acme Corp mapped to Acme Corp with a 75% suggested mapping, and Globex unmapped with a Select ConnectWise Manage clients dropdown." width="2272" height="702" data-path="images/integrations-common/client-mapping.png" />
</Frame>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Authentication fails, or Halo rejected the configured credentials">
    BaseURL must start with `https://` and not end in `/api` or `/`. In Halo, check the application is enabled, uses Client ID and Secret (Services) and has the all permission, then re-copy the Client ID and Client Secret.
  </Accordion>

  <Accordion title="client ID is required (provide halo_client_id or ensure the current client is mapped in the HaloPSA integration)">
    A Create Ticket step ran for a client with no `haloId`. Map the client on the Client Mapping card, or set the step's Client ID to the client's `haloId` variable.
  </Accordion>

  <Accordion title="Clients are missing from Client Mapping">
    The Triggr agent can't see them. Give it access in Halo, then click Refresh on Client Mapping.
  </Accordion>

  <Accordion title="An action is refused">
    Give the Triggr agent the permission or team access the action needs.
  </Accordion>

  <Accordion title="Could not reach Halo, or Halo is hosted on-premises">
    Triggr needs a public address with a certificate from a trusted authority. Publish Halo there and allow [Triggr's IP addresses](/security/ip-allowlist) through your firewall.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.