Skip to main content

AlgaPSA Integration

Connect Level to AlgaPSA so groups map to clients, devices sync as assets, and Level alerts open AlgaPSA tickets.

Introduction

AlgaPSA mirrors your Level setup on the PSA side: Level groups map to AlgaPSA clients, devices in mapped groups sync into Assets, and Level alerts open tickets through AlgaPSA’s alert rules.
​

Setup spans both platforms. In Level you create an API key and configure alert delivery using native webhooks or an automation, depending on your AlgaPSA build. In AlgaPSA you paste the key, map groups, and run the device sync.

ℹ️ NOTE: This integration was built and is maintained by Nine Minds, the makers of AlgaPSA. For the AlgaPSA side of the setup, see their documentation: Level RMM Integration. It’s an AlgaPSA Enterprise Edition feature.


⚙️ PREREQUISITES

  • Level administrator access (to create an API key and configure webhooks or an automation)

  • An AlgaPSA Enterprise Edition account with access to Admin Settings

  • Your AlgaPSA instance reachable at a public HTTPS address (see the warning under Send alerts to AlgaPSA)


AlgaPSA Integration

Create an API Key in Level

AlgaPSA uses a Level API key to read your groups, devices, and alerts.

  1. In Level, navigate to Settings → API keys.

  2. Click + Create API key.

  3. Enter a Description such as “AlgaPSA integration”.

  4. Select Read-only. Everything AlgaPSA pulls from Level (group discovery, device sync, alert backfill) is a read, so a read-only key is enough.

  5. Click Create key, then use the three-dot menu on the new row and choose Copy key.

See API Keys Settings for full details on managing keys.


Connect AlgaPSA to Level

  1. In AlgaPSA, go to Settings → General to open Admin Settings.

  2. Select Integrations under Data & Integration, open the RMM tab, and select Level.

  3. Paste your key into the API key field on the Level Connection card.

  4. Click Save Configuration, then Test Connection.

A successful test marks the integration Connected and shows the connection time.


Map Groups and Sync Devices

Mapping happens entirely in AlgaPSA, on the Sync & Group Mappings card.

  1. Click Discover Groups. AlgaPSA imports your Level group hierarchy into the mapping table.

  2. For each group you manage, pick an AlgaPSA client in the Mapped Client dropdown. Optionally set a Default Contact, which gets attached to tickets opened by alerts from that group.

  3. Click Run Device Sync. Devices in mapped groups become AlgaPSA assets.

Two behaviors are worth knowing:

  • Subgroups inherit. A subgroup with no mapping of its own uses the nearest mapped parent, so mapping a client’s top-level group usually covers its whole tree.

  • Unmapped groups are skipped. Devices in a group with no mapping and no mapped parent don’t sync.

💡 TIP: Map one top-level Level group per client, then let the subgroups inherit. It’s less to maintain than mapping every subgroup by hand.


Send Alerts to AlgaPSA

Choose the method supported by your AlgaPSA installation. If the Level integration page shows Native Webhook (recommended) with a Signing secret, follow the native webhook steps below. If it only shows an Alert Webhook with a custom header and payload template, use the automation fallback.

Release availability, checked October 30, 2026: Native signed webhook support was merged into AlgaPSA’s main branch on October 17, 2026 in PR #3761. The latest published release, v1.6.0 (September 17, 2026), does not include it. Hosted and self-hosted deployments may differ. Confirm your build supports native webhooks with Nine Minds before switching; a merge to main does not confirm availability on your installation.

Option 1: Native Webhooks for Supported Builds

  1. In AlgaPSA’s Level integration settings, open Native Webhook (recommended).

  2. Copy the complete Webhook URL, including its tenant query parameter, and the Signing secret shown on that card.

  3. In Level, go to Settings → Webhooks and click + Add webhook (or + Create webhook if the list is empty).

  4. Paste the AlgaPSA URL into URL and its signing secret into Secret.

  5. Under Events to send, select Alert active (alert_active) and Alert resolved (alert_resolved).

  6. Leave Enabled on and click Add webhook.

  7. Test alert creation and resolution using the checks below.

Level signs these requests with X-Level-Signature, which AlgaPSA verifies. Native webhooks use Level’s standard payload, so you do not add a custom header, paste a payload template, or attach an HTTP automation to each monitor. AlgaPSA’s group mappings and alert rules control how incoming alerts are handled.

See Webhook Settings for configuration and delivery logs.

Option 2: Automation HTTP Request Fallback

Use this method for v1.6.0, older installations, or when native webhooks are unavailable. It sends AlgaPSA’s payload template with the X-Alga-Webhook-Secret header.

In AlgaPSA, open the Alert Webhook card (called Fallback: Automation HTTP Request on newer builds) and copy the three values it gives you: the Webhook URL, the Header name and secret (the eye icon reveals the secret), and the Payload template.

In Level:

  1. Navigate to Automations and create a new automation, for example “AlgaPSA alert ticket”.

  2. In the pipeline, click Add an action and select HTTP request from the Other category.

  3. Fill in the action:

    • URL: the AlgaPSA Webhook URL

    • Method: POST

    • Content type: application/json

    • Body: the payload template from AlgaPSA, pasted as-is

    • Headers: click + Add request headers and add X-Alga-Webhook-Secret with the secret value

  4. Click Save in the action side panel.

An automation in edit mode with an HTTP request action panel open, showing the URL, Method POST, Content type application/json, Body, and a custom request header row

Now point the monitors that should open tickets at that automation:

  1. Open the monitor policy that raises the alerts you want ticketed (Monitor policies in the sidebar).

  2. Open a monitor and find the Remediation section, “Run automations when this alert fires”.

  3. Select your AlgaPSA automation in the Remediation automation picker, then save.

  4. Repeat for each monitor whose alerts should become tickets.

A monitor in a monitor policy with the Remediation section visible

The automation runs against the device that raised the alert, so the request carries that device’s details.

⚠️ WARNING: The HTTP request action only calls public addresses. If you self-host AlgaPSA on a private or loopback address, the action fails with “Request blocked: Cannot make requests to private or loopback addresses.” Give your AlgaPSA instance a publicly resolvable HTTPS hostname before wiring up the automation.


Switching from an Automation to Native Webhooks

First confirm native webhook support on your AlgaPSA installation. Configure the webhook, then test a new alert and its resolution on a mapped device. Check delivery logs and the resulting AlgaPSA alert and ticket before switching the rest of your monitors.

Once native delivery works, disable the old AlgaPSA forwarding automation or remove that automation from the affected monitors’ Remediation selections. Keep any unrelated remediation actions. Avoid leaving both forwarding methods enabled for the same alerts because they can create duplicate tickets.

Backfill Existing Alerts

The webhook is the live feed. To pull alerts that already exist in Level, or to catch up after a missed event, click Backfill Alerts on AlgaPSA’s Sync & Group Mappings card. There is no scheduled Level alert polling; this is separate from any device-sync schedule available in your AlgaPSA build.


Test the Integration

  1. Confirm the Level Connection card in AlgaPSA shows Connected with a recent timestamp.

  2. Spot-check one client’s asset list in AlgaPSA against its Level group.

  3. Trigger a test alert in Level on a device in a mapped group. For the automation fallback, use a monitor that has the forwarding automation attached.

  4. Confirm the alert reaches AlgaPSA and a ticket is created when a matching alert rule calls for one. For native webhooks, resolve the test alert in Level and confirm the resolved event reaches AlgaPSA.

Native webhooks: Open Settings → Webhooks → Requests in Level. Inspect the destination URL, delivery status, HTTP response, and response body. For a signature error, make sure Level’s Secret matches the Signing secret on AlgaPSA’s native card.

For a URL error, recopy the full URL, including the tenant parameter. Confirm both alert events are selected and the endpoint is publicly reachable. After correcting a failed delivery, use Re-run request to resend it, then confirm it did not create a duplicate ticket.

Ticket resolution: Receiving an alert_resolved event does not guarantee that a ticket closes. Automatic closure depends on the AlgaPSA alert rule’s auto-resolve setting and whether the ticket has had human activity. Confirm the behavior for your rules and build with Nine Minds.

Automation fallback: Open the automation’s run for that device and read the HTTP request action’s output. It logs the response, for example HTTP 401 - Unauthorized for a bad secret or HTTP 404 - Not Found for a mistyped URL. Then check:

  • The header name is exactly X-Alga-Webhook-Secret and the secret has no extra spaces.

  • The Webhook URL was copied in full.

  • The alerting device’s group is mapped to a client in AlgaPSA.

  • The monitor actually lists your automation under Remediation.


Ongoing Management

  • Rotate the key: create a new API key in Level, paste it into AlgaPSA, test the connection, then delete the old key. Deleting a key takes effect immediately, so do it in that order.

  • Add groups or devices: run Discover Groups after you add groups in Level, and Run Device Sync to bring new devices across.

  • Pause alert forwarding: for native webhooks, turn Enabled off on the webhook in Level. For the fallback, disable the forwarding automation or remove it from a monitor’s Remediation field.

  • Change the secret: for native webhooks, regenerate the signing secret in AlgaPSA and update the webhook’s Secret in Level, then test delivery. For the fallback, update the automation’s X-Alga-Webhook-Secret header whenever you regenerate its shared secret in AlgaPSA. Use the secret for the method you configured.


FAQ

  • Do I need to enable AlgaPSA on Level’s Integrations page? No. AlgaPSA connects through the Level API plus either native webhooks or an automation, so there is no AlgaPSA toggle to enable on Level’s Settings → Integrations page.

  • Read-only or read and write for the API key? Read-only is sufficient for the group discovery, device sync, alert backfill, and incoming alert setup described here. Optional AlgaPSA features that write back to Level may have different requirements. Confirm the supported feature and required permissions with Nine Minds before widening the key.

  • Can I use Settings → Webhooks instead of an automation? Yes, when your AlgaPSA build supports native signed webhooks and shows the Native Webhook (recommended) card. Follow Option 1 above. v1.6.0 and older receivers still require the automation fallback with X-Alga-Webhook-Secret.

  • Does closing a ticket in AlgaPSA resolve the Level alert? This guide configures Level-to-AlgaPSA alert delivery. Ticket-close actions that write back to Level depend on your AlgaPSA build, settings, and API permissions. Ask Nine Minds how to enable and test that behavior for your installation.

  • Which devices sync into AlgaPSA? Devices in groups you mapped to a client, plus devices in subgroups that inherit a mapped parent. Unmapped branches are skipped.

  • Do existing AlgaPSA assets get overwritten? Device sync is driven from AlgaPSA. See their Level RMM Integration documentation and How RMM Integrations Work in AlgaPSA for how they match and update assets.

  • Who can set this up? A Level administrator (for the API key and webhooks or automation) and an AlgaPSA user with access to Admin Settings.

Did this answer your question?