Integrate Spike with Pulseway
Create a Pulseway notification webhook with its REST API so Critical and Elevated device notifications open incidents in Spike and page your on-call team by phone, SMS, Slack or Teams.
Pulseway is remote monitoring and management for IT teams and MSPs. It watches servers, workstations and network devices and raises a notification when something on one of them needs attention: a disk filling up, a service that stopped, a machine that went offline. Its notification webhooks post a JSON payload for every notification at the priorities you pick, so Spike can open an incident titled after the notification and page whoever is on call, without anybody watching the Pulseway console.
Nothing is installed on the monitored devices. You create one webhook through Pulseway's REST API, pointed at a Spike integration URL, and it covers every device in the organisations you name.
Pulseway never sends a recovery notification. There is no field anywhere in the payload that says a problem is over, and no later notification that refers back to an earlier one, so nothing Pulseway sends can close a Spike incident. Give the integration a resolve timer, as described in Step 4 below, or resolve incidents by hand. Without one, Pulseway incidents stay open until somebody closes them.
What Spike does with each notification
The first notification with a given Title for a given device
Opens an incident and pages your escalation policy
The same Title on the same device again
Added as an event to the incident already open. It never pages again
A different Title on the same device
A separate incident, paged on its own
The same Title on a different device
A separate incident, paged on its own
A notification that reads like a recovery ("back online")
A brand new incident of its own. It does not close the earlier one
A notification at a priority you did not ask for
Pulseway never sends it, so Spike never sees it
Every delivery Spike receives becomes an incident or joins one. Spike does not filter by priority, because you already chose the priorities when you created the webhook in Step 3.
One incident per device and problem
Spike identifies a Pulseway incident by DeviceIdentifier and Title together:
A condition that keeps re-notifying while it persists, the same disk on the same server every monitoring cycle, stays one incident and pages once.
The same problem on two machines,
Low disk spaceon two different servers, is two incidents, because two machines need two people to do two things.Two different problems on one machine,
Low disk spaceandService stoppedon the same server, are two incidents.
DeviceIdentifier is Pulseway's own device GUID, which does not change when a device is renamed or moved between groups, so repeats keep landing on the same incident across those changes. Read more about grouping and about suppressing duplicates while an incident is open.
How incidents are titled
The incident title is Pulseway's own Title field, exactly as Pulseway sends it. Nothing is added in front of it or after it:
Title in the payload
Incident title in Spike
Low disk space
Low disk space
Service stopped
Service stopped
Device offline
Device offline
Ping failed
Ping failed
Pulseway titles are short and name the problem rather than the machine. If your team would rather read the device or the client in the title, use a Title Remapper, see the sample under the payload reference below.
Severity
Spike reads the notification's Priority and sets the incident's severity from it:
Priority
Severity in Spike
Critical
SEV1
Elevated
SEV2
Normal
SEV3
Low
SEV3
Pulseway has four priorities and Spike has three severities, which is why Normal and Low both land on SEV3. The value is matched without regard to case, so Critical and critical are read the same way; Pulseway's own API reference writes these values both ways in different places.
Because Pulseway's field is literally named Priority, its value also reaches the incident's priority where Spike has a matching one: critical sets P1, normal sets P3 and low sets P4. Severity is the field worth writing alert rules against, since all four Pulseway priorities map onto it. Those same rules can route an incident to another escalation policy or suppress it entirely, which is how you send a whole client's Low notifications somewhere quieter than the pager.
Prerequisites
A Pulseway account with permission to create API tokens, and the REST API available on your plan
A Pulseway integration in Spike and its webhook URL
curl, or any HTTP client, to create the webhook
Step 1 — Create the integration in Spike
In Spike, go to Integrations → Add integration → Pulseway, attach it to a service and an escalation policy, and copy the webhook URL. It looks like https://hooks.spike.sh/<your-token>/push-events.
Step 2 — Create a Pulseway API token
Pulseway's REST API authenticates with an API token sent as HTTP Basic auth: the token is the username and the password is empty, which is the trailing : in the curl commands below.
Create the token from your account in the Pulseway web app, then keep it somewhere safe; Pulseway shows it once. Pulseway's REST API reference and its REST API walkthrough cover where tokens live for your account type and which roles may create them.
Step 3 — Create the notification webhook
Send one POST to /v3/notifications/webhooks with the Spike webhook URL from Step 1 and the priorities you want to be paged for:
Name
Anything you will recognise later in the webhook list, such as Spike or Spike — MSP on-call
Url
The full Spike webhook URL from Step 1, including /push-events
Priorities
The priorities that should page. Notifications at any other priority are never sent, see below
OrganizationIds
The Pulseway organisations to cover. An empty array covers all of them, which is what an MSP paging one on-call rotation for every client wants
Headers
Extra HTTP headers to send. Spike needs none, so leave it empty
Language
The language Pulseway writes Title and Message in. Pick one and leave it alone, see the note below
The response carries the webhook's Id and a SecretKey. Keep the Id, it is how you change or delete the webhook later. The SecretKey needs nothing done with it, see "The webhook secret key" below.
Language decides the wording of Title, and Spike groups repeats on Title. Changing the language on a live webhook renames every notification, so conditions that were already firing open fresh incidents under their new names and page again. Set it once, when you create the webhook.
Pulseway's API also has the rest of what you need to live with the webhook:
Check what is configured
GET /v3/notifications/webhooks
Read one webhook
GET /v3/notifications/webhooks/<id>
Change the priorities, URL or organisations
PATCH /v3/notifications/webhooks/<id>
Turn the integration off
DELETE /v3/notifications/webhooks/<id>
Choosing which priorities page you
Priority filtering happens on Pulseway's side, at the moment you create the webhook. Pulseway only delivers the priorities named in Priorities, and everything it delivers becomes an incident in Spike, so this one array decides how loud the integration is:
Priorities
What it suits
What to expect
["Critical"]
Teams who only want to be woken for outright failures
The fewest pages. Nothing arrives for degraded-but-working conditions
["Critical", "Elevated"]
Most on-call rotations, and the recommended starting point
Failures page as SEV1, conditions worth looking at page as SEV2
["Critical", "Elevated", "Normal"]
Small estates, or a service whose incidents are triaged rather than paged
Noticeably more incidents. Pair with alert rules to suppress or reroute the SEV3s
All four, including "Low"
Rarely what you want on a pager
An incident for every notification Pulseway raises on every covered device
To change your mind later, PATCH the webhook rather than trying to filter in Spike. Anything Pulseway sends becomes an incident, so keeping noise out of Spike is cheaper than suppressing it once it is here.
Step 4 — Set a resolve timer
Pulseway never tells Spike a problem is over, so a resolve timer is the only thing that closes these incidents without a human:
Edit the Pulseway integration in Spike.
Scroll to Advanced Configuration and turn on Resolve by Timer.
Set a duration comfortably longer than the gap between repeat notifications, so a condition that is still firing is not resolved out from under the person looking at it.
Every few minutes, a threshold condition being re-checked
1 hour
Hourly
4 hours
One-shot notifications that never repeat, such as a service that stopped
8 hours, or 1 day
A repeat notification is added to the open incident but does not restart the timer. If the timer fires while the condition is still being re-notified, the next notification opens a fresh incident and pages again, which is the behaviour you want for a problem nobody picked up.
The webhook secret key
Pulseway signs each delivery with the SecretKey it returned when the webhook was created, and sends the result as a base64 HMAC-SHA-256 of the body in an x-hmac-signature header. Spike does not verify that header today, so there is nothing to configure and nothing to paste anywhere.
That makes your webhook URL the credential, exactly as it is for every other Spike integration: it carries a token only your integration has. Treat it as a secret, and if it leaks, archive the integration in Spike, create a new one, and PATCH the Pulseway webhook with the new URL.
Payload reference
Pulseway posts application/json. A Critical notification looks like this:
Title
The incident title, verbatim, and half of the grouping key
DeviceIdentifier
The other half of the grouping key. The device GUID, stable across renames
Priority
Sets severity: Critical SEV1, Elevated SEV2, Normal and Low SEV3. Matched without regard to case
Message
Shown in full on the incident page. Never used in the title
DateTime
Recorded per notification, so you can tell the repeats apart on a long-running incident
Id
Pulseway's notification id. New on every notification, including repeats of the same condition, so it is recorded but never grouped on
OrganizationId
Shown on the incident, so you can tell which client it came from
An hour later, the same disk on the same device is still filling up. The Id, the DateTime and the numbers in Message are all different, but Title and DeviceIdentifier are not, so this joins the incident already open instead of paging again:
An Elevated notification on a different device. Different title, different device, so this is its own incident, opened at SEV2:
Normal and Low notifications have the same shape and open incidents at SEV3. They only arrive at all if you named those priorities when you created the webhook:
Title Remapper sample
A Title Remapper on the Pulseway integration replaces the default title with one you write against the payload, which is how an MSP folds the client or the machine into the title:
Output: Low disk space on 8f3c2a1d-4b5e-6f70-8192-a3b4c5d6e7f8
Build the remapper from Title, DeviceIdentifier and OrganizationId only. Those three are the same on every notification about the same problem on the same device, so repeats still group under the one incident. Message, Id and DateTime change on every notification, and a title built on them stops repeats grouping and pages your team once per monitoring cycle.
Things worth knowing
Nothing auto-resolves. Pulseway has no recovery event, so the resolve timer in Step 4 is the answer. This is not a limitation of the integration; there is nothing in the payload to key a resolution off.
A "back online" notification is a new incident. When a device comes back, Pulseway raises that as its own notification with its own
Title, carrying no reference to the notification that reported the device down. Spike has nothing to match it against, so it opens an incident of its own rather than closing the original. Expect a short-lived pair of incidents for a device that dropped and returned.Priority filtering is Pulseway's job, not Spike's. Everything delivered becomes an incident. The
Prioritiesarray is the volume control.Priority casing does not matter. Pulseway's documentation writes
Critical, and some of its API responses writecritical. Both are read the same way.One webhook covers every device. There is nothing to configure per device or per client, other than
OrganizationIds. Create a second webhook pointed at a second Spike integration when different clients should page different teams, or keep one and split it with alert rules.The URL is the credential.
x-hmac-signatureis not verified today, so guard the webhook URL.
Troubleshooting
Last updated
Was this helpful?