Integration recipe · updated

Send Vigil alerts to Spike.sh

Spike.sh is an on-call and incident tool: it phones, texts and escalates to whoever is on call. To connect Vigil by PuzariCloud, create a Webhook integration in Spike, paste its URL into a Vigil Webhook channel and use the body template below. An outage opens a Spike incident, and the recovery alert resolves it. It works on every Vigil plan, including Free.

Set it up in four steps

  1. In Spike, create a Webhook integration. Open Integrations, add the generic Webhook integration to the service and escalation policy that should be paged, and copy its URL. It looks like https://hooks.spike.sh/<token>/push-events. The token in the URL is the only authentication, so keep it private.
  2. In Vigil, add a Webhook channel. Go to Alerts → Channels, choose Webhook, paste the Spike URL, keep the method on POST and leave custom headers and the signing secret empty.
  3. Paste this body template into Body template:
    {"source": "vigil", "title": "Vigil: {{monitor_name}}", "status": "{{state}}", "body": "{{message}}", "event": "{{event}}", "monitor": "{{monitor_name}}", "monitor_id": "{{monitor_id}}", "url": "{{monitor_url}}", "link": "{{link}}", "at": "{{at}}"}
    The title is the same for the outage and the recovery of one monitor, because Spike groups and resolves incidents by title. {{state}} becomes resolve on the recovery alert and trigger on every other alert.
  4. Send a test, then attach the channel to monitors. Press Send test on the channel. Spike should open an incident called “Vigil: Test monitor”; resolve it by hand, it was only the check. Then pick the channel on each monitor (or in a notification policy) that should page someone.

What Spike receives

These are rendered by the same code that sends real alerts, for a monitor called “Checkout API”:

Outage (opens the incident)
{
  "source": "vigil",
  "title": "Vigil: Checkout API",
  "status": "trigger",
  "body": "HTTP 503 from https://shop.example.com/api/health",
  "event": "down",
  "monitor": "Checkout API",
  "monitor_id": "42",
  "url": "https://shop.example.com/api/health",
  "link": "https://puzaricloud.in/app/monitors/42",
  "at": "2026-10-19T09:41:00+00:00"
}
Recovery (resolves it)
{
  "source": "vigil",
  "title": "Vigil: Checkout API",
  "status": "resolve",
  "body": "Recovered after 7 minutes.",
  "event": "up",
  "monitor": "Checkout API",
  "monitor_id": "42",
  "url": "https://shop.example.com/api/health",
  "link": "https://puzaricloud.in/app/monitors/42",
  "at": "2026-10-19T09:41:00+00:00"
}

Spike reads title, body and status. The other keys (source, event, monitor, url, link, at) are kept in the incident details. Spike also accepts "severity": "sev1"–"sev3" and "priority": "p1"–"p5"; add one to the template if every alert from this channel should carry it, or make two channels (outages and warnings) with different values.

Things to know

  • Alerts of one monitor share one incident. A slow-response or SSL warning for a monitor that already has an open incident joins it, and that monitor's recovery resolves it.
  • Renaming a monitor while its incident is open changes the title, so the recovery cannot find the incident. Resolve that one in Spike by hand.
  • Spike's documentation describes "status": "resolve" only. On other alerts the template sends "trigger"; if your Spike account ever treats that differently, send a test and check.
  • Vigil checks run from Germany (plus private locations you host). Spike decides who is called and how; Vigil only delivers the alert.

FAQ

Does a recovery close the Spike incident?

Yes. Spike resolves an open incident when it receives "status": "resolve" with the same title. The template keeps the title fixed per monitor ("Vigil: <monitor name>") and the {{state}} placeholder becomes "resolve" on Vigil's recovery alert.

Will repeated alerts page people twice?

No. While an incident with the same title is open, Spike does not create a new one, so a second alert for the same monitor joins the open incident.

What does "source": "vigil" do?

It tells Spike the alert comes from Vigil. Spike's own vendor integrations recognise their sender by this key. Spike's generic webhook integration works today without it; the key costs nothing and keeps the payload ready for a dedicated Vigil integration.

Do I need a signing secret or custom headers?

No. Spike authenticates the request by the secret token in the webhook URL. Keep that URL private, like a password.

Which Vigil plan do I need?

Any plan, including Free. Webhook channels and the body template are available on every plan.

Other ways to get paged

Vigil also has built-in channels for PagerDuty, Opsgenie, Slack, Microsoft Teams, Google Chat, Zoho Cliq, Telegram, Discord, ntfy, Pushover and WhatsApp, and its own on-call schedules with email, SMS and phone calls. See pricing or start free.

Sources

Spike.sh is a trademark of its owner. Vigil by PuzariCloud is not affiliated with Spike.