+
NinjaOne
HaloPSA RMM Integration Native & First-Party Included in every licence

Your RMM.
Your PSA.
One source of truth.

HaloPSA’s native NinjaOne integration syncs your clients, sites, and devices from NinjaOne into HaloPSA automatically. Alerts become tickets the moment they fire — with the device, client, and user already attached.

✓ Devices sync as Halo assets ✓ Real-time alert tickets ✓ No middleware required

NinjaOne alert → HaloPSA ticket (real-time)

NinjaOne Alert
🔔 CPU usage > 90% — LAPTOP-047
Client: Acme Corp  ·  Policy: Performance Monitor  ·  09:14:22
↓ Webhook (instant)
HaloPSA Ticket — Auto-created
CPU usage > 90% — Acme Corp
Device: LAPTOP-047 (Morgan’s Laptop) ✓
Client: Acme Corp ✓ matched
End user: Morgan Smith (last logged in)
Status: Auto-closed when alert resolved ✓
Alert resolved in Ninja → ticket closed in Halo automatically

Setup

Four steps to a connected RMM.

Configured entirely inside HaloPSA. The same structure applies to all Halo RMM integrations — learn it once with NinjaOne, apply it to any RMM.

1

Connect NinjaOne

Configuration → Integrations → NinjaOne. Enable the module, click Connect, authenticate with your NinjaOne credentials, and you’re linked.

2

Import organisations & locations

Map NinjaOne organisations to Halo customers and locations to sites. Do this before importing devices — otherwise assets land in a catch-all site instead of the right client.

3

Map & import devices

Configure field mappings (NinjaOne field → Halo asset field), set asset matching by serial number to avoid duplicates, then import all devices as Halo assets.

4

Enable alert webhooks

In NinjaOne, create a notification channel of type Webhook pointing to your Halo URL. Alerts fire as tickets in Halo the instant a policy condition is triggered.

Asset Sync

Every device in NinjaOne.
Every asset in Halo.

NinjaOne devices land in HaloPSA as fully structured assets — assigned to the right client, right site, right asset type. You decide exactly which fields carry over using the field mapping table.

Field mapping table

Map any NinjaOne field (system or custom) to any Halo asset field (system or custom). Only mapped fields are imported — you control exactly what lands in Halo.

Asset matching by serial number

If a device already exists in Halo (e.g. created via stock management before the NinjaOne agent was installed), Halo matches it by serial number instead of creating a duplicate.

End user matching

Halo reads the last logged-in user from NinjaOne (or a custom field) and links that user to the asset — so alert tickets know who the device belongs to, automatically.

Auto asset type creation

NinjaOne node classes (Workstation, Server, Network Device) map to Halo asset types. New types are created on demand if a node class hasn’t been seen before.

Field mapping table — example

NinjaOne Field Halo PSA Field
Name
Asset Number Recommended
Serial Number
Serial Number
OS Name
Operating System
Last Logged In User
End User (matched by email)
custom_warranty_date
Warranty Expiry (custom field)
💡 Map Name → Asset Number

The Asset Number field is what Halo surfaces throughout the platform — in search results, on tickets, in reports. Map the NinjaOne device name here so technicians can immediately identify which device a ticket refers to.

Alert Management

Alerts fire. Tickets appear. Automatically.

When a NinjaOne policy condition is triggered, HaloPSA creates a ticket instantly — pre-populated with the device, client, and end user. When the alert clears, the ticket closes itself.

Webhook delivery (recommended)

Create a NinjaOne notification channel of type Webhook, pointing to your-halo-url/api/notifyninjaalerts. Alerts reach Halo in seconds — no polling delay, no missed events.

Ticket type & end user

Choose which Halo ticket type is created for RMM alerts. If the device is linked to a user, that user becomes the ticket’s end user. If not, Halo uses the general user for the client site.

Auto-close on resolution

When NinjaOne resolves the alert, it fires another webhook. Halo receives the resolution event and closes the ticket automatically — no manual action required from your team.

Inbound request log — all alert events visible in Halo

Inbound Requests — NinjaOne
🔔
Alert triggered — CPU >90% — LAPTOP-047 — Ticket #4421 created
09:14:22
Alert resolved — CPU normalised — Ticket #4421 closed
09:31:07
🔔
Alert triggered — Disk >95% — SERVER-01 — Ticket #4398 created
Yesterday 22:14
Alert resolved — Disk cleared — Ticket #4398 closed
Yesterday 23:02
Every alert event — trigger and resolution — is logged in Halo’s inbound request tab. Full audit trail, no guesswork about what came in from NinjaOne.

Things to know

Get it right first time.

Import order matters

Always import organisations and locations before importing devices. Halo uses that import to know where to place each asset. Import devices first and everything lands in an “unknown” catch-all site — difficult to fix after the fact.

🔎

Disable unique asset name check

Go to Configuration → Asset Management → General Settings and disable “enforce unique asset name” before importing. MSP environments often have multiple devices with the same name (Server01, DC01) — this setting blocks those imports if left on.

📄

Check asset type field lists

Field mappings only work if the target field exists on the asset type in Halo. Before importing, go to Configuration → Asset Management → Asset Types and confirm each mapped field is in the field list. Use “Add to all asset types” for any field you want on every device type.

Frequently asked

Questions about HaloPSA and NinjaOne

Is the NinjaOne integration included in HaloPSA? +
Yes. The NinjaOne integration is a native, first-party integration built and maintained by Halo’s engineering team. It’s included in every HaloPSA licence at no additional cost. The same applies to all of Halo’s RMM integrations — no middleware, no per-integration fee.
Does HaloPSA integrate with other RMMs besides NinjaOne? +
Yes. HaloPSA has native RMM integrations with multiple platforms including Datto RMM, ConnectWise Automate, Kaseya, Atera, and others. The setup process follows the same structure as NinjaOne — connect, import organisations and devices, configure alerts. All integrations are included in the standard licence.
How are NinjaOne alerts handled in HaloPSA? +
When a NinjaOne policy condition triggers, a webhook fires to HaloPSA and a ticket is created automatically — pre-populated with the device, client, and end user. When NinjaOne resolves the alert, another webhook fires and Halo closes the ticket automatically. All events are visible in the inbound request log inside HaloPSA.
What happens if a device name already exists in Halo when NinjaOne imports? +
HaloPSA uses the asset matching field (recommended: serial number) to identify whether an incoming NinjaOne device already exists as a Halo asset. If it matches, Halo updates the existing asset rather than creating a duplicate. We also recommend disabling the “enforce unique asset name” setting in Halo’s asset management configuration before running the first import.

Connect NinjaOne to HaloPSA — and let alerts run themselves.

Allied ESM configures your HaloPSA RMM integration as part of every implementation — including field mapping, alert setup, and go-live testing.

Talk to an Expert Back to HaloPSA