HaloPSA integration

HaloPSA is the priority-one PSA for Manage365. Two-way sync: Manage365 alerts become Halo tickets, Halo updates flow back into Manage365, and tech actions log time entries for billing.

Prerequisites

  • HaloPSA instance with API access enabled
  • An OAuth2 client in Halo: Config → Integrations → Halo API → Applications
  • Client ID, client secret, and Halo base URL

Connect

  1. In the MSP portal open Settings → Integrations → HaloPSA.
  2. Paste base URL (e.g. https://yourmsp.halopsa.com), client ID, client secret.
  3. Click Test connection. Manage365 does an OAuth token exchange; any failure is reported back with the exact Halo error.
  4. Save. The client secret is encrypted at rest (AES-256-GCM).

Company mapping

On save Manage365 pulls your Halo companies. Match each customer tenant to a Halo company. Auto-match by domain is attempted; exceptions are surfaced in a match-review table.

What syncs

  • Alerts → tickets — rule-driven: severity filter, tenant filter, alert-type filter. Each rule chooses board, type, priority, and ticket template.
  • Ticket updates → alert notes — Halo ticket status changes, new notes, and closures feed back into the Manage365 alert timeline.
  • Manage365 actions → time entries — user created, licence assigned, standard applied, etc. each log a time entry on the linked Halo ticket for billing.
  • Change requests → tickets — every change request opened in the white-label client portal creates a Halo ticket of the matching type.

Webhook mode

Prefer real-time over polling? Configure Halo to POST to Manage365's inbound webhook endpoint (details inSettings → Integrations → Inbound webhooks). Manage365 falls back to 15-min polling if webhooks aren't configured.

Rate limits

Halo's default is 60 req/min per client. Manage365 obeys the X-RateLimit-Remaining header and backs off automatically; heavy initial syncs of a large portfolio can take a few minutes but won't get you throttled.