Level RMM Integration
Connect Ascent to Level RMM to sync devices into Assets, mirror RMM alerts as tickets, and keep client/device data in step. This is Ascent's primary RMM integration.
Overview
The Level RMM integration lets you:
- Connect Ascent to Level RMM with a single API key
- Map Level folders (groups) to Ascent clients with a guided setup wizard
- Sync Level devices into Ascent Assets (one-way, Level → Ascent), including hardware specs and online status
- Automatically create tickets from Level alerts and resolve those tickets when the alert clears
- Receive real-time events from Level over signed webhooks (alerts and device changes)
- Run manual syncs on demand and review a sync history log
- Optionally give an individual client its own Level API key
Navigate to the integration
Go to Admin → Integrations in the left sidebar, then open the Level RMM card. The Integrations page sits in the Admin section of the sidebar, which is shown to Owners and Admins.
Prerequisites
Before you start, you need:
- An active Level RMM account
- A Level API key
- Access to the Admin → Integrations area in Ascent
Setup
Step 1 — Connect with your API key
- Go to Admin → Integrations and open Level RMM.
- In the API Configuration card, enter your Level RMM API Key. Use the eye icon to reveal the value while typing.
- Click Connect Level RMM.
Ascent tests the API key before saving. If the key is invalid you'll see an error and nothing is stored. When the test succeeds, the key is encrypted and stored securely, and the setup wizard opens automatically.
Step 2 — Map Level folders to clients
Level organizes devices into folders (groups). Devices only sync once their folder is mapped to an Ascent client. The setup wizard walks you through this:
- Intro — review what the wizard does, then click Continue.
- Map Level Folders to Clients — for each Level folder, choose one of:
- An existing Ascent client (clients already linked to a Level folder are hidden from the list)
- Create new client — creates a new Ascent client from the folder
- Skip this folder — devices in that folder will not sync
- Click Continue (you must map at least one folder), review the Summary, then click Complete Setup.
Completing setup marks the wizard done and kicks off an initial full sync. You can map more folders later from the integration settings.
The mapping step shows running totals for Level Folders, Mapped (mapped vs. total), and Devices to Sync (devices in mapped folders vs. all devices).
Step 3 — Configure sync settings
The Sync Settings card controls what is synced and how often. Each toggle has its own interval:
| Setting | What it does | Interval options |
|---|---|---|
| Sync Alerts | Imports alerts and creates tickets in near real-time | Every minute, 5 / 15 / 30 minutes |
| Sync Devices | Imports device information and hardware specs | Every 15 / 30 minutes, every hour, every 2 / 6 hours |
| Sync Groups | Matches Level folders with Ascent clients | Every hour, every 6 / 12 hours, daily |
| Auto-Create Tickets | Automatically create tickets from Level alerts (only available when Sync Alerts is on) | On / Off |
Click Save Settings to apply changes. Use the Disconnect Integration button to remove the integration (this stops all syncing).
Connection status and stats
The Connection Status card shows whether the integration is Connected or Not Connected, the time of the Last synced, a Sync Now button, and a toggle to activate or deactivate the integration.
When connected, four stat cards summarize the integration:
| Stat | Meaning |
|---|---|
| Synced Assets | Assets linked to a Level device (shows an unassigned count if any synced assets have no client) |
| Synced Clients | Clients mapped to a Level folder |
| Auto-Created Tickets | Tickets created from Level alerts |
| Active Alerts | Alert-sourced tickets that are not yet in a closed status |
If Ascent detects new Level folders that haven't been mapped, a banner appears noting that devices in those folders won't sync until mapped, with a Map Folders button to reopen the wizard.
Asset sync
Device sync runs one-way, from Level into Ascent Assets. Each Level device is matched to its Ascent asset by the stored Level device ID, so a device is created once and updated thereafter.
The device's role in Level determines the Ascent asset type:
| Level device role | Ascent asset type |
|---|---|
server | Server |
domain_controller | Server |
workstation | Workstation |
The following fields are pulled from Level onto the asset:
| Ascent asset field | Source from Level |
|---|---|
| Name | Device nickname (falls back to hostname) |
| Type | Mapped from device role (see table above) |
| Make | Manufacturer |
| Model | Model |
| Serial number | Serial number |
| Operating system | Full OS name (falls back to platform) |
| RAM | Total memory, formatted (e.g. 16 GB) |
| CPU | First CPU model (or core count) |
| Storage | Sum of disk sizes, formatted (e.g. 512 GB) |
| Notes | Device notes |
| Level status | Online or Offline |
| Last synced | Timestamp of the sync |
| Last user | Last logged-in user |
| Security score | Level security score |
| Last reboot | Last reboot time |
| OS end of life | OS end-of-life date, if reported |
Synced assets appear alongside your other assets — see the Assets overview.
Manual sync
Click Sync Now in the Connection Status card to run a full sync immediately (the integration must be active). After a manual sync, the stats and Sync History refresh automatically.
Alert-to-ticket
When Sync Alerts and Auto-Create Tickets are both enabled, an active Level alert becomes a ticket:
- Level raises an alert for a device.
- Ascent finds the Ascent asset linked to that Level device. If no matching asset exists yet (the device hasn't synced), the alert is logged but no ticket is created.
- A ticket is created for the asset's client with the subject
[Level Alert] <alert name>. The description includes the alert detail, severity, asset name, start time, and any raw payload. - The ticket is linked to the asset and stored with the originating Level alert ID, which prevents duplicate tickets for the same alert.
When the alert clears in Level, Ascent updates the matching ticket: it sets a resolved timestamp, moves the ticket to a closed status (if one is configured), adds an internal note recording the automatic resolution, and records the change in ticket history. Tickets that are already closed/resolved are left untouched.
Alert severity → ticket priority
Level alert severities map to Ascent ticket priorities as follows:
| Level severity | Ascent ticket priority |
|---|---|
emergency | Critical |
critical | High |
warning | Medium |
information | Low |
Alert-sourced tickets behave like any other ticket once created — see Tickets.
Webhooks
Level can push events to Ascent in real time instead of waiting for the next scheduled poll. The webhook endpoint lives at:
POST /api/integrations/level/webhooks
A GET request to the same path returns a simple health-check response confirming the endpoint is active.
Webhook delivery is verified against a per-integration webhook secret (see Security and reliability below). The integration settings page does not currently expose a field for entering or viewing this secret, so webhook setup is handled outside the standard settings UI. If you intend to use real-time webhooks, contact Ascent support to confirm how the secret is provisioned for your organization.
Supported event types:
| Event | What Ascent does |
|---|---|
alert_active | Creates a ticket (if auto-create tickets is enabled) |
alert_resolved | Resolves the ticket created for that alert |
device_created | Creates an asset from the device |
device_updated | Updates the matching asset (creates it if it doesn't exist yet) |
device_deleted | Unlinks the asset from Level (keeps the asset, sets its Level status to Removed from Level) |
Security and reliability
- Signed requests: Every webhook must carry an
X-Level-Signature: sha256=<hmac>header. Ascent verifies the HMAC-SHA256 signature against your integration's stored webhook secret. A request with a missing or non-matching signature is rejected, and the signature is what tells Ascent which organization the event belongs to — events can never land in the wrong tenant. - Idempotency: Each event carries a unique ID. Duplicate deliveries are detected and skipped.
- Retries: Transient processing failures are retried internally with backoff, and events that exhaust their retries are kept for review. Ascent acknowledges deliveries so Level does not retry externally.
- Rate limiting: Inbound webhooks are capped per organization (120 events per minute).
Per-client API keys
By default the integration uses a single org-wide Level API key. A specific client can instead use its own Level organization by setting a client-level Level API key. When a client has its own key, syncs for that client use it; otherwise the client falls back to the org's integration. The key is tested before it's saved, and you can remove it later to revert to the platform-level integration.
Sync history
The Sync History card lists recent sync runs. Each entry shows:
- A status badge: Success, Partial, or Error
- The sync type: Assets, Alerts, Clients, or Full Sync
- When it ran, the number of items synced (with an error count if any failed), and the duration in seconds
If there's no history yet, use Sync Now to start syncing.
Troubleshooting
- Can't connect / invalid key — The API key is tested on connect. A failed test means nothing is saved; double-check the key in Level and try again.
- Devices not appearing — Confirm the device's Level folder is mapped to a client. Unmapped folders don't sync, and the unmapped-folders banner will flag new folders to map.
- Assets show as unassigned — A synced asset with no client appears in the unassigned count on the Synced Assets stat. Map its Level folder to a client so future syncs assign it.
- Alerts aren't creating tickets — Make sure both Sync Alerts and Auto-Create Tickets are enabled, and that the alert's device has already synced to an asset with a client.
- Webhook rejected (401) — The request signature didn't match any active integration's webhook secret. Confirm the integration is active and that Level is signing requests with the secret provisioned for your organization.
Best practices
- Map folders before relying on sync — devices only flow in once their folder is mapped to a client.
- Start with auto-create tickets off — connect, verify devices and folder mappings look right, then enable alert-to-ticket.
- Keep alerts on a short interval — alert sync supports a 1-minute interval so RMM issues surface quickly as tickets.
- Use a longer device/group interval — hardware and folder structure change slowly, so longer intervals reduce load.
- Watch the unmapped-folders banner — new Level folders won't sync until you map them.