# Introduction

Documentation for Spike — incident management, on-call schedules, alerts, and status pages.

Spike is an incident management platform for on-call teams. These docs cover setting up integrations, on-call schedules, escalation policies, Playbooks, and status pages. For questions or feedback, email <support@spike.sh>.

## Spike basics

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td>Incident management</td><td>Track and respond to incidents from one place</td><td><a href="/pages/-Ln7Jrrib-GABSd0t_oP">/pages/-Ln7Jrrib-GABSd0t_oP</a></td><td><a href="/files/z2O2LyQ7XsxL8IiNmsd1">/files/z2O2LyQ7XsxL8IiNmsd1</a></td></tr><tr><td>On-call schedules</td><td>Set up rotations so the right person is always on call</td><td><a href="/pages/-MLmNTlYf7MkeKMoPtiB">/pages/-MLmNTlYf7MkeKMoPtiB</a></td><td><a href="/files/D9qMuooOURP7SXrnU2LU">/files/D9qMuooOURP7SXrnU2LU</a></td></tr><tr><td>Alerts</td><td>Phone calls, SMS, Slack, Microsoft Teams, and more</td><td><a href="/pages/-LrrN8fM_84a62TW-cD_">/pages/-LrrN8fM_84a62TW-cD_</a></td><td><a href="/files/gFpzo5ay40IJU098GYev">/files/gFpzo5ay40IJU098GYev</a></td></tr><tr><td>Escalations</td><td>Route alerts through a policy until someone responds</td><td><a href="/pages/-Ln7JflE0gIm9lfFhom5">/pages/-Ln7JflE0gIm9lfFhom5</a></td><td><a href="/files/S2sOK4KXRlMRhisDXEOk">/files/S2sOK4KXRlMRhisDXEOk</a></td></tr><tr><td>Integrations</td><td>Connect your monitoring tools to trigger incidents in Spike</td><td><a href="/pages/-Ln3rb4wLUFeI-OAPcmq">/pages/-Ln3rb4wLUFeI-OAPcmq</a></td><td><a href="/files/lC5whkpcYEdyRppbpIlQ">/files/lC5whkpcYEdyRppbpIlQ</a></td></tr><tr><td>Playbooks</td><td>Automate response actions when incidents occur</td><td><a href="/pages/nPOqNR4PkKDhyHw0RER4">/pages/nPOqNR4PkKDhyHw0RER4</a></td><td><a href="/files/JMZezGxHGanBdtTN3A05">/files/JMZezGxHGanBdtTN3A05</a></td></tr><tr><td>Status pages</td><td>Publish system status updates for customers</td><td><a href="/pages/enaxhtAsdgSZQhb0yvsD">/pages/enaxhtAsdgSZQhb0yvsD</a></td><td><a href="/files/uF7OkEKXX960kpsaQdkJ">/files/uF7OkEKXX960kpsaQdkJ</a></td></tr><tr><td>Collaboration</td><td>Connect task management and helpdesk tools to incidents</td><td><a href="/pages/4F2uMlWOh4W68PJQrDVd">/pages/4F2uMlWOh4W68PJQrDVd</a></td><td><a href="/files/kahEKAKhSxk3SX7PA6Gn">/files/kahEKAKhSxk3SX7PA6Gn</a></td></tr><tr><td>Administration</td><td>Manage team members, roles, and access</td><td><a href="/pages/-MWiQzFO2gYPFWD23-fN">/pages/-MWiQzFO2gYPFWD23-fN</a></td><td><a href="/files/ktm2dSK4lbuKfiVNEoNt">/files/ktm2dSK4lbuKfiVNEoNt</a></td></tr></tbody></table>


# What is Spike?

Spike is an on-call and incident management platform that alerts the right person when something breaks in your infrastructure.

Spike is an on-call and incident management platform. When a monitoring tool detects an issue, Spike creates an incident. Then, it alerts the right person and escalates until someone responds.

## How Spike works

Every incident starts with an integration. When a connected monitoring tool detects a problem, it sends a signal to Spike. Spike creates an incident and triggers your escalation policy, which determines who gets alerted and through which channel. If no one responds in time, Spike moves to the next person in line. Once resolved, reports capture the data so your team can track patterns over time.

## Core modules

### Integrations

Spike connects to [over 100 monitoring, logging, and observability tools](/integrations-guideline/setup-integrations). Each integration gets a unique token, so incidents from different sources stay separate. You can add as many integrations as you need with no restrictions.

{% hint style="info" %}
Don't see an integration you need? Email <integrations@spike.sh> and we'll build it.
{% endhint %}

### Services

<figure><img src="/files/B6vHYRZ3VCwNDsnW70RA" alt="Services on Spike"><figcaption><p>Services map to components in your infrastructure.</p></figcaption></figure>

Services map to components in your infrastructure: a backend API, a payment service, a worker queue. Each service holds multiple integrations. When an incident fires, Spike shows which service is affected and its current health status based on open incidents. You can create as many services as you need to reflect your full architecture.

### Escalations

<figure><img src="/files/ZEGWIlaAzTJxVPzB9KT9" alt="Escalation policies on Spike"><figcaption><p>Create separate escalation policies for teams, services, or situations.</p></figcaption></figure>

An [escalation policy](/escalations/introduction-to-escalations) defines who gets alerted and in what order. You can build separate policies for different teams or services. If the first person doesn't acknowledge in time, Spike moves down the policy until someone responds.

### Alerts

Spike reaches your team through phone calls, SMS, email, Slack, Microsoft Teams, WhatsApp, Telegram, Discord, and Pushover. Each person sets their own alert preferences. [Alert rules](/alerts/alert-rules) let you route, filter, and prioritize alerts automatically based on incident properties.

### On-call schedules

[On-call schedules](/oncall-schedules/introduction-to-on-call-schedules) control who is on-call at any given time. Build schedules with layers and slots, set up overrides for coverage gaps, and sync shifts to Google Calendar, Apple Calendar, or Outlook.

### Playbooks

[Playbooks](/playbooks/introduction-to-playbooks) automate the repetitive work that happens when an incident fires. Create a war room, open a Jira ticket, update your status page. Playbooks run these steps automatically so your team can focus on the fix.

{% hint style="info" %}
To see Spike in action, book a call at [calendly.com/spikehq](https://calendly.com/spikehq) or email <demo@spike.sh>.
{% endhint %}


# What is an incident?

An incident is any issue that needs to be investigated and resolved, often one that affects your customers.

An incident is any issue that needs to be investigated and resolved. When a connected monitoring tool detects a problem, Spike creates an incident and alerts the right person based on the [escalation policy](/escalations/introduction-to-escalations) attached to that integration.

## Examples

Common examples of incidents include:

* CPU or memory utilization crossing a critical threshold
* Database monitoring alerts
* Database backup failures
* Billing process failures
* Notification delivery failures
* Dashboard loading errors
* Website downtime

{% hint style="info" %}
You can also create incidents directly from your code using a [webhook integration](/integrations-guideline/integrating-with-webhooks).
{% endhint %}

## Incident statuses

Every incident has one of three statuses. See [incident statuses](/incidents/incident-statuses) for the full breakdown.

<figure><img src="/files/0Rkg17gfblu4IK5SFECw" alt="Incident statuses on Spike"><figcaption><p>The three incident statuses: Triggered, Acknowledged, and Resolved.</p></figcaption></figure>

### Triggered

A triggered incident means Spike has detected a problem and is actively alerting. Spike works through the escalation policy, sending alerts until someone acknowledges or resolves the incident. Repeat incidents are automatically suppressed to reduce [alert fatigue](/alerts/personal-alerts-management).

### Acknowledged

An acknowledged incident means someone is working on a fix. Spike stops alerting and pauses the escalation policy. You can optionally set an [acknowledge timeout](/incidents/acknowledge-timeout): a time limit after which Spike moves the incident back to triggered and resumes alerting if it hasn't been resolved.

### Resolved

A resolved incident means the issue is fixed. Spike stops all alerts and resets the escalation policy for any future incidents on that integration.


# Incident lifecycle

The incident lifecycle covers the stages an incident moves through, from the moment it's triggered to when it's resolved.

Every incident on Spike moves through a defined set of stages. Understanding this flow helps you configure escalation policies, acknowledge timeouts, and alert channels to match how your team actually responds.

<figure><img src="/files/JkOVAh1SOb1ylO2qCLlG" alt="Incident lifecycle on Spike"><figcaption><p>The stages of an incident on Spike.</p></figcaption></figure>

## 1. Incident creation

An incident is created when a connected integration sends a webhook to Spike. Before creating a new incident, Spike checks whether an open incident already exists for that integration.

* If one exists, Spike logs the new event under the existing incident instead of creating a duplicate.
* If no open incident exists, Spike creates a new one and starts the escalation process.

{% hint style="info" %}
Only open incidents (triggered or acknowledged) are checked for duplicates. Resolved incidents are ignored.
{% endhint %}

## 2. Incident escalation

Once an incident is created, Spike works through the [escalation policy](/escalations/introduction-to-escalations) attached to that integration. Alerts go out to the first set of responders in the policy. Spike waits for the duration configured in the escalation policy. If no one acknowledges or resolves the incident in that time, Spike moves to the next level and alerts the next set of responders.

Each integration can have its own escalation policy. This lets you set different alert priorities across services.

## 3. Incident acknowledgment

When a responder acknowledges the incident, Spike pauses the escalation policy and stops escalating alerts. You can set an [acknowledge timeout](/incidents/acknowledge-timeout) for each integration: a time limit that moves the incident back to triggered and resumes alerting if it hasn't been resolved in time. You can also manually move an acknowledged incident back to triggered at any time.

## 4. Incident resolution

Once the issue is fixed, mark the incident as resolved. Spike stops all alerts and resets the escalation policy. If a new incident comes in for the same integration, the process starts again from the beginning.

See [incident statuses](/incidents/incident-statuses) for a full reference on each status.


# Incident statuses

Every incident on Spike has one of three statuses: triggered, acknowledged, or resolved. The status determines what Spike does next.

Every incident on Spike moves through three statuses: triggered, acknowledged, and resolved. The current status determines whether Spike is actively alerting, paused while someone works on a fix, or closed.

## Triggered

An incident enters the triggered state the moment it's triggered. This means no one has looked at it yet and the problem is unresolved.

In this state, Spike works through the [escalation policy](/escalations/introduction-to-escalations) attached to the integration and sends alerts to the designated responders. Alerts continue until someone acknowledges or resolves the incident. Repeat incidents from the same integration are suppressed and logged rather than creating new ones.

## Acknowledged

An acknowledged incident means someone is actively working on a fix. Spike pauses the escalation policy and stops escalating alerts.

Repeat incidents remain suppressed in this state to reduce [alert fatigue](/alerts/personal-alerts-management). You can set an [acknowledge timeout](/incidents/acknowledge-timeout) for each integration. If the incident isn't resolved within that window, Spike moves it back to triggered and resumes alerting. You can also manually move an acknowledged incident back to triggered at any time.

## Resolved

A resolved incident means the issue is fixed. Spike stops all alerts and resets the escalation policy.

If the same integration triggers a new incident after resolution, Spike treats it as a fresh incident and starts the process from the beginning. See [incident lifecycle](/incidents/incident-lifecycle) for the full flow.


# How to change incident status

You can change an incident's status from all alerting channels without having to come to Spike.

You can change an incident's status from all alerting channels without having to come to Spike.

## From the dashboard

<figure><img src="/files/qfSr5qOG8aldt7BsKOBg" alt="Select one or more incidents on the dashboard"><figcaption><p>Select incidents and change their status from the dashboard.</p></figcaption></figure>

Open the [dashboard](https://app.spike.sh) to see all open incidents. Select an incident using the checkbox on the left, then click **Acknowledge** or **Resolve** at the top.

### Multiple incidents

Select multiple incidents using the checkboxes, or use the dropdown to select all incidents matching a specific criteria. Then apply the status change in bulk.

## From a phone call

During a [phone alert](/alerts/phone), press a key to take action immediately:

1. **Press 4** to acknowledge
2. **Press 6** to resolve
3. **Press 9** to escalate

You'll hear a voice confirmation on the same call once the status changes.

## From Slack

<figure><img src="/files/EXA6jtgFCFiSMi7e7za2" alt="Acknowledge and resolve incidents from Slack"><figcaption><p>Slack alerts include Acknowledge and Resolve buttons.</p></figcaption></figure>

Every [Slack alert](/alerts/slack) includes **Acknowledge** and **Resolve** buttons. When you change the status, all related Slack messages update to reflect it. This applies regardless of whether the change was made via phone, email, SMS, or the dashboard.

## From email

Reply to a [Spike email alert](/alerts/email) with one of the following:

1. **#ack** to acknowledge
2. **#res** to resolve

No confirmation is sent after the status change.

## From SMS

Send an SMS from your registered phone number to change status. You don't need to reply to a Spike message — just send a new one:

1. **#\<incident\_id> ack** to acknowledge (example: `#1226 ack`)
2. **#\<incident\_id> res** to resolve (example: `#2071 res`)

This works even if [SMS](/alerts/sms) is not in your escalation policy. Spike processes the action as long as you send from your registered number.

## From mobile

The dashboard and incident detail pages are mobile-compatible. Visit [app.spike.sh](https://app.spike.sh) on your mobile browser to view open incidents and change their status.


# Acknowledge timeout

Acknowledge timeout automatically moves an acknowledged incident back to triggered state if it isn't resolved within a set time.

Acknowledge timeout is a time limit you set on an integration. If an acknowledged incident isn't resolved within that window, Spike moves it back to triggered state and resumes alerting. This is useful when someone acknowledges an incident but gets pulled into other work before resolving it.

<figure><img src="/files/mDhR7ahPLPE9Q2H3gvTC" alt="Acknowledge timeout setting"><figcaption><p>Set acknowledge timeout in minutes on any integration.</p></figcaption></figure>

## What timeout should you set?

It depends on how critical the integration is. A shorter timeout means faster re-alerting on unresolved incidents.

* **Critical integrations** — 20 minutes
* **Severe but non-critical integrations** — 60 minutes
* **Non-critical integrations** — leave it blank

You don't need a timeout on every integration.

{% hint style="warning" %}
Avoid short timeouts like 5 or 10 minutes. They generate more alerts than your team can act on and increase alert fatigue.
{% endhint %}


# Grouping incidents

Spike automatically groups repeated incidents so you can see how often an issue recurs and when it first appeared.

When the same incident fires multiple times, Spike groups them under the original incident rather than creating new ones. This keeps your dashboard clean and gives you a clear picture of how often an issue is recurring.

<figure><img src="/files/XFcaReI9cq3271NOqGOa" alt="Grouped incidents on Spike"><figcaption><p>Repeated incidents are grouped under the original with a repeat count.</p></figcaption></figure>

Each grouped incident shows:

* How many times it has repeated
* When it first occurred
* When it last occurred
* When each recurrence happened

This helps you judge whether an issue is a one-off or a pattern. If an incident has repeated dozens of times, it's likely affecting your customers and worth prioritizing over something that fired once.


# Priority and severity

Priority indicates how urgently an incident needs to be resolved. Severity indicates the degree of damage to your systems.

Not all incidents need immediate action. Priority and severity give your team two ways to classify an incident: how urgent it is to fix, and how much damage it's causing.

## Priority

Priority indicates the urgency to resolve an incident. Available priorities are:

* **P1**: Urgent
* **P2**: High
* **P3**: Medium
* **P4**: Low
* **P5**: Info

For example, a billing service outage is a P1. A database server running low on storage might be a P2.

## Severity

Severity indicates the degree of damage to your systems. Available severities are:

* **SEV1**: High
* **SEV2**: Medium
* **SEV3**: Low

For example, a data leak or full service outage is a SEV1. A degraded non-critical service might be a SEV3.

{% hint style="info" %}
Once you set priority and severity on an incident, Spike remembers them for future occurrences of the same incident.
{% endhint %}

## Setting priority and severity

### From the dashboard

Select one or more incidents. The priority, severity, and mute options appear at the top of the list.

<figure><img src="/files/hPOiJZkIHRpT2q5824Tj" alt="Set priority on multiple incidents from the dashboard"><figcaption><p>Select incidents from the dashboard to set priority and severity in bulk.</p></figcaption></figure>

### From the incident page

Open any incident to find the priority and severity options on the incident detail page.

<figure><img src="/files/VGSbvTIwkcqZj7dMNQF0" alt="Set priority from the incident page"><figcaption><p>Set priority and severity directly from the incident page.</p></figcaption></figure>

### From integrations

Some integrations, like Azure, send priority and severity as part of their incident payload. Spike reads these values and sets them automatically, overwriting any existing values.

You can also send priority and severity via [webhook integration](/integrations-guideline/integrating-with-webhooks).

### From alert rules and Playbooks

You can set priority and severity automatically using [alert rules](/alerts/alert-rules) based on incident properties. [Playbooks](/playbooks/introduction-to-playbooks) can also set them as part of an automated response when an incident fires.

## FAQ

### Should I set both priority and severity?

For critical incidents, yes. For lower-signal integrations, you can use just one or neither. Both fields are optional.

### Who can set priority and severity?

Everyone on the team. There are no restrictions on who can set or change these fields.

### Can I set priority and severity automatically?

Yes. Use [alert rules](/alerts/alert-rules) to set them based on incident properties, or connect integrations like Azure that send these values automatically with each incident.


# Mute alerts

Mute alerts on an incident to stop notifications for a set period without resolving it.

Muting stops all alerts for an incident and its repeated occurrences for a set period. The incident stays open and logged. Spike just stops notifying your team about it.

This is useful for low-priority incidents you're aware of but don't need to act on immediately. Instead of getting alerted repeatedly, you mute it and come back when you're ready.

<figure><img src="/files/wTIXpXVS6oBKa74Ipt7D" alt="Mute alerts on an incident"><figcaption><p>Mute alerts on an incident for a set duration.</p></figcaption></figure>

## Mute duration options

* 1 hour
* 10 hours
* 1 day
* 1 week
* 1 month
* Forever

{% hint style="warning" %}
Use **Forever** carefully. Muting an incident permanently means your team will never be alerted about it again, even if it keeps recurring.
{% endhint %}


# Reassign incidents

Reassign an incident to any team member directly from the dashboard, incident page, or service view.

You can reassign any incident to a team member. Once reassigned, they receive an email notification.

## How to reassign

Select one or more incidents and click **Reassign** in the incidents table header.

<figure><img src="/files/E9cyj4UOjM7yXzA45wcs" alt="Reassign button on the incidents table"><figcaption><p>The Reassign button appears in the incidents table header after selecting an incident.</p></figcaption></figure>

<figure><img src="/files/Sv3UGxIEvZznTfnUBvmk" alt="Reassign responders modal"><figcaption><p>Add or remove responders from the reassign modal.</p></figcaption></figure>

The reassign option is available from:

* Incidents page
* Inside the incident

{% hint style="danger" %}
You cannot reassign an incident to a team member with the **Support** role.
{% endhint %}

## Effect on escalations

Reassigning an incident does not affect the escalation policy. The policy continues running as configured.


# Sharing incidents

Share any incident as a public link with customers, stakeholders, or your team.

You can share any incident as a public link. This is useful for communicating outages to customers or embedding status updates in your docs.

## Enable public sharing

Public sharing is off by default. To turn it on, go to [Alerts under organisation settings](https://app.spike.sh/settings/general/alerts) and enable it for your organisation.

<figure><img src="/files/mzGB9yik6D0BF5JXGq3g" alt="Enable public sharing from organisation settings"><figcaption><p>Enable public sharing from organisation settings.</p></figcaption></figure>

{% hint style="info" %}
If you disable public sharing in organisation settings, all existing public incident links become private immediately.
{% endhint %}

## How to share an incident

Open an incident and click the **Share** button on the right-hand side of the incident details page.

<figure><img src="/files/rhz5QXM1TO5SVYYKRSXj" alt="Share an incident as a public link"><figcaption><p>Click Share on the incident details page to get a public link.</p></figcaption></figure>

{% hint style="info" %}
Each incident has a unique public link. The link stays the same regardless of how many times you toggle sharing on or off.
{% endhint %}


# Why does message parsing fail?

Message parsing fails when Spike cannot convert an integration's JSON payload into a readable format.

When an integration triggers an incident, Spike parses the JSON payload into a readable format. Some integrations send payloads in formats the parser doesn't recognise, and that's when it fails.

<figure><img src="/files/-MHEmlvh45Ej43hGqFwj" alt="Example of incident message parsing fail"><figcaption><p>An incident with a failed message parse in the incidents table.</p></figcaption></figure>

## Does it affect alerts?

Yes. Alerts still go out, but the incident message won't be included.

## Does it affect the incident?

No. The incident is still created and all details are available. Click the incident ID to view the full details.

## Report a parsing failure

When you see a parsing failure, report it with a single click. Each report helps improve the parser for future incidents.

<figure><img src="/files/-MHEqboZPW6BHzinoRrw" alt="Report a parsing failure with a single click"><figcaption><p>Report a parsing failure directly from the incidents table.</p></figcaption></figure>

{% hint style="warning" %}
Once the parser is fixed, existing incidents won't be updated. The fix applies to new incidents only.
{% endhint %}


# Rate limiting on duplicate incidents

Spike rate-limits duplicate incidents to reduce noise when the same incident triggers repeatedly in a short window.

Rate limiting kicks in when the same incident triggers too many times in a short window. It prevents your team from being overwhelmed with duplicate alerts.

## How it works

If an incident triggers 20 or more times within 60 seconds, Spike rate-limits it for one minute. During that window, duplicate incidents are suppressed. After one minute, rate limiting is lifted and new incidents from the same integration are allowed through again.

## FAQs

### What counts as a duplicate incident?

Incidents with the same title are considered duplicates.

### Does rate limiting affect other incidents?

No. Rate limiting applies to a specific incident, not the integration. All other incidents on the same integration continue to trigger normally.

### Will I be notified when rate limiting applies?

Yes. Admins receive an email alert when rate limiting kicks in. However, Spike sends no more than one email every 30 minutes.

### Will any incidents be missed?

No. An incident has to trigger 20 or more times within 60 seconds for rate limiting to apply. You would have received an alert for the very first occurrence.

### Is any action needed to lift rate limiting?

No. Rate limiting is automatic. It lifts itself after one minute.


# Resolve by Timer

Resolve by Timer automatically resolves incidents after a set duration if they haven't been manually resolved.

<figure><img src="/files/iMm9gLMC1AeMRISBILeY" alt="Resolve by Timer feature on Spike"><figcaption><p>Resolve by Timer on Spike.</p></figcaption></figure>

## What is Resolve by Timer?

Resolve by Timer automatically resolves an incident after a set duration. When an incident triggers, a countdown starts. If the incident isn't resolved before the countdown ends, Spike marks it as **Resolved by Timer**. You can cancel the timer at any point from the incident view.

You can set up Resolve by Timer in three ways:

* **Integration level**: applies to all incidents from an integration
* **Alert rules**: applies only when certain conditions are met
* **Playbooks**: applies as part of your response playbook

{% hint style="success" %}
Resolve by Timer is available on all plans.
{% endhint %}

## How it works

<figure><img src="/files/zoO1zluAnermlBRKmaxt" alt="Timer in different states on an incident"><figcaption><p>The timer countdown visible on an incident.</p></figcaption></figure>

When an incident triggers, a countdown begins automatically. The incident behaves normally during this time. It can be acknowledged, updated with notes, or manually resolved at any time.

If the countdown ends and the incident is still open, Spike marks it as **Resolved by Timer**. A badge and countdown indicator appear on the incident row and detail page.

<figure><img src="/files/CUFCDFbeOD6M8Tl57Frz" alt="Badge showing incident was resolved by timer"><figcaption><p>The badge shows the incident was resolved by timer.</p></figcaption></figure>

## How to set up Resolve by Timer on an integration

**Best for:** Applying the same timer to all incidents from a specific integration.

{% stepper %}
{% step %}
When editing or creating your integration, scroll to **Advanced Configuration** and locate the **Resolve by Timer** toggle.
{% endstep %}

{% step %}
Toggle **Resolve by Timer** on, enter your time value, select the unit (**Minutes**, **Hours**, or **Days**), and click **Save**.
{% endstep %}
{% endstepper %}

<figure><img src="/files/e3vrSpwWoHSqg8fJ2W3f" alt="Resolve by Timer setup in integration settings"><figcaption><p>Setting Resolve by Timer at the integration level.</p></figcaption></figure>

## How to set up Resolve by Timer with alert rules

**Best for:** Applying timers only to incidents that meet specific conditions.

{% stepper %}
{% step %}
While editing or creating an alert rule, set up your conditions to define which incidents the rule applies to.
{% endstep %}

{% step %}
In **Actions**, select **Resolve by Timer**. Enter the time value and select the unit (**Minutes**, **Hours**, or **Days**), then save or update the rule.
{% endstep %}
{% endstepper %}

<figure><img src="/files/36qUcsyFy3VgDtGTdzOY" alt="Resolve by Timer setup in alert rules"><figcaption><p>Setting Resolve by Timer via alert rules.</p></figcaption></figure>

## How to set up Resolve by Timer in playbooks

**Best for:** Including a timer in your incident response workflow.

{% stepper %}
{% step %}
While editing or creating a playbook, add an action to apply Resolve by Timer.
{% endstep %}

{% step %}
Choose when the timer should start: immediately on trigger, or when the incident status changes to **Acknowledged**.
{% endstep %}
{% endstepper %}

<figure><img src="/files/0FhHh5SY9uIDD5cnFkbK" alt="Resolve by Timer setup in playbooks"><figcaption><p>Setting Resolve by Timer via playbooks.</p></figcaption></figure>

## FAQs

### Can I remove the timer for a specific incident?

Yes. Click the remove timer button on the incident to cancel it.

### Can I set different times for different severity levels?

Yes. Use alert rules to apply different timers based on incident severity.

### What is the minimum resolution time?

1 minute. For most use cases, 15 to 30 minutes is a more practical minimum.

### Will I be notified when an incident resolves by timer?

This depends on your notification settings. You can configure alerts for resolved incidents.


# Phone alerts

Spike calls your phone when an incident triggers. During the call, you can acknowledge, resolve, or escalate.

When an incident triggers, Spike calls your phone. During the call, press a key to take action:

1. Press **4** to acknowledge
2. Press **6** to resolve
3. Press **9** to escalate

<figure><img src="/files/JKoLKBPOutHujJz1DjYz" alt="Phone alerts from Spike"><figcaption><p>Phone alerts from Spike.</p></figcaption></figure>

Check if your country or region supports phone calls on the [geo permissions page](https://app.spike.sh/geo-permissions).

{% hint style="info" %}
Make sure to verify your phone number before setting up phone alerts. You can update it in your [profile settings](https://app.spike.sh/settings/profile).
{% endhint %}


# SMS alerts

SMS alerts keep you informed of incidents without a phone call.

Spike sends an SMS when an incident triggers.

<figure><img src="/files/YUMH3K2E1yk6BKG4yEkD" alt="SMS alerts from Spike"><figcaption><p>SMS alerts from Spike.</p></figcaption></figure>

## Change incident status via SMS

You can acknowledge or resolve an incident by sending an SMS from your registered phone number. Send a new message (not a reply) with the incident ID:

1. **#\<incident\_id> ack** to acknowledge (example: `#1226 ack`)
2. **#\<incident\_id> res** to resolve (example: `#2071 res`)

Check if your country or region supports SMS on the [geo permissions page](https://app.spike.sh/geo-permissions).


# Mobile app alerts

Spike's mobile app delivers real-time incident alerts to your phone, with support for critical notifications on iOS and Android.

<figure><img src="/files/i39CnGRcEuN4bsnYW5le" alt="Spike mobile app showing incident alerts"><figcaption><p>Spike mobile app alerts.</p></figcaption></figure>

Spike's mobile app sends real-time incident alerts to your phone. Download the app, log in, and allow notifications to start receiving alerts.

{% tabs %}
{% tab title="iOS" %}

<figure><img src="/files/rKtd0GUhlm6BRyxFlrEl" alt="Download on the App Store"><figcaption></figcaption></figure>

[Download the iOS app](https://apps.apple.com/au/app/spike-sh/id1586777789) from the App Store.
{% endtab %}

{% tab title="Android" %}

<figure><img src="/files/a7untsCJVZxgcHRseetr" alt="Get it on Google Play"><figcaption></figcaption></figure>

[Download the Android app](https://play.google.com/store/apps/details?id=sh.spike.spike_sh_app) from the Play Store.
{% endtab %}
{% endtabs %}

## Setup

To receive mobile alerts, add phone notifications to your escalation policies. Spike will then deliver alerts directly to your device.

## Critical alerts

Critical alerts reach you even when your device is on Do Not Disturb.

### iOS

Spike supports Apple's critical notifications. Configure this in the app settings to apply to critical incidents only, or all incidents.

{% hint style="info" %}
Critical notifications make sound even when your iPhone is on mute.
{% endhint %}

### Android

Spike supports Android's critical notifications. Configure this in the app settings to apply to critical incidents only, or all incidents.

{% hint style="info" %}
Critical notifications make sound even when your Android device is on mute.
{% endhint %}


# Email alerts

Spike sends email alerts for incidents, including incident details, stack trace, and a public link.

In your escalation policy, select the **Email** option and choose the team member who should receive it.

<figure><img src="/files/O89983SFedAeYTw2v818" alt="Email alert from Spike"><figcaption><p>Email alert from Spike.</p></figcaption></figure>

{% hint style="info" %}
Spike sends emails from <alerts@spike.sh> and <alerts@spiked.sh>. To make sure alerts land in your inbox, add these addresses as contacts or download the vCard below.
{% endhint %}

{% content-ref url="/pages/-MBhMEdIfiXSznT13ayz" %}
[Our notification numbers](/administration/our-notification-numbers)
{% endcontent-ref %}


# Slack

The Spike app for Slack sends incident and on-call alerts to your channels, lets you run incident actions without leaving Slack, unfurls incident links, and answers @Spike mentions with an AI assistan

<figure><img src="/files/LV6xomtTZEouKuhXAzlE" alt="Spike app for Slack"><figcaption><p>Spike app for Slack.</p></figcaption></figure>

## Overview

The Spike app for Slack delivers incident and on-call alerts to the channels you choose and lets responders act on them in place: acknowledge, resolve, add notes, spin up an incident channel, pull the activity log, inspect the full payload, and open a linked Statuspage incident. It unfurls Spike incident links into an editable preview and includes `@Spike`, an AI assistant that declares incidents, manages responders and on-call overrides, and answers questions about your account from a mention. This page covers:

* [Install and connect](#install-and-connect)
* [Reconnecting an existing workspace](#reconnecting-an-existing-workspace)
* [Incident alerts in Slack](#incident-alerts-in-slack)
* [On-call alerts in Slack](#on-call-alerts-in-slack)
* [Link unfurling](#link-unfurling)
* [@Spike, the AI assistant](#spike-the-ai-assistant)

***

## Install and connect

Install the app once per Slack workspace. You need admin access to your Spike account and permission to add apps to your Slack workspace.

{% stepper %}
{% step %}

### Start from the dashboard

Go to **Integrations** in the Spike dashboard and click **Add to Slack**. Starting from the dashboard links the workspace to your Spike account; installing from the Slack marketplace alone does not make that link.
{% endstep %}

{% step %}

### Authorize in Slack

Slack shows the permission screen with the scopes the app requests (listed below) and asks you to pick the workspace to install into. Review and click **Allow**.
{% endstep %}

{% step %}

### Land back in Spike

After authorization you return to **Integrations**, where the workspace now shows as connected. You can then select channels for on-call alerts and add Slack as a step in your [escalation policies](https://app.spike.sh/escalations) to route incident alerts.
{% endstep %}
{% endstepper %}

Anyone on your team can link their personal Slack account to the app by sending the Spike bot a direct message and following the prompt. A linked account is what lets Spike attribute actions to a person and show them private channels they belong to.

### OAuth scopes requested

The app requests the following scopes. Each maps to a specific capability; the app does not use scopes beyond what these features need.

| Scope                                 | Used for                                                                                                                            |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `chat:write`                          | Posting incident and on-call alerts, updating those messages in place, and sending action results.                                  |
| `commands`                            | Receiving interactions from buttons and actions on alert messages.                                                                  |
| `app_mentions:read`                   | Detecting `@Spike` mentions so the assistant can respond.                                                                           |
| `assistant:write`                     | Powering the `@Spike` AI assistant experience in threads and channels.                                                              |
| `channels:read` / `groups:read`       | Listing public and private channels so you can pick alert destinations.                                                             |
| `channels:manage` / `groups:write`    | Creating a dedicated incident channel from an alert.                                                                                |
| `channels:history` / `groups:history` | Reading a thread's messages only when you ask `@Spike` to create an incident from that thread, so it can carry the context forward. |
| `links:read` / `links:write`          | Detecting Spike incident links and rendering the unfurled preview.                                                                  |
| `users:read` / `users:read.email`     | Matching Slack users to Spike responders when you link a personal account.                                                          |
| `im:write`                            | Sending direct messages, including the personal-account connection flow.                                                            |

{% hint style="info" %}
The app reads a thread's contents only when you explicitly ask `@Spike` to create an incident from that thread. It does not read channel messages otherwise.
{% endhint %}

***

## Reconnecting an existing workspace

The Slack app was rebuilt and now requests additional scopes. Workspaces installed on the previous app keep working for existing features but must reconnect before any of the new capabilities become available.

**Before you reconnect**, on the old app:

* Incident and on-call alerts continue to be delivered to your existing channels.
* Acknowledge and resolve on existing alerts continue to work.

**Does not work until you reconnect:**

* `@Spike`, the AI assistant.
* Link unfurling of incident links.
* Add a note, create an incident channel, fetch the activity log, view the full payload, and create a Statuspage incident from an alert.
* Adding an on-call override directly from an on-call alert.

### Steps to reconnect

{% stepper %}
{% step %}

### Open Integrations

Go to **Integrations** in the Spike dashboard and find your connected Slack workspace.
{% endstep %}

{% step %}

### Reconnect

Click **Reconnect** (or **Add to Slack** again for the same workspace). Slack shows the updated permission screen listing the new scopes.
{% endstep %}

{% step %}

### Approve the new scopes

Confirm the workspace and click **Allow**. The workspace returns to a connected state with the new scopes granted.
{% endstep %}
{% endstepper %}

### What survives a reconnect

| Configuration                                                      | Survives?             |
| ------------------------------------------------------------------ | --------------------- |
| Channel mappings (alert destinations)                              | Yes. Preserved as-is. |
| Escalation routing (Slack steps in policies)                       | Yes. Preserved as-is. |
| Notification rules (on-call channel selections and shift settings) | Yes. Preserved as-is. |

Reconnecting re-authorizes the existing installation and adds scopes; it does not reset your configuration.

{% hint style="warning" %}
Reconnecting is not restricted to the original installer. Any Spike admin with permission to add apps to the Slack workspace can reconnect. The person who reconnects becomes the current authorizing user for the installation.
{% endhint %}

***

## Incident alerts in Slack

<figure><img src="/files/rmYHi4ukheztcc7DTTXl" alt="Incident alert on Slack"><figcaption><p>Incident alert on Slack.</p></figcaption></figure>

Add Slack as a step in an [escalation policy](https://app.spike.sh/escalations) to send incident alerts to a channel. Each alert message shows the incident title, current status, priority and severity, the triggering integration, assigned responders, and a link back to the incident in Spike. Status changes made anywhere — Slack, phone, SMS, email, or the dashboard — update the message in place, so the channel always sees the current state.

### Actions on an alert

| Action                             | What it does                                                                                                                                       | Visible to                               | Requires                                                   |
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------- |
| **Acknowledge**                    | Marks the incident acknowledged in Spike and stops further escalation. Updates the message for everyone.                                           | Channel                                  | Linked account recommended so the ack is attributed to you |
| **Resolve**                        | Marks the incident resolved in Spike. Updates the message for everyone. If it was already resolved elsewhere, the app tells you.                   | Channel                                  | Linked account recommended for attribution                 |
| **Add a note**                     | Opens a dialog to write a note; the note is saved to the incident's timeline in Spike.                                                             | Channel                                  | Linked account for attribution                             |
| **Create an incident channel**     | Creates a dedicated channel for the incident and posts a link to it on the alert. Only the person who clicked is added initially; others can join. | Channel (the new channel link is posted) | `channels:manage` / `groups:write`                         |
| **Fetch the activity log**         | Pulls the incident's activity log from Spike and shows it to you.                                                                                  | Only you (ephemeral)                     | —                                                          |
| **View the full incident payload** | Shows the complete raw payload that triggered the incident.                                                                                        | Only you (ephemeral)                     | —                                                          |
| **Create a Statuspage incident**   | Creates an incident on your connected Statuspage and links it to the Spike incident, so status updates stay associated.                            | Channel                                  | A connected **Statuspage** integration                     |

{% hint style="info" %}
**Create a Statuspage incident** appears only when a Statuspage integration is connected to your Spike account. Without it, the action is not shown.
{% endhint %}

<figure><img src="/files/XJs5NpUSFUSy5H3guMLZ" alt="Dedicated incident channel in Slack"><figcaption><p>A dedicated incident channel created from an alert.</p></figcaption></figure>

{% hint style="info" %}
The two read-only actions — **Fetch the activity log** and **View the full incident payload** — reply only to the person who clicked, so large output does not flood the channel.
{% endhint %}

***

## On-call alerts in Slack

<figure><img src="/files/2Z7ZqXXjDj5DIX4rstRY" alt="On-call shift alert on Slack"><figcaption><p>On-call shift alert on Slack.</p></figcaption></figure>

Go to **Integrations** to choose the channels that receive on-call alerts. Alerts can be sent when a shift starts and when a shift ends. The message names the schedule, who is going on or off call, and the shift window.

### Add an on-call override from the alert

The alert includes an **Add override** action so you can arrange short-term coverage without opening the dashboard.

* **Fields:** the team member who will cover, and the start and end time of the coverage. An optional comment can be added for context.
* **What it writes:** the override is written to the same on-call schedule the alert came from — the exact schedule and rotation, not a separate one.
* **How long it lasts:** the override applies only for the start-to-end window you set. It is a one-time, non-recurring adjustment and does not change the underlying schedule. When the window ends, the normal rotation resumes.
* **Editing or removing it:** manage it from the [on-call schedule](https://app.spike.sh/on-calls) in the dashboard — open the schedule, find the override, and edit its times or delete it. See [On-call overrides](/oncall-schedules/override-an-on-call) for details. Anyone without a Viewer role can add or delete overrides.

***

## Link unfurling

Paste a Spike incident link into a channel and the app renders an inline preview of that incident instead of a plain URL.

The preview shows:

* Incident title
* Status
* Priority and severity
* Assigned responders
* The triggering integration
* A link to open the incident in Spike

Fields you can edit inline from the preview:

* **Status** — acknowledge or resolve the incident.
* **Responders** — add or remove people from the incident.

Editing from the preview changes the incident in Spike and is reflected everywhere the incident appears.

{% hint style="warning" %}
Unfurling requires the app to be present in the channel where the link is pasted. In a channel the app has not been added to, the link stays a plain URL. Add the app with `/invite @Spike` in that channel.
{% endhint %}

***

## @Spike, the AI assistant

`@Spike` responds to mentions in channels and threads. Mention it in plain language to run incident and on-call actions or ask about your account.

### What it can do

| Capability                                 | Example invocation                                         | Expected reply                                                                                                         |
| ------------------------------------------ | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Declare a new incident                     | `@Spike declare a new incident: checkout returning 500s`   | Creates the incident in Spike and replies with a link and its status.                                                  |
| Create an incident from the current thread | `@Spike turn this thread into an incident`                 | Reads the thread, creates an incident that carries the thread's context into the description, and replies with a link. |
| Add responders                             | `@Spike add @maya and @chen to INC-1043`                   | Adds those users as responders and confirms who was added.                                                             |
| Remove responders                          | `@Spike remove @chen from INC-1043`                        | Removes the responder and confirms.                                                                                    |
| Add an on-call override                    | `@Spike put @maya on call for payments from 6pm to 10pm`   | Writes a one-time override to that schedule for the window and confirms the coverage.                                  |
| Show who is on call                        | `@Spike who's on call for payments right now?`             | Replies with the current on-call responder(s) for the schedule.                                                        |
| List open incidents                        | `@Spike list open incidents`                               | Replies with the current open incidents and their status.                                                              |
| Answer questions about the account         | `@Spike which escalation policy does the API service use?` | Answers from your Spike account data.                                                                                  |

### Boundaries

* **What it cannot do:** `@Spike` does not delete incidents or schedules, change billing, alter account settings, or take destructive actions. It acts within the same permissions your Spike account exposes and asks for clarification when a request is ambiguous.
* **Scope of an action:** an action applies to the incident named in the request. It does not act on unrelated incidents or on incidents it was not mentioned about, and it does not take action on its own without a mention.
* **Whose permissions apply:** an action runs under the permissions of the person who invoked it — the linked Spike user who sent the mention — not the app installer. If that person is not linked or lacks permission for the action, `@Spike` declines and says so. Link your account by sending the Spike bot a direct message.
* **Activity log and attribution:** actions `@Spike` takes are recorded in the incident's activity log like any other action, and are attributed to the person who invoked them, noted as performed via `@Spike`.

### Availability

`@Spike` is available in every workspace running the current app. It becomes active once the workspace has been installed — or [reconnected](#reconnecting-an-existing-workspace) — with the current scopes; workspaces still on the previous app must reconnect before `@Spike` will respond.

***

## FAQs

### Do I have to reconnect if everything still works?

Alerts and acknowledge/resolve keep working on the old app, but the new actions, unfurling, and `@Spike` stay off until you [reconnect](#reconnecting-an-existing-workspace).

### I can't find a channel in the dropdown. What should I do?

Paste the channel ID. Open the channel in Slack, go to the **About** section, and copy the unique ID.

<figure><img src="/files/BAw8mX0AGg7mTGdiYDeX" alt="Finding a Slack channel ID"><figcaption><p>Find the channel ID in the About section.</p></figcaption></figure>

### Why can't I see a private channel when picking a destination?

You must be a member of the private channel, have a linked Slack account, and have added the app to that channel with `/invite @Spike`. Private channel names are visible only to linked members of that channel.

### Can non-Spike users use `@Spike` or join an incident channel?

Anyone in the workspace can be invited to an incident channel. For `@Spike` actions that change data, the person must have a linked Spike account with sufficient permission; otherwise `@Spike` declines.

### Can the same incident channel be reused for another incident?

No. A new channel is created per incident. Archive it after the incident is resolved to keep your workspace tidy.

### Does Spike read our messages?

No. The app reads a thread's contents only when you explicitly ask `@Spike` to create an incident from that thread. It does not otherwise read channel messages.


# Microsoft Teams

The Spike app for Microsoft Teams sends incident alerts to your channels. Acknowledge, resolve, or escalate incidents directly from Teams.

The Spike app for Microsoft Teams delivers incident alerts to your channels and on-call notifications to your DMs.

Key features:

* Real-time incident alerts in Teams channels
* Acknowledge, resolve, or escalate incidents from Teams
* Create incidents directly from Teams
* On-call shift notifications via DMs
* Check who is currently on-call

[Install the Teams app](https://teams.microsoft.com/l/app/aea2c271-cfd3-4360-86bb-4a16998b2bde?source=app-details-dialog) directly or search for "Spike" in the Teams Apps section. Contact your Teams admin if you need help with installation due to permission restrictions.

{% embed url="<https://www.youtube.com/watch?v=aLuMQXcaJEk>" %}

## Getting started

After installing the app, you'll receive a message with instructions on how to connect your Spike account. Run both the `connect` and `connect-org` commands for full functionality.

{% hint style="info" %}

* The `connect` command links your personal Spike account with Teams, enabling direct messages for on-call shift notifications and comment mentions.
* The `connect-org` command links your organisation's Spike account with Teams, enabling incident alerts in channels.

Run both commands for the best experience.
{% endhint %}

## Available commands

{% tabs %}
{% tab title="Commands in Microsoft Teams" %}

* **New incident** (`/create-new-incident`): Create a new incident from Teams.
* **Am I on-call?** (`/oncall-me`): Check if you are on-call and when your shift ends.
* **Who is on-call?** (`/oncall-now`): See who is currently on-call.
* **Disconnect** (`/disconnect`): Disconnects your personal Spike account from Teams. Incident alerts in channels continue.
  {% endtab %}
  {% endtabs %}

## Setting up incident alerts

Once connected, add any Teams channel to an escalation policy. Select **Teams** in the escalation policy and your available channels appear on the right.

<figure><img src="/files/Zj3cxGGbcI6Jo6s3NVIf" alt="Incident alerts on Microsoft Teams"><figcaption><p>Incident alerts in a Teams channel.</p></figcaption></figure>

Any team member can take action on an incident directly from Teams. Creating a dedicated channel for responders is a good practice.

If an incident is acknowledged or resolved via the Spike dashboard, phone, email, or any other channel, the Teams message updates automatically with the latest status, including suppressed and repeat counts.

## Direct messages

<figure><img src="/files/yXQzA1ZtXyOdqToGx6oa" alt="Direct messages from Spike on Microsoft Teams"><figcaption><p>Direct messages from Spike in Teams.</p></figcaption></figure>

After running the `connect` command, Spike sends direct messages for:

1. War room invites
2. Comment mentions
3. On-call shift alerts

Use `/oncall-me` and `/oncall-now` to check on-call schedules directly in Teams.

## Connecting multiple groups

The Spike bot connects to multiple groups of channels in Teams. This is useful for organisations with several teams.

### How to connect

1. In Teams, go to the channel of the group you want to connect.
2. Type `@Spike.sh connect-org` to connect with Spike.

There is no limit on how many groups can be connected.

### After connecting

* Visit your [Escalation Policies](https://app.spike.sh/escalations) and add the desired channel to receive alerts.
* The newly connected Teams channels appear in the dropdown.

### Finding channels in escalations

Teams shows the group name only alongside the first channel from each group. The first channel appears as "standard" instead of the actual channel name. Other channels from the same group don't show the group name. This can cause confusion if you have similarly named channels across different groups.

<figure><img src="/files/aTVGJuMW8lsgSH6dVrRs" alt="Naming convention for Microsoft Teams channels in escalations"><figcaption><p>How Teams channel names appear in escalation policies.</p></figcaption></figure>

For example:

* **Spike.sh - standard**: the first channel in the "Spike.sh" group, even if the channel's actual name is different
* **Engineering**: another channel in the same group, shown without the group name
* **Developer space - standard**: the first channel in "Developer space"; actual name is "dev space"
* **Incidents**: another channel in the same group, shown without the group name

## Deprecated: incoming webhook

{% hint style="warning" %}
Microsoft deprecated all new webhook connectors on 15th September 2024. Spike deprecated incoming webhook support on 26th November 2024.
{% endhint %}

<figure><img src="/files/-MV1f3q4R9SJXFBy4Zod" alt="Incident alert via incoming webhook on Teams"><figcaption><p>Incident alert via the deprecated incoming webhook method.</p></figcaption></figure>


# WhatsApp

Get incident alerts and on-call shift notifications on WhatsApp. Acknowledge or resolve incidents without leaving WhatsApp.

You can receive alerts for:

* New incidents
* Acknowledge timeout
* On-call shift start
* On-call shift end

<figure><img src="/files/pPdnfeZrVVSD0nDdk1iX" alt="WhatsApp alerts from Spike"><figcaption><p>WhatsApp alerts from Spike.</p></figcaption></figure>

## How to set up

WhatsApp is enabled by default for all phone numbers. Add it to your escalation policies or configure on-call notifications in [On-call settings](https://app.spike.sh/settings/personal-on-call).

<figure><img src="/files/HehibaoJhvqqE7lDsNdz" alt="WhatsApp in an escalation policy"><figcaption><p>Adding WhatsApp to an escalation policy.</p></figcaption></figure>

{% hint style="success" %}
To acknowledge or resolve an incident, reply to the Spike WhatsApp bot with `ack test-123` or `res test-123`, where `test-123` is the incident ID.
{% endhint %}

If you prefer a different messaging bot, Spike also has a Telegram integration:

{% content-ref url="/pages/Gb7bmAayc9oQ7nvFiRBf" %}
[Telegram](/alerts/telegram)
{% endcontent-ref %}


# Telegram

Get incident alerts and on-call shift notifications on Telegram. Acknowledge or resolve incidents with a simple command.

Spike's Telegram bot is [@SpikeHQ\_bot](https://t.me/SpikeHQ_bot). Run `/connect` to link your Spike account and start receiving alerts.

You can receive alerts for:

* New incidents
* On-call shift start
* On-call shift end

<figure><img src="/files/CoUFoaHjzw1DGgqtRQEK" alt="Incident alert on Telegram from Spike"><figcaption><p>Incident alert on Telegram.</p></figcaption></figure>

Add Telegram to your [escalation policies](https://app.spike.sh/escalations) to receive incident alerts. For on-call shift alerts, visit [On-call settings](https://app.spike.sh/settings/personal-on-call).

{% hint style="success" %}
Use `/ack` or `/acknowledge` to acknowledge an incident. Use `/res` or `/resolve` to resolve one.
{% endhint %}

{% hint style="info" %}
Telegram can only be connected to one Spike account at a time.
{% endhint %}


# Discord

Spike sends incident alerts to Discord channels. Set it up using a webhook.

<figure><img src="/files/i50PrzOZLcjXavhaoSCn" alt="Incident alert on Discord from Spike"><figcaption><p>Incident alert on Discord.</p></figcaption></figure>

## How to set up

{% stepper %}
{% step %}

### Create a webhook in Discord

Navigate to your channel's **Settings** > **Integrations** and select **Webhooks**.

<figure><img src="/files/fg7hgTGw5evMZkuIO6nb" alt="Webhook settings in a Discord channel"><figcaption><p>Webhook settings in a Discord channel.</p></figcaption></figure>
{% endstep %}

{% step %}

### Name and copy the webhook URL

Name the webhook **Spike** and copy the URL. You can use the badge below as the avatar.

{% file src="/files/-MaByxWw7T3nNKjWl5bJ" %}
Spike badge for Discord
{% endfile %}

<figure><img src="/files/VTATwC8IpneiRb5Os77h" alt="Naming the webhook and copying the URL"><figcaption><p>Name the webhook and copy the URL.</p></figcaption></figure>
{% endstep %}

{% step %}

### Paste the URL in Spike

Go to **Integrations**, paste the webhook URL in the Discord setup, and save.

<figure><img src="/files/TeHGPXHdPjkaI1KmvalR" alt="Saving the Discord webhook URL in Spike"><figcaption><p>Paste the webhook URL in Spike integrations.</p></figcaption></figure>

{% hint style="success" %}
Once saved, Spike sends a test message to your Discord channel.
{% endhint %}
{% endstep %}

{% step %}

### Add Discord to your escalation policy

Select Discord as a step in your [escalation policy](https://app.spike.sh/escalations).

<figure><img src="/files/kcUMXdBVLsWHucidmVlE" alt="Discord as a step in an escalation policy"><figcaption><p>Adding Discord to an escalation policy.</p></figcaption></figure>
{% endstep %}
{% endstepper %}

## Remove a Discord channel

You can remove a Discord channel from Spike, but make sure it's not part of any active escalation policy before doing so.

{% hint style="info" %}
Discord doesn't support acknowledging or resolving incidents from the channel. Use the Spike dashboard, phone, SMS, or other alert channels to take action.
{% endhint %}


# Alert routing rules

Alert routing rules apply automated actions to incidents based on conditions you define.

Alert routing rules evaluate conditions on every incoming incident and execute actions when those conditions are met. You can chain multiple conditions with AND/OR logic and apply multiple rulesets to a single incident.

<figure><img src="/files/-Mahc_eg_ZuRJDP_MqBA" alt="Example alert routing rule in Spike"><figcaption><p>An example alert routing rule with conditions and actions.</p></figcaption></figure>

{% hint style="info" %}
Not sure where to start? Spike offers [alert routing rule templates](https://spike.sh/templates/alert-rule-templates) with pre-built configurations.
{% endhint %}

## Conditions

Each condition evaluates to true or false. If any condition block evaluates to true, Spike executes the configured actions.

### Apply to all incidents

Evaluates to true for every incident. Use this when an action should run unconditionally.

### Incident title

Evaluates to true if the incident title contains, does not contain, equals, or does not equal a specific text or phrase.

### Incident details

Evaluates to true if a specific key in the incident details contains, does not contain, equals, or does not equal a specific value. Enter a key or nested key to compare against.

### Incident has repeated

Evaluates to true if the total number of incident occurrences crosses a threshold you set.

### Incident has repeated within

Evaluates to true if incident occurrences cross a threshold within a given timeframe.

### Incident suppressed

Evaluates to true if the incident has been suppressed at least a minimum number of times.

### Incident suppressed within

Evaluates to true if the incident has been suppressed at least a minimum number of times within a given timeframe.

### Priority

Evaluates to true if the incident has a given priority. [Learn more about priority](https://docs.spike.sh/incidents/priority-and-severity#priority)

### Severity

Evaluates to true if the incident has a given severity. [Learn more about severity](https://docs.spike.sh/incidents/priority-and-severity#severity)

### Time of day

Evaluates to true if the incident triggers between timestamps you set, in any timezone.

### Days of week

Evaluates to true if the incident triggers on specific days of the week.

## Actions

Set one or more actions to execute when conditions are met.

### Reassign incident to

Assigns the incident to a team member. An email notification is sent to the assignee.

### Load escalation policy

Replaces the default escalation policy with one you specify. Useful for routing high-severity incidents to a more comprehensive policy.

### Change integration

Routes the incident to a different integration based on conditions you define. Use this to automatically move incidents to the right integration and team without manual intervention.

For example, an incident arrives under the API integration. If the title contains "payments", Spike moves it to the Payments integration and alerts the payments team instead.

Pair this with the **Incident suppressed** or **Incident suppressed within** conditions to switch integrations when an incident is being suppressed too frequently.

### Ignore incident

Prevents the incident from being created. No alerts are sent and the incident doesn't appear on the dashboard.

### Mark priority as

Sets the incident's priority. [Learn more about priority](https://docs.spike.sh/incidents/priority-and-severity#priority)

### Mark severity as

Sets the incident's severity. [Learn more about severity](https://docs.spike.sh/incidents/priority-and-severity#severity)

### Trigger outbound webhook

Sends a webhook to a URL you specify when the conditions are met.

### Acknowledge incident

Creates the incident in the acknowledged state. No alerts are sent, but the incident appears as open on the dashboard.

### Resolve incident

Creates the incident in the resolved state. No alerts are sent and the incident doesn't appear as open on the dashboard.

### Resolve by Timer

Automatically resolves the incident after a set duration. [Learn more about Resolve by Timer](https://github.com/spikehq/docs.spike.sh/tree/main/alerts/resolve-timer.md)

## Route to other team

Enable the **Route to other team** toggle in the Actions section to send an incident from one team to another. Select the source team, destination team, and destination integration.

## Applying multiple rulesets

Multiple alert routing rulesets can apply to a single incident. For example:

<figure><img src="/files/sIvTAPn1oTJxnDw60MBl" alt="Alert routing ruleset example"><figcaption><p>Ruleset 1: mark as P5 if title contains "syslog".</p></figcaption></figure>

If an incident title contains "syslog", both rulesets apply: the incident is marked P5 and the escalation policy changes to Slack dev.

{% hint style="info" %}
No more than 5 alert routing rulesets apply to a single incident.
{% endhint %}


# Title Remapper

Title Remapper programmatically rewrites incident titles in real-time using payload data from your integrations.

Title Remapper programmatically rewrites incident titles using HandlebarsJS templates and the payload your integration sends. Use it to add context like a project name or environment, so responders immediately understand what's happening.

**Without Title Remapper**

```
var temp is not defined
```

**With Title Remapper**

```
var temp is not defined for Notification service
```

## How to set up

{% stepper %}
{% step %}

### Create a new remapper

Go to **Automation** > **Title Remapper** and create a new remapper.

<figure><img src="/files/2x4GwQ1ZfJ9swDmMpfq2" alt="Title Remapper in Automation menu"><figcaption><p>Title Remapper is under Automation in the sidebar.</p></figcaption></figure>
{% endstep %}

{% step %}

### Name your remapper

Provide a name for the remapper.

<figure><img src="/files/ExnkCAKa7H5kQ8uJx97y" alt="Naming the Title Remapper"><figcaption><p>Name your remapper.</p></figcaption></figure>
{% endstep %}

{% step %}

### Select an integration

Choose the integration whose payload you want to parse.

<figure><img src="/files/waSEvMfNH7yTqXXHqNPG" alt="Selecting an integration for Title Remapper"><figcaption><p>Select an integration to see its payload.</p></figcaption></figure>

Spike displays the integration's JSON payload in the preview section. Write your HandlebarsJS parser in the code editor on the left. Press **Try Now** to test the output, then hit **Save**.

{% hint style="danger" %}
Avoid `#each`, `#unless`, and any other loop constructs in your parser.
{% endhint %}
{% endstep %}
{% endstepper %}

## Caveats

1. One Title Remapper can be linked to multiple integrations.
2. Link a remapper only to integrations it was built for. Linking a remapper built for AWS to a non-AWS integration can cause errors and missing titles.
3. If multiple Title Remappers are linked to the same integration, only the last linked remapper applies.

## Examples

All below examples use this payload:

```json
data: {
  "body": {
    "event_definition_id": "this-is-a-test-notification",
    "event_definition_type": "test-dummy-v1",
    "event_definition_title": "Event Definition Test Title",
    "event_definition_description": "Event Definition Test Description",
    "job_definition_id": "163",
    "job_trigger_id": "8999",
    "event": {
      "id": "NotificationTestId",
      "event_definition_type": "notification-test-v1",
      "event_definition_id": "EventDefinitionTestId",
      "origin_context": "urn:graylog:message:es:testIndex_42:b5etest--id-4-90ed-0dbeefbaz",
      "timestamp": "2021-05-05T09:42:42.823Z",
      "timestamp_processing": "2021-05-05T09:42:42.823Z",
      "timerange_start": null,
      "timerange_end": null,
      "streams": [
        "802109582109518290"
      ],
      "source_streams": [],
      "message": "Notification test message triggered from user <richard>",
      "source": "12837126856181276589235717181276589235716",
      "key_tuple": [
        "testkey"
      ],
      "key": "testkey",
      "priority": 2,
      "alert": true,
      "fields": {
        "field1": "value1",
        "field2": "value2"
      }
    },
    "backlog": []
  },
  "message": "Notification test message triggered from user <richard>"
}
```

### Basic

**Just the message**

```
{{data.message}}
```

Output: `Notification test message triggered from user <richard>`

**Get event title**

```
{{data.body.event_definition_title}}
```

Output: `Event Definition Test Title`

**Get more details about the event**

```
[{{data.body.event_definition_type}}] has incident => {{data.body.event_definition_title}}
```

Output: `[test-dummy-v1] has incident => Event Definition Test Title`

### Advanced

Use built-in HandlebarsJS helpers or the additional helpers from Spike's [Swag fork](https://github.com/spikehq/swag).

**Conditional title**

```
{{#if data.body.event_definition_desc}}
  Title: {{data.body.event_definition_title}}
{{else if data.body.event.message}}
  Message: [{{data.body.event.key}}] - {{data.body.event.message}}
{{else}}
  {{data.message}}
{{/if}}
```

Output: `Message: [testkey] - Notification test message triggered from user <richard>`

**Swag helpers**

```
{{uppercase data.message}} with priority {{add data.body.event.priority 1}}
```

Output: `NOTIFICATION TEST MESSAGE TRIGGERED FROM USER <RICHARD> with priority 3`

Visit the [Swag GitHub repo](https://github.com/spikehq/swag) for more examples.


# Personal alerts management

Manage how, when, and where you receive incident alerts to suit your schedule and reduce alert fatigue.

Spike gives you full control over your personal alert preferences. Configure how alerts reach you during office hours, outside office hours, and when you're away.

For example, when you're out of office, you can configure Spike to stop sending alerts. You can also reassign responsibilities to another team member when you're off duty.

## Example configurations

* **During office hours**: Route all phone call alerts to app notifications.
* **Outside office hours**: Prefer receiving alerts via SMS, WhatsApp, or Telegram.
* **Out of office**: Forward all alerts to another team member.

## Explore

<table data-card-size="large" data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Resolved incident alerts</strong></td><td>Alerts when incidents are resolved</td><td><a href="/pages/tcItPmwLUl0mWX7hXPRN">/pages/tcItPmwLUl0mWX7hXPRN</a></td><td><a href="/files/i02pHCAcjjxEDvLvnL2g">/files/i02pHCAcjjxEDvLvnL2g</a></td></tr><tr><td><strong>During office hours</strong></td><td>Custom routing of alerts during office hours</td><td><a href="/pages/kby7JcfG1pXkgf8Ous1f">/pages/kby7JcfG1pXkgf8Ous1f</a></td><td><a href="/files/Op8TdsJtI6CglwNLrbaJ">/files/Op8TdsJtI6CglwNLrbaJ</a></td></tr><tr><td><strong>Out of office</strong></td><td>Step away confidently by scheduling Out of office</td><td><a href="/pages/z6JBKPPBPBlr6lmjsAGu">/pages/z6JBKPPBPBlr6lmjsAGu</a></td><td><a href="/files/0UUQeewHIUzNsP1o13I5">/files/0UUQeewHIUzNsP1o13I5</a></td></tr></tbody></table>


# During office hours

Customize how alerts are routed during office hours to fit your work preferences.

<figure><img src="/files/YRqvUXeY3xQXnBrTDcrz" alt="Alerts during office hours settings in Spike"><figcaption><p>Configure alert preferences for office hours.</p></figcaption></figure>

## Alerts during office hours

Customize how you receive alerts during office hours, whether for incident triggers or resolutions. If you’re working at your desk, you might prefer to route all SMS alerts to the [mobile app](/alerts/mobile-app-alerts) for better accessibility. Field engineers may prefer to continue receiving alerts via [SMS](/alerts/sms).

{% hint style="info" %}
On-call shift start/end alerts remain unaffected. If an incident occurs during your on-call shift within office hours, alerts will be sent according to your configured settings.
{% endhint %}

#### Set up

{% tabs %}
{% tab title="Mobile app" %}

* Go to `Settings`
* Tap on `Alerts during office hours`
* Configure your alert preferences and tap `Save`
  {% endtab %}

{% tab title="Desktop" %}

* Navigate to `Your account settings`([Dashboard link](https://app.spike.sh/settings/personal-modes#office-mode-alerts))
* Click `Modes`
* Configure your alert preferences and click `Save`
  {% endtab %}
  {% endtabs %}

### Setting office hours

By default, your office hours are set to Monday through Friday, 9 AM to 5 PM in your local timezone ([found on profile page](https://app.spike.sh/settings/personal-profile)). You can customize these hours to fit your schedule, including different days and times.

#### Set up

{% tabs %}
{% tab title="Mobile app" %}

* Go to `Settings`
* Tap on `Office hours`
* Select your preferred days and times
  {% endtab %}

{% tab title="Desktop" %}

* Navigate to `Your account settings` ([Dashboard link](https://app.spike.sh/settings/personal-modes))
* Click `Modes`
* Select your times and click `Save`
  {% endtab %}
  {% endtabs %}

**Download Spike mobile app**

* [iOS](https://apps.apple.com/au/app/spike-sh/id1586777789)
* [Android](https://play.google.com/store/apps/details?id=sh.spike.spike_sh_app)

#### Explore

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Resolved incident alerts</strong></td><td>Alerts when incidents are resolved</td><td><a href="/pages/tcItPmwLUl0mWX7hXPRN">/pages/tcItPmwLUl0mWX7hXPRN</a></td><td><a href="/files/i02pHCAcjjxEDvLvnL2g">/files/i02pHCAcjjxEDvLvnL2g</a></td></tr><tr><td><strong>Out of office</strong></td><td>Step away confidently by scheduling Out of office</td><td><a href="/pages/z6JBKPPBPBlr6lmjsAGu">/pages/z6JBKPPBPBlr6lmjsAGu</a></td><td><a href="/files/0UUQeewHIUzNsP1o13I5">/files/0UUQeewHIUzNsP1o13I5</a></td></tr></tbody></table>


# Out of office

Set up Out of Office mode to temporarily pause alerts, schedule time off, and seamlessly offload duties to team members.

<figure><img src="/files/t0MjTUT5gzT4929sd67H" alt="Out of office mode in Spike"><figcaption><p>Schedule Out of office and offload duties to a teammate.</p></figcaption></figure>

## Out of office

Heading out of the office? You can schedule or instantly set up **Out of Office**, so your duties including on-call responsibilities and incident alerts are covered by a colleague.

Out of Office mode is designed to support better work-life balance. **While you're away, Spike will not send you any alerts**. You can even schedule this ahead of time, and an email will be sent to the admins in your organization, keeping everyone informed.

### Offloading Duties

When setting up Out of Office, you can offload your responsibilities to a selected team member. Spike takes care of everything automatically—there’s no need to manually move members in the on-call schedule or add overrides. Your on-call shifts and incident alerts will be temporarily rerouted to the designated member.

{% hint style="info" %}
Although optional, we recommend offloading your duties to make sure incidents are addressed in your absence and you are not disturbed.
{% endhint %}

#### Set up

{% tabs %}
{% tab title="From settings on Desktop" %}

* Navigate to `Your account settings` ([Dashboard link](https://app.spike.sh/settings/personal-modes#vacation-mode))
* Click `Modes`
* Scroll down to **Out of office**
* Add **Starts on** and **Ends on**, then click `save`

*Optionally, select a member to offload duties*
{% endtab %}

{% tab title="From the header on Desktop" %}

* From the header, click `Select a mode`
* Select **Out of office** from the dropdown
* Add **Starts on** and **Ends on**, then click `save`

*Optionally, select a member to offload duties*
{% endtab %}
{% endtabs %}

#### Explore

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Resolved incident alerts</strong></td><td>Alerts when incidents are resolved</td><td><a href="/pages/tcItPmwLUl0mWX7hXPRN">/pages/tcItPmwLUl0mWX7hXPRN</a></td><td><a href="/files/i02pHCAcjjxEDvLvnL2g">/files/i02pHCAcjjxEDvLvnL2g</a></td></tr><tr><td><strong>During office hours</strong></td><td>Custom routing of alerts during office hours</td><td><a href="/pages/kby7JcfG1pXkgf8Ous1f">/pages/kby7JcfG1pXkgf8Ous1f</a></td><td><a href="/files/Op8TdsJtI6CglwNLrbaJ">/files/Op8TdsJtI6CglwNLrbaJ</a></td></tr></tbody></table>


# Resolved incident alerts

Customize how and when you receive notifications for resolved incidents, keeping you informed without unnecessary alerts.

<figure><img src="/files/ypsyNNR7esYJRuKWsctS" alt="Resolved incident alerts configuration in Spike"><figcaption><p>Configure how you receive resolved incident alerts.</p></figcaption></figure>

## Resolved incident alerts

Spike notifies you when incidents are automatically resolved or resolved by a responder. This helps provide closure and peace of mind, ensuring you’re informed that an incident you were alerted to has been resolved. It completes the alert cycle effectively.

By default, only current responders and members who were alerted when the incident was triggered will receive a resolved incident alert.

You can customize how you receive resolved incident alerts, including different mediums during office hours.

{% hint style="info" %}
The Spike mobile app is ideal for instant notifications when incidents are resolved.
{% endhint %}

#### Set up

{% tabs %}
{% tab title="Mobile app" %}

* Go to `Settings`
* Tap on `Resolved alerts`
* Configure your alerts

**Download Spike mobile app**

* [iOS](https://apps.apple.com/au/app/spike-sh/id1586777789)
* [Android](https://play.google.com/store/apps/details?id=sh.spike.spike_sh_app)
  {% endtab %}

{% tab title="Desktop" %}

* Navigate to `Your account settings` ([Dashboard link](https://app.spike.sh/settings/personal-modes#resolved-alerts))
* Scroll down to `Resolved alerts`
* Congiure your alerts and click `Save`
  {% endtab %}
  {% endtabs %}

### FAQs

<details>

<summary>Can I get notifications for all incidents?</summary>

No, by design, Spike only alerts current responders and members who were previously notified of the incident. This prevents alert fatigue and ensures that those who were not involved are not disturbed unnecessarily.

</details>

<details>

<summary>Will I receive another alert on Slack, Microsoft Teams, or Discord?</summary>

**Slack and Microsoft Teams:** There will be no new alert, but the original alert message in your Slack or Teams channels will automatically refresh to indicate the resolved status.

**Discord:** No additional alert will be sent.

</details>

<details>

<summary>Why can't I receive a phone call for a resolved incident alert?</summary>

Resolved incident alerts are important, but not critical enough to wake you in the middle of the night with a phone call. This avoids confusion—when you receive a phone call from Spike, it will always be for a newly triggered incident, so there’s no need to guess whether it’s for a new or resolved alert.

</details>

***

#### Explore

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>During office hours</strong></td><td>Custom routing of alerts during office hours</td><td><a href="/pages/kby7JcfG1pXkgf8Ous1f">/pages/kby7JcfG1pXkgf8Ous1f</a></td><td><a href="/files/Op8TdsJtI6CglwNLrbaJ">/files/Op8TdsJtI6CglwNLrbaJ</a></td></tr><tr><td><strong>Out of office</strong></td><td>Step away confidently by scheduling Out of office</td><td><a href="/pages/z6JBKPPBPBlr6lmjsAGu">/pages/z6JBKPPBPBlr6lmjsAGu</a></td><td><a href="/files/0UUQeewHIUzNsP1o13I5">/files/0UUQeewHIUzNsP1o13I5</a></td></tr></tbody></table>


# Introduction to services

Services scope your infrastructure in Spike. Each service can hold multiple integrations and map to a microservice, product area, or team.

A service in Spike represents a distinct part of your infrastructure — a backend API, a payments module, a worker queue. Every integration belongs to a service, and every incident is tied to one.

## Why services matter

Services give you a clean way to track incidents by area. When something breaks, you can see exactly which service is involved, who owns it, and what's happening across your stack.

## Affected services

When an incident is triggered, its service is marked as affected. If multiple integrations fire at once, Spike surfaces all the involved services in one view — so responders know where to focus.

## Create a service

<figure><img src="/files/B6vHYRZ3VCwNDsnW70RA" alt="Services in Spike"><figcaption><p>Services in Spike.</p></figcaption></figure>

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}


# Escalation policies

Escalation policies define who gets alerted and when, so incidents don't go unacknowledged.

An escalation policy defines who gets alerted, through which channel, and in what order. When an incident triggers, Spike follows the policy until someone acknowledges or resolves it.

<figure><img src="/files/mjAPwg2hLGW1FT03Fhn3" alt="Escalation policies list in Spike"><figcaption><p>Escalation policies in Spike.</p></figcaption></figure>

## How escalation policies work

Each policy has one or more levels. After Spike sends alerts at the first level, it waits for a configured timeout before moving to the next. If no one acknowledges within that window, the incident escalates to the next level automatically.

You can alert multiple people at the same level, across different channels or the same one. You can configure the timeout between levels and create as many levels as you need.

<figure><img src="/files/TF0AGFHvEv0VPoAsbqjE" alt="Escalation policy with two levels in Spike"><figcaption><p>An escalation policy with two levels and a 5-minute timeout.</p></figcaption></figure>

{% hint style="info" %}
Escalations don't repeat automatically. Configure repeat escalations in your integration settings. [Learn more](/escalations/repeat-escalations)
{% endhint %}

{% hint style="info" %}
You can create unlimited escalation policies with multiple levels.
{% endhint %}


# How to create an escalation policy

Create an escalation policy to define who gets alerted and when during an incident.

{% hint style="info" %}
Not sure where to start? Spike offers [escalation policy templates](https://spike.sh/templates/escalation-templates) with pre-built configurations.
{% endhint %}

{% stepper %}
{% step %}

### Go to Escalations

Navigate to the [Escalations section](https://app.spike.sh/escalations) on the dashboard and click **New escalation**.

<figure><img src="/files/rlGCP1xQ9R99RdIv5GKu" alt="Escalations section on the Spike dashboard"><figcaption><p>Select Escalations from the sidebar.</p></figcaption></figure>
{% endstep %}

{% step %}

### Configure the policy

1. Give the policy a clear, identifiable name.
2. Add one or more escalation levels.
3. Set a timeout for each level. This is how long Spike waits before escalating to the next level if the incident isn't acknowledged or resolved.

<figure><img src="/files/PqYkIaJQfU3UAoUF6Ic1" alt="An example escalation policy in Spike"><figcaption><p>An example escalation policy with two levels.</p></figcaption></figure>

{% hint style="info" %}
Leave the time interval blank on the last escalation step.
{% endhint %}
{% endstep %}

{% step %}

### Save

Click **Save** to activate the policy.
{% endstep %}
{% endstepper %}

## Simultaneous alerts

To alert multiple people or channels at the same time, add them as separate alerts within the same escalation level. Avoid creating a new escalation level with a 0-minute interval. This is not the same as simultaneous alerting.

<figure><img src="/files/TF6OcnWT8rp4NGn5Z8au" alt="Correct: multiple alerts within the same escalation level"><figcaption><p>Correct: multiple alerts within one escalation level.</p></figcaption></figure>


# Repeat escalations

Repeat escalations restart the policy from the top when no one acknowledges or resolves an incident.

When all escalation levels are exhausted and no one has taken action, repeat escalations restart the policy from the top. Spike repeats the cycle until someone acknowledges or resolves the incident, or the repeat limit is reached.

## How it works

Consider this escalation policy:

1. Alert on #on-call-alerts Slack channel
2. Email Alex James
3. Phone call to Alex James

<figure><img src="/files/RoiTacBxIAkhLUtBwsuv" alt="Example escalation policy in Spike"><figcaption><p>An example escalation policy with three levels.</p></figcaption></figure>

If no one on the Slack channel takes action and Alex doesn't respond, Spike restarts from Step 1 after a default interval of 10 minutes.

{% hint style="info" %}
Escalations repeat a maximum of 5 times to prevent alert fatigue.
{% endhint %}

## How to set up

Repeat escalations are configured per integration, not globally. This gives you control over which integrations are critical enough to never miss. Configure it while adding or editing an integration. Select the **Repeat escalation** checkbox and save.

<figure><img src="/files/SskQqSiRwmdlA2gi1rrO" alt="Configure repeat escalations for an integration"><figcaption><p>Enable repeat escalations on an integration.</p></figcaption></figure>

## FAQs

### What stops repeat escalations?

Acknowledging or resolving the incident stops the repeat cycle. Alerts stop automatically once either action is taken.

{% content-ref url="/pages/-Ln7Jxx-MbPRgKiIKLTu" %}
[How to change incident status](/incidents/how-to-change-incident-status)
{% endcontent-ref %}

### How many times do escalations repeat?

By default, escalations repeat up to 5 times. After that, no further alerts are sent.


# Archive escalation policy

Archive an escalation policy when it's no longer in use.

You can archive an escalation policy when it's no longer associated with any integration. Visit your [escalations page](https://app.spike.sh/escalations), select a policy, click the settings icon, and select **Archive**.

<figure><img src="/files/oi0vV1nSihlG2WeU94Uq" alt="Archive option under escalation policy settings"><figcaption><p>Select Archive under the policy settings.</p></figcaption></figure>

## Restrictions

If the policy is in use on one or more integrations, archiving is not available. Update those integrations to use a different escalation policy first.

{% hint style="success" %}
Once the policy is no longer associated with any integration, you can archive it.
{% endhint %}

## FAQs

### Does archiving affect on-call schedules?

No. Archiving an escalation policy does not affect on-call schedules.

### Does archiving affect existing incidents?

No. Existing incidents retain a reference to the archived policy. Spike displays a notice on those incidents to flag that the policy has been archived.

### How do I restore an archived policy?

There's no self-serve restore option. Contact support via chat from the dashboard or email <support@spike.sh>.


# Task management integrations

Create tickets, tasks, or issues in your project management tool directly from Spike incidents.

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Linear</td><td>Connect with Linear to create issues about incidents</td><td></td><td><a href="/files/M8oNFtvcxdnYYhCrUbLo">/files/M8oNFtvcxdnYYhCrUbLo</a></td><td><a href="/pages/jivdWSHdlmuF1jIUZqJ9">/pages/jivdWSHdlmuF1jIUZqJ9</a></td></tr><tr><td>Jira</td><td>Supports Jira cloud to create tickets about incidents</td><td></td><td><a href="/files/L9BB1jtWEWiUdVPj4bou">/files/L9BB1jtWEWiUdVPj4bou</a></td><td><a href="/pages/H0APn9K1AE2nvTyGFZqg">/pages/H0APn9K1AE2nvTyGFZqg</a></td></tr><tr><td>Shortcut</td><td>Shortcut connect enables creating tickets with all incident details</td><td></td><td><a href="/files/OAJJMTZqILBUN0No68Eq">/files/OAJJMTZqILBUN0No68Eq</a></td><td><a href="/pages/6XIrRnOqR7BKph44VTPr">/pages/6XIrRnOqR7BKph44VTPr</a></td></tr><tr><td>ClickUp</td><td>ClickUp connection helps add incidents to your workspace</td><td></td><td><a href="/files/RTzwJH9xcvHqzjQaVAvw">/files/RTzwJH9xcvHqzjQaVAvw</a></td><td><a href="/pages/aPXjQMq1Y85tTBD2BtIg">/pages/aPXjQMq1Y85tTBD2BtIg</a></td></tr><tr><td>Jira (self-hosted)</td><td>Create tickets from incidents on self-hosted Jira</td><td></td><td><a href="/files/qA2z1tqQldskmTb54C6x">/files/qA2z1tqQldskmTb54C6x</a></td><td><a href="/pages/jRvqqs9fh0GUwj7qqRVK">/pages/jRvqqs9fh0GUwj7qqRVK</a></td></tr></tbody></table>

Some incidents need more than an immediate fix. Task management integrations let you create tickets directly from Spike incidents for follow-up work like root cause analysis or longer-term planning.

## FAQs

### Who can create tickets from incidents?

Anyone on your team can create tickets from incidents. Access is not restricted to admins.

### Are these integrations bi-directional?

No. Spike sends incident data to your project management tool. Updates made in that tool don't sync back to Spike.

### Privacy

Spike doesn't read data from your project management platform, including user, task, or project info. Spike only sends incident data.

{% hint style="info" %}
More integrations are planned. Email <support@spike.sh> to request one.
{% endhint %}


# JIRA Cloud

Connect Jira Cloud to Spike and create Jira tickets directly from incidents.

## How to set up

Go to [Integrations](https://app.spike.sh/integrations) and find the **Jira Cloud** integration. Click **Connect** to authenticate with Jira and grant Spike permission to create tickets.

<figure><img src="/files/q5q0u59o3lKvNYw2zOIb" alt="Jira Cloud setup in Spike"><figcaption><p>Jira Cloud setup in Integrations.</p></figcaption></figure>

{% hint style="info" %}
Once set up, every team member in your account can create Jira tickets from Spike.
{% endhint %}

## How to create a ticket

Open the incident details page and use the actions section to create a Jira ticket.

<figure><img src="/files/aRfZX8nLhHgHaHJT0JJ0" alt="Create a Jira ticket from the incident details page"><figcaption><p>Use the actions section on the incident page to create a ticket.</p></figcaption></figure>

Fill in the required details and submit.

<figure><img src="/files/l02vBE8hgYbNv0XU0sse" alt="Fill in ticket details to create a Jira ticket from Spike"><figcaption><p>Fill in the details to create a ticket on Jira.</p></figcaption></figure>


# JIRA server (self-hosted)

Connect Spike to a self-hosted Jira server using OAuth credentials.

To connect, you need three things from your Jira server:

* **Base URL** (the domain where your server is hosted, e.g. `https://jira.mydomain.com`)
* **Client ID**
* **Client Secret**

## Generate credentials on Jira

1. On your Jira server, go to **Settings > Applications**
2. Click **Application Links**
3. Click **Create Link**

<figure><img src="/files/XR2XijY6hPV5h4okp8ux" alt="Application Links in Jira server settings"><figcaption><p>Application Links in Jira server settings.</p></figcaption></figure>

4. On the Create Link modal, select **External application** and **Incoming**

<figure><img src="/files/OYJPgixIqHvqZjC2bReb" alt="Create Link modal in Jira"><figcaption><p>Select External application and Incoming.</p></figcaption></figure>

5. Fill in the details:
   * **Name**: Spike
   * **Callback URL**: `https://app.spike.sh/task-management/jira/self-hosted/auth/callback`
   * **Permission**: Write
   * Click **Save**

<figure><img src="/files/zXuNDSLF9KfxbMfHzERw" alt="Jira application link details form"><figcaption><p>Fill in the application link details.</p></figcaption></figure>

6. Copy the generated **Client ID** and **Client Secret**
7. Your **Base URL** is the domain where Jira is hosted, e.g. `https://jira.spike.sh`. Do not include a trailing slash.

<figure><img src="/files/FyLEs6EnVcvR8wkx42s1" alt="Generated Client ID and Client Secret in Jira"><figcaption><p>Copy the Client ID and Client Secret.</p></figcaption></figure>

## Connect in Spike

Go to [Settings > Organisation](https://app.spike.sh/settings/general/organisation#org--task-management) and select **JIRA server**. Enter the Base URL, Client ID, and Client Secret. Then click **Connect**.

<figure><img src="/files/el0VGBruDQa2ZXYCokXn" alt="Jira server connection form in Spike settings"><figcaption><p>Enter your Jira server credentials in Spike settings.</p></figcaption></figure>

Jira opens for validation. Grant the requested permissions to complete the connection.


# ClickUp

Connect ClickUp to Spike and create tasks directly from incidents.

## How to set up

Go to [Integrations](https://app.spike.sh/integrations) and find the **ClickUp** integration. Click **Connect** to authenticate with ClickUp and grant Spike permission to create tasks.

<figure><img src="/files/GzCyOfRoTlkA2tjLuHuj" alt="ClickUp setup in Spike"><figcaption><p>ClickUp setup in Integrations.</p></figcaption></figure>

{% hint style="info" %}
Once set up, every team member in your account can create ClickUp tasks from Spike.
{% endhint %}

## How to create a task

Open the incident details page and use the actions section to create a ClickUp task.

<figure><img src="/files/ty4Tc0TFxgGcLGwoEdZj" alt="Create a ClickUp task from the incident details page"><figcaption><p>Use the actions section on the incident page to create a task on ClickUp.</p></figcaption></figure>

<figure><img src="/files/kVbQx3Tk5Vc2S0mgqttK" alt="ClickUp task creation form in Spike"><figcaption><p>Fill in the details and create the task.</p></figcaption></figure>


# Linear

Connect Linear to Spike and create issues directly from incidents. Acknowledgment, resolution, and comments stay in sync across both platforms.

<figure><img src="/files/U0t4kRbvqULhR6Za8c9j" alt="Linear integration with Spike"><figcaption></figcaption></figure>

## Linear

Spike's Linear integration bridges incident response with task tracking. Create an issue from any incident and both platforms stay updated as it moves through resolution.

The integration supports three main capabilities:

* Sync incident status with Linear issue status
* Sync comments between both platforms
* Create issues manually or automatically

### How it works

When an incident triggers in Spike, it can appear as an issue in Linear. Your team can track and work on it in Linear while Spike stays updated.

Status changes sync in both directions. When an issue is marked "Done" in Linear, Spike resolves the corresponding incident. When an issue moves to "In Progress," Spike acknowledges it. Comments sync too. A comment on Linear appears in Spike as "Linear commented." A comment on Spike appears in Linear as "Spike commented."

{% hint style="info" %}
Reverting an issue's status in Linear won't update the incident in Spike.

If an issue moves from "Done" back to "In Progress" on Linear, the resolved incident stays resolved. Resolved incidents are terminal in Spike and cannot be re-opened.

If an issue moves from "In Progress" back to "Todo" on Linear, the acknowledged incident stays acknowledged. In Spike, you can manually move an acknowledged incident back to triggered, but Linear's sync does not trigger that change.
{% endhint %}

### Set up

Go to [Settings > Organisation](https://app.spike.sh/settings/general/organisation) and find the **Task management integrations** section. Click **Connect** next to Linear and complete the authentication. Once set up, all team members in your account can create issues in Linear directly from Spike.

{% tabs %}
{% tab title="Creating issues on Linear" %}

1. **Manually create issues**

Select the incidents, locate the Linear button, and follow the prompts to create an issue.

<figure><img src="/files/ES39KAiWNcWOuHcd5yLQ" alt="Manually create a Linear issue from a Spike incident"><figcaption><p>Create an issue on Linear.</p></figcaption></figure>

2. **Automate creating issues**

With [Playbooks](/playbooks/introduction-to-playbooks), you can pre-configure and automate creating Linear issues. When creating a playbook, select **Create an issue on**, then **Linear**, and complete the setup.

<figure><img src="/files/Hljf3QLSm3GxHlACUh6z" alt="Automate Linear issue creation using Spike Playbooks"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Link existing Linear issue with Spike" %}
Link an existing Linear issue to a Spike incident to sync both statuses and comments. Multiple Linear issues can be linked to a single incident. Resolving the incident in Spike marks all associated Linear issues as "Done."

<figure><img src="/files/TElLASul5zLkWrORcUdF" alt="Link an existing Linear issue to a Spike incident"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### FAQs

#### What permissions are needed to connect Linear with Spike?

You need administrative access to connect Spike with Linear. Once connected, all team members in Spike can create issues in Linear from incidents.

#### What happens to comments made on Linear?

A comment made on Linear appears in Spike as "Linear commented." A comment made on Spike appears in Linear as "Spike commented."


# Shortcut

Connect Shortcut to Spike and create stories directly from incidents.

Spike's Shortcut integration creates stories from incidents. Stories cover follow-up work like root cause analysis or longer-term fixes that go beyond immediate incident response.

## How to set up

Go to [Integrations](https://app.spike.sh/integrations) and find the **Shortcut** integration. Click **Connect** and enter your Shortcut API key. Spike validates the key and completes the connection.

<figure><img src="/files/ElIMGbATXoKjx1brSoav" alt="Shortcut setup in Spike Integrations"><figcaption><p>Shortcut setup in Integrations.</p></figcaption></figure>

{% hint style="info" %}
Once set up, every team member in your account can create stories in Shortcut from Spike. Spike does not read any data from your Shortcut account.
{% endhint %}

## How to create a story

Open the incident details page and use the actions section to create a Shortcut story.

<figure><img src="/files/3AgPlnsM4OI7LQlD7Nyv" alt="Create a Shortcut story from the incident details page"><figcaption><p>Create a story from the incident details page.</p></figcaption></figure>

You can pre-configure story details before sending to Shortcut.

<figure><img src="/files/WMSjJ3G7ZXayteR8iC8x" alt="Pre-configure Shortcut story details in Spike"><figcaption><p>Pre-configure story details.</p></figcaption></figure>

## Automate with Playbooks

Use [Playbooks](/playbooks/introduction-to-playbooks) to automate creating Shortcut stories. For example, create a story automatically for every new incident with a specific title or on a specific service.

<figure><img src="/files/8VgeEh4xNGXzYKP7mmWI" alt="Automate Shortcut story creation with Spike Playbooks"><figcaption><p>Automate Shortcut stories with Playbooks.</p></figcaption></figure>

Team members with the right permissions can also run the Playbook manually.

<figure><img src="/files/C0l9ndF7KmfBHAgLxSQV" alt="Run a Shortcut Playbook manually in Spike"><figcaption></figcaption></figure>


# Helpdesk integrations

Create tickets in Zendesk, Freshdesk, or Supportpal directly from Spike incidents.

Spike's helpdesk integrations keep incident response and ticket tracking connected. Create tickets from incidents and sync status, notes, and updates across both platforms.

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Zendesk</td><td>Bi-directional integration for syncing incidents, notes, and tickets</td><td></td><td><a href="/files/sHSVpuwz1WlWVJuyR0Fj">/files/sHSVpuwz1WlWVJuyR0Fj</a></td><td><a href="/pages/Nw1EAoJeGFbtOf8uaLxF">/pages/Nw1EAoJeGFbtOf8uaLxF</a></td></tr><tr><td>Freshdesk</td><td>Send incidents to Freshdesk and add notes</td><td></td><td><a href="/files/Czos5iBfoM3ibUbz2qyg">/files/Czos5iBfoM3ibUbz2qyg</a></td><td><a href="/pages/fuk2f6zC0B9VN8pMTafv">/pages/fuk2f6zC0B9VN8pMTafv</a></td></tr><tr><td>Supportpal</td><td>Sync incidents with Supportpal and keep your teams aligned</td><td></td><td><a href="/files/mx6l4Y8CfRhy6nEQIWan">/files/mx6l4Y8CfRhy6nEQIWan</a></td><td><a href="/pages/Jw9BB2Jl3FOIVpLqIceE">/pages/Jw9BB2Jl3FOIVpLqIceE</a></td></tr></tbody></table>

## Create tickets from incidents

Once connected, any team member can create or link helpdesk tickets from incidents:

* **From the incidents table**: Select one or more incidents and create a ticket.
* **From the incident details page**: Open the incident and create or link a helpdesk ticket directly.

## Automate with Playbooks

Use [Playbooks](/playbooks/introduction-to-playbooks) to automate ticket creation whenever an incident triggers. This removes the manual step and ensures every incident gets a corresponding ticket.

## FAQs

### Are these integrations bi-directional?

Zendesk and Freshdesk both have a Spike app available in their respective marketplaces. The app allows users on those platforms to check incidents and take action from their helpdesk side.

Supportpal is one-way only. Spike sends incident data to Supportpal, but there is no app and no sync back.

### Does Spike access data from my helpdesk platform?

Spike does not access or store any data from your helpdesk platform, including tickets or user information.

{% hint style="info" %}
More integrations are planned. Email <integrations@spike.sh> to request one.
{% endhint %}


# Zendesk

Connect Zendesk to Spike for bidirectional sync of incidents, tickets, notes, and statuses.

<figure><img src="/files/YuGgH1HQgTndo31AjQ4r" alt="Zendesk integration with Spike"><figcaption></figcaption></figure>

## Zendesk

Connect Spike with Zendesk for two-way incident and ticket management. Create tickets, sync notes and statuses, and trigger incidents without leaving Zendesk.

### Set up

Zendesk can be connected to Spike in two ways.

The first is an API connection. Use this to send incidents from Spike to Zendesk and create tickets.

The second is the Spike app from the Zendesk Marketplace. This adds full bidirectional sync. Incidents, notes, and statuses flow between both platforms. Zendesk users can also trigger incidents without a Spike account.

#### API connection

1. Go to [Settings > General > Helpdesk Integrations](https://app.spike.sh/settings/general/organisation#org--helpdesk-ticket-management)
2. Enter your Zendesk API token and Zendesk subdomain

#### Zendesk Marketplace app

1. Install the Spike app from [Zendesk Marketplace](https://www.zendesk.com/in/marketplace/apps/support/1084861/spike/?queryID=97f8205f39b71c03f3bb6c8512a8e67a)
2. Generate and copy a new API token from the [Spike dashboard](https://app.spike.sh/api)
3. Follow the instructions on Zendesk to connect Spike

### How to use

#### Create tickets manually

From the incidents table, select one or more incidents and create a Zendesk ticket.

{% hint style="info" %}
Tickets created this way are not synced with statuses or notes. For full sync, use the Spike app in Zendesk (Zendesk Marketplace app).
{% endhint %}

#### Automate ticket creation with Playbooks

Use [Playbooks](/playbooks/introduction-to-playbooks) to automate ticket creation when an incident triggers. Incident details and timestamps are sent to Zendesk automatically.

### FAQs

#### Who can set up the integration and create tickets?

Anyone in your organization can set up the integration and create or sync tickets with incidents. No special permissions are required.

#### Can I link multiple incidents to one Zendesk ticket?

Yes. Multiple incidents can be linked to a single Zendesk ticket.


# Freshdesk

Connect Freshdesk to Spike to create tickets from incidents and manage them directly from Freshdesk.

<figure><img src="/files/WYUDilEMz1sqSHxLSdeP" alt="Freshdesk integration with Spike"><figcaption></figcaption></figure>

## Freshdesk

Spike's Freshdesk integration creates tickets from incidents. Freshdesk users can also check and act on incidents without leaving Freshdesk.

{% embed url="<https://www.youtube.com/watch?v=f3EnbMhmGYM>" %}

### Set up

Freshdesk can be connected to Spike in two ways.

The first is an API connection. Use this to create tickets in Freshdesk from Spike incidents. This is one-way and does not sync statuses or notes.

The second is the Spike app from the Freshdesk Marketplace. This allows Freshdesk users to check incidents and take action from Freshdesk.

#### API connection

1. Go to [Settings > General > Helpdesk Integrations](https://app.spike.sh/settings/general/organisation#org--helpdesk-ticket-management)
2. Enter your Freshdesk API token and subdomain

#### Freshdesk Marketplace app

1. Install the Spike app from [Freshdesk Marketplace](https://www.freshworks.com/apps/spike)
2. Generate and copy a new API token from the [Spike dashboard](https://app.spike.sh/api)
3. Follow the instructions on Freshdesk to connect Spike

### How to use

#### Create tickets manually

From the incidents table, select one or more incidents and create a Freshdesk ticket.

{% hint style="info" %}
Tickets created this way are not synced with statuses or notes. To act on incidents from Freshdesk, use the Spike app (Freshdesk Marketplace app).
{% endhint %}

#### Automate ticket creation with Playbooks

Use [Playbooks](/playbooks/introduction-to-playbooks) to automate ticket creation when an incident triggers. Incident details and timestamps are sent to Freshdesk automatically.

### FAQs

#### Who can set up the integration and create tickets?

Anyone in your organization can set up the integration and create tickets. No special permissions are required.

#### Can I link multiple incidents to one Freshdesk ticket?

Yes. Multiple incidents can be linked to a single Freshdesk ticket.


# Supportpal

Connect Supportpal to Spike and create support tickets directly from incidents.

<figure><img src="/files/SZA3vRhkYBr5a9Y2fJhb" alt="Supportpal integration with Spike"><figcaption></figcaption></figure>

## Supportpal

Spike's Supportpal integration creates support tickets from incidents. It's a one-way sync, and incident data flows from Spike to Supportpal.

### Set up

1. Go to [Settings > General > Helpdesk Integrations](https://app.spike.sh/settings/general/organisation#org--helpdesk-ticket-management)
2. Enter your Supportpal API token and subdomain

### How to use

#### Create tickets manually

From the incidents table, select one or more incidents and create a Supportpal ticket.

#### Automate ticket creation with Playbooks

Use [Playbooks](/playbooks/introduction-to-playbooks) to automate ticket creation when an incident triggers. Incident details and timestamps are sent to Supportpal automatically.

### FAQs

#### Who can set up the integration and create tickets?

Anyone in your organization can set up the integration and create tickets. No special permissions are required.

#### Can I link multiple incidents to one Supportpal ticket?

Yes. Multiple incidents can be linked to a single Supportpal ticket.


# War rooms

War rooms create instant meeting links tied to incidents, so your team can join a call without scrambling for a link.

<figure><img src="/files/2hJWMsRrWlOqxNSyZuLy" alt="War rooms on Spike"><figcaption></figcaption></figure>

## War rooms

When an incident triggers and your team needs to coordinate on a call, war rooms create an instant meeting link tied to the incident. Everyone knows exactly where to join.

Spike supports:

1. Google Meet
2. Zoom *(coming soon)*
3. Your personal room link (Daily.co, Gather.town, or any URL)

### Set up

Go to **Organization Settings > Video Conferencing** and connect Google Meet or add a personal room link. For a personal room, paste the link and it's ready to use.

<figure><img src="/files/Domk8qhfUZoKSPgvzWYx" alt="Video Conferencing settings in Spike Organization Settings"><figcaption><p>Video Conferencing in Organization Settings.</p></figcaption></figure>

#### How Google Meet links work

Spike connects to your Google account and requests permission to access Google Calendar. When a war room is created, Spike creates a calendar event on your account and generates a Meet link from it.

{% hint style="success" %}
Spike does not read your calendar events or store them. It only creates a calendar event to generate the Meet link.
{% endhint %}

### Create a war room

Open the incident page and click **Start Google Meet** from the Quick Actions menu.

<figure><img src="/files/QnKcTxOMKMLCg8D27Mvw" alt="Start Google Meet from the incident page Quick Actions menu"><figcaption><p>Start a war room from the incident page.</p></figcaption></figure>

### Invite others to join

When creating the war room, you can invite current responders, escalation members, or the entire team. You can also search for specific teammates to add.

<figure><img src="/files/DspX9UUS63fOS056TzrG" alt="Invite members while creating a war room in Spike"><figcaption><p>Invite members while creating the war room.</p></figcaption></figure>

{% hint style="warning" %}
Spike's Google App is currently pending verification for extended access to calendar scopes.
{% endhint %}


# Introduction to On-call schedules

On-call schedules define who is on-call and when. Members rotate automatically on daily, weekly, or custom intervals.

On-call schedules define who responds to incidents and when. Spike rotates your team automatically on daily, weekly, or custom intervals you set.

<figure><img src="/files/RUyiQF7bH3yApWwm7pRZ" alt="Example of daily rotation among 2 members on Spike"><figcaption><p>Example of daily rotation among 2 members.</p></figcaption></figure>

## FAQs

### Who should use on-call schedules?

Any team with more than one member. Schedules distribute on-call responsibility so no single person is always on call.

### Who can create schedules?

Admins and members can both create and edit schedules. Use fine-grained access control to manage on-call permissions.

### Does being on-call mean I receive all alerts?

No. You receive alerts only from escalation policies that include you. Being on-call doesn't automatically route all incidents to you.


# Create On-call schedule

Set up an on-call schedule to define who's on-call and when across your team.

## Key components

Every on-call schedule is built from layers (covered on the next page). Each layer has four components:

1. **Team members**: the people who will be on-call
2. **Rotation**: how long each on-call shift lasts
3. **Handoff**: the time of day when the shift rotates to the next person
4. **Slots**: optional time windows within a shift (covered separately)

## Create a schedule

{% hint style="info" %}
Not sure where to start? Spike offers [on-call templates](https://spike.sh/templates/oncall-templates) with pre-built schedule configurations.
{% endhint %}

Go to the [On-call section](https://app.spike.sh/on-calls) and click **New schedule**.

<figure><img src="/files/BNXxwOLbMCnuj50zY25I" alt="New schedule button in the on-call section"><figcaption><p>New schedule button in the on-call section.</p></figcaption></figure>

### Step 1. Add members

Add at least one member. The order determines the rotation sequence. The first member goes on-call first.

{% hint style="info" %}
Use the live preview calendar while creating the schedule to see how the rotation looks.
{% endhint %}

<figure><img src="/files/L1Dv2qSGRGtxh4eGLgEG" alt="Adding members to an on-call schedule"><figcaption><p>Adding members to an on-call schedule.</p></figcaption></figure>

You can rearrange the member order at any time, including while editing an existing schedule.

{% embed url="<https://www.youtube.com/watch?v=ECDlUwC3oKc&ab_channel=Spike>" %}

### Step 2. Select rotation

Choose a rotation type that works for your team.

<figure><img src="/files/nndWpoB2VPxGkmim8hSj" alt="Selecting rotation type for an on-call schedule"><figcaption><p>Selecting rotation type for an on-call schedule.</p></figcaption></figure>

### Step 3. Set handoff time

Handoff time is when the current person's shift ends and the next person's begins.

<figure><img src="/files/6hvSxKednSr1k1l8p4XU" alt="Setting handoff time for an on-call schedule"><figcaption><p>Setting handoff time for an on-call schedule.</p></figcaption></figure>

Here's what a completed daily rotation schedule looks like: 2 members, rotating daily, with handoff at 11:00 AM. Each member is on-call for 24 hours at a time.

<figure><img src="/files/VG3tgCfvkpQNnYu9hsoC" alt="Completed daily on-call schedule form"><figcaption><p>Completed daily on-call schedule form.</p></figcaption></figure>

The calendar shows who's on-call at any given time. Use it to plan coverage across upcoming dates.

<figure><img src="/files/9wVwHpefMC0PQlpRMjyr" alt="On-call calendar showing coverage after creating a schedule"><figcaption><p>On-call calendar showing coverage after creating a schedule.</p></figcaption></figure>

## Add to an escalation policy

A schedule only works if it's added to an [escalation policy](/escalations/introduction-to-escalations). Without this, alerts won't route to the person who's on-call.

Add the schedule to your escalation policy the same way you'd add any team member. You can add it at any step in the policy.

<figure><img src="/files/8CvrEe9jwiwebihMXPkV" alt="On-call schedule added to an escalation policy"><figcaption><p>On-call schedule added to an escalation policy.</p></figcaption></figure>

{% hint style="success" %}
Add the schedule at the first step of your escalation policy to route alerts directly to whoever is on-call.
{% endhint %}


# Slots in schedules

Slots restrict on-call coverage to specific hours or days, so team members aren't on-call around the clock.

Slots define specific windows within an on-call shift. Members are only alerted during the hours you configure. You can apply different slots to different layers.

There are two types:

* **Time of day**: limit on-call to certain hours each day
* **Days of week**: limit on-call to specific days and hours

## Slots for specific times of day

Members are on-call only during the hours you set. In the example below, the member is on-call from 6 PM to 9 AM every day for Layer 1.

<figure><img src="/files/3t9fFWIgx76tJ4Bgjz0r" alt="On-call slot from 6 PM to 9 AM every day"><figcaption><p>On-call from 6 PM to 9 AM every day.</p></figcaption></figure>

## Slots for specific times and days of week

Members are on-call only on the days and hours you set. In the example below, members are on-call every Monday 6 PM to Tuesday 9 AM, and Thursday 6 PM to Friday 6 PM, for Layer 1.

<figure><img src="/files/LUgd4FGAhx2GVUV1oVea" alt="On-call slot for specific days and times of the week"><figcaption><p>On-call Monday 6 PM to Tuesday 9 AM, and Thursday 6 PM to Friday 6 PM.</p></figcaption></figure>

## How to add slots

While creating or editing an on-call schedule, find the option to add slots in each layer. Slots added to a layer affect the entire on-call schedule.

<figure><img src="/files/VfrYD24Z4R8AU9FsqQW3" alt="Add slots to each layer in an on-call schedule"><figcaption><p>Add slots on each layer.</p></figcaption></figure>

## Use cases

**Time of day slots:**

* Non-office hours coverage: e.g. 6 PM to 9 AM daily.
* Split coverage across layers: 12 AM to 8 AM for Layer 1, 8 AM to 4 PM for Layer 2, 4 PM to 12 AM for Layer 3. This rotates 8-hour duties across members daily or weekly.

**Days of week slots:**

* Weekdays only: Monday 9 AM to Friday 6 PM.
* Skip a maintenance day: use multiple slots to exclude a specific day. To exclude Thursday, set Monday 9 AM to Thursday 12 AM, then Friday 12 AM to Monday 9 AM.

{% hint style="danger" %}
Avoid overlapping time windows across slots. If one slot runs Monday 9 AM to Thursday 9 AM and another runs Tuesday 9 AM to Friday 9 AM, Tuesday and Wednesday are covered by both. This causes unexpected behavior.
{% endhint %}


# Layers in on-call schedules

Layers let you stack multiple on-call configurations within a single schedule. When two layers overlap, the higher-numbered layer takes over.

Each on-call schedule can have one or more layers. Every layer has its own members, rotation, handoff times, and slots. When two layers overlap, the higher-numbered layer takes over.

## Example: weekday and weekend coverage

This example has two layers:

* **Layer 1:** Daily rotation among 2 members, covering all days
* **Layer 2:** One person on-call each weekend, rotating weekly from Friday 6 PM to Monday 9 AM

Layer 1 is the base. One of the two members is on-call every day of the week.

<figure><img src="/files/4z7yVtq1Y0FJ5j4KfjVk" alt="Single layer on-call schedule with daily rotation"><figcaption><p>Layer 1: daily rotation among 2 members.</p></figcaption></figure>

<figure><img src="/files/tKs2T62IMa6jhtr6Gy7Z" alt="Calendar view of a single-layer on-call schedule"><figcaption><p>Calendar view with Layer 1 only.</p></figcaption></figure>

Layer 2 covers weekends only. It runs from Friday 6 PM to Monday 9 AM with a weekly rotation.

<figure><img src="/files/ZILbrzMqLAishWQwb8FW" alt="Layer 2 on-call schedule for weekend coverage"><figcaption><p>Layer 2: weekend coverage from Friday 6 PM to Monday 9 AM.</p></figcaption></figure>

<figure><img src="/files/PI1pPNx5eIWktYzo3ve5" alt="Calendar view with two layers showing weekday and weekend coverage"><figcaption><p>Calendar with both layers: weekday and weekend coverage.</p></figcaption></figure>

Layer 2 was added so the members rotating on Layer 1 get a break over the weekend. Layer 2 overrides Layer 1 from Friday 6 PM to Monday 9 AM.

## How layers work

Layers are ordered sequentially. When two layers share overlapping time windows, the higher layer overrides the lower one. If Layer 1 and Layer 2 overlap, Layer 2 is active during that window. In a three-layer schedule, Layer 3 overrides both Layer 1 and Layer 2 wherever they overlap.

{% hint style="info" %}
Layer order matters. If your weekend layer is Layer 1 and your weekday layer is Layer 2, the weekend layer will never take effect because Layer 2 always takes precedence. There is no limit on the number of layers in a single schedule.
{% endhint %}

## FAQs

### Can I add a layer temporarily?

Yes. You can also use [on-call overrides](/oncall-schedules/override-an-on-call) for short-term coverage changes.

### How many layers can I add?

There is no limit. That said, too many layers can make the schedule hard to follow.

### How many members can be added in one layer?

There is no limit.


# Override an on-call

On-call overrides assign temporary coverage for a shift without changing the underlying schedule.

<figure><img src="/files/v4lWQuDU6u3Nx6szun39" alt="On-call overrides on Spike"><figcaption></figcaption></figure>

Overrides are one-time, non-recurring adjustments. Use them when someone needs short-term coverage without altering the schedule itself.

## Adding an override

From your [on-call schedule](https://app.spike.sh/on-calls), press `O` or click **Override**. Add the team member's name, start and end time, and an optional comment for context. Save to apply.

There are two ways to use overrides:

{% tabs %}
{% tab title="Cover a user" %}
The override replaces a specific member's on-call time. In the example below, Chen Taylor covers Maya Khan's shift from June 18th, 2026 (9:00 AM) to June 19, 2026 (9:00 AM).

<figure><img src="/files/mEpokkqGK7AAJGv0wo40" alt="Override covering a specific user&#x27;s shift"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Cover everyone" %}
The override takes over all on-call responsibilities for the selected time window. In the example below, James covers everyone's shifts from June 22nd, 2026 (9:00 AM) to June 29th, 2026 (9:00 AM).

<figure><img src="/files/PVp089jEEdhCEqC3GaDO" alt="Override covering everyone&#x27;s shifts"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## FAQs

### Can I add multiple overrides for the same time period?

Yes. If overrides overlap, the most recently added override takes precedence.

### Can I override the schedule for multiple team members at once?

No. Each override covers one user. Add separate overrides for each member you want to cover.

### Are notifications sent when an override is added or removed?

Yes. Team members involved in the override receive notifications about the change.

### Who can add or remove overrides?

Anyone without a Viewer role can add and delete overrides. This permission is fixed and cannot be customized.


# Notifications for on-call shifts

Spike sends notifications when your on-call shift starts or ends, across personal and team-wide channels.

<figure><img src="/files/e7XjY4MZJ8ACMeRDYhY1" alt="On-call shift notifications on Spike"><figcaption></figcaption></figure>

## Notifications for on-call shifts

Spike notifies you when your on-call shift starts or ends. Personal notifications go directly to you. Team notifications go to shared channels like Slack, Teams, and Discord.

### Personal notifications

<figure><img src="/files/0rEHqqLcXJLWWgz9r5SO" alt="Personal on-call shift notification settings"><figcaption><p>Personal notification settings for shift start and end.</p></figcaption></figure>

Spike sends personal notifications via phone call, SMS, WhatsApp, Telegram, and Email when your shift starts or ends.

To enable:

1. Visit [On-call notifications in settings](https://app.spike.sh/settings/personal-on-call).
2. Enable notifications separately for **Shift Start** and **Shift End**.
3. Once saved, the settings apply to all on-call schedules you are part of.

{% hint style="info" %}
You can override these per schedule. Visit **On-call > Settings > My alerts**.
{% endhint %}

### Team notifications

<figure><img src="/files/C91yOks1sYZfglFMBrsM" alt="Slack notifications for on-call shift start and end"><figcaption><p>Slack notifications when any team member's shift starts or ends.</p></figcaption></figure>

Spike notifies a shared channel when any team member starts or ends their shift. This works with Slack, Microsoft Teams, and Discord.

To enable:

1. Visit [Slack settings under Organisation > Alerts](https://app.spike.sh/settings/general/alerts).
2. Select one or more channels to receive notifications.
3. Once saved, all members in the selected channels receive shift start and end updates.

Similar settings are available for Microsoft Teams and Discord.

{% hint style="info" %}
Slack and Microsoft Teams notifications can be overridden per schedule under the schedule's settings.
{% endhint %}

### Webhook trigger on shift rotations

<figure><img src="/files/3h7f2mulD878NRg8dNdU" alt="Webhook triggers for on-call shift start and end"><figcaption><p>Webhook payloads for shift start and end events.</p></figcaption></figure>

Configure outbound webhooks to trigger on shift rotations using POST, PUT, or GET requests. Spike sends a webhook each time a shift starts or ends, with a separate request for each event.

If one shift ends and another begins immediately, Spike triggers both the end and start webhooks in quick succession. Each has its own payload.

The webhook payload includes details about the on-call schedule and the shift member.

{% tabs %}
{% tab title="Shift starts payload" %}

```
{
  "event_type": "oncall_shift_start", <---- EVENT DIFFERS
  "organization": {
    "id": "65f15fd64171a1487c4fe666",
    "name": "spike"
  },
  "user": {
    "id": "660bb3f8324701c2f2e24c98",
    "firstName": "John",
    "lastName": "Doe",
    "email": "johndoe@example.com"
  },
  "oncall": {
    "id": "67a20db2c9f79829b51fbf80",
    "name": "Weekday after office hours rotation",
    "url": "https://app.spike.sh/on-calls/67a20db2c9f79829b51fbf80", <-- permalink
    "shift": {
      "id": "67f3c5e9f6dd8715782cc7b2",
      "start": "2025-05-26T10:23:20.294Z", <-- times in UTC
      "end": "2025-05-26T18:30:00.000Z"
    }
  }
}
```

{% endtab %}

{% tab title="Shift end payload" %}

```
{
  "event_type": "oncall_shift_end", <---- EVENT DIFFERS
  "organization": {
    "id": "65f15fd64171a1487c4fe666",
    "name": "spike"
  },
  "user": {
    "id": "660bb3f8324701c2f2e24c98",
    "firstName": "John",
    "lastName": "Doe",
    "email": "johndoe@example.com"
  },
  "oncall": {
    "id": "67a20db2c9f79829b51fbf80",
    "name": "Weekday after office hours rotation",
    "url": "https://app.spike.sh/on-calls/67a20db2c9f79829b51fbf80", <-- permalink
    "shift": {
      "id": "67f3c5e9f6dd8715782cc7b2",
      "start": "2025-05-26T10:23:20.294Z", <-- times in UTC
      "end": "2025-05-26T18:30:00.000Z"
    }
  }
}
```

{% endtab %}
{% endtabs %}

### FAQs

#### Can I receive on-call shift notifications via multiple channels?

Yes. You can enable phone calls, SMS, WhatsApp, Telegram, and Email for personal notifications. Team notifications can go to Slack, Microsoft Teams, and Discord simultaneously.

#### Are on-call notifications available on all plans?

Yes, on-call notifications are available on all plans.

#### Can I disable notifications for a specific on-call schedule?

Yes. Visit **On-call > Settings > My alerts** to override notification settings per schedule.

#### Do on-call notifications count toward my monthly alert quota?

Yes. For plans with a monthly alert limit, on-call shift notifications count toward that quota.


# Change on-call rotation day

Change the rotation day on a weekly on-call schedule without losing coverage or disrupting the rotation order.

Say you have a weekly on-call schedule rotating every Wednesday and want to switch it to Monday. This page covers how to make that change and how to handle the two issues that come with it.

## How to change the rotation day

Use the **Schedule to start** option. This reschedules the on-call to begin on a new date without changing the members or rotation type.

Visit **On-call schedule > Settings > Schedule to start**, set the next Monday (or whichever day you want), and save.

## What changes when you do this

The system treats the updated schedule as a fresh start. Two things happen as a result:

1. **Coverage gap.** No one is on-call from now until the new start date.
2. **Rotation order resets.** The cycle restarts from the first member. For example, if A, B, C, D are in order and C is currently on-call with D due next, after the change A goes on-call first from Monday. D's turn gets pushed back.

## Fixing the gap and order

To address both issues before making the change:

1. Add C as an [override](/oncall-schedules/override-an-on-call) to cover the gap until the new start date.
2. Update the member order to D, A, B, C. Visit **On-call schedule > Edit**, scroll to the layer, and drag names using the `::` handle to reorder them.

This keeps coverage continuous and picks up the rotation where it left off.

## FAQs

### Can this be undone?

No. To test changes safely, create a separate on-call schedule first and archive it afterward.

### Can I schedule to start in the past?

No. The schedule to start option only supports future dates.


# Sync with your calendar

Sync your on-call schedule to Google Calendar, Apple Calendar, Outlook, or any calendar app that supports subscriptions.

Spike generates a subscription link for your on-call schedule. Add it to Google Calendar, Apple Calendar, Outlook, or any app that supports calendar subscriptions. The link updates automatically when your schedule changes.

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Google Calendar</strong></td><td></td><td><a href="/pages/qSgETdzciZP72TGojOmN">/pages/qSgETdzciZP72TGojOmN</a></td><td><a href="/files/iM1t9H1SNkAyyBaayjrb">/files/iM1t9H1SNkAyyBaayjrb</a></td></tr><tr><td><strong>Apple Calendar</strong></td><td></td><td><a href="/pages/d1GU3vuy3z4jGOzt97qh">/pages/d1GU3vuy3z4jGOzt97qh</a></td><td><a href="/files/8VY4kR24xDzwpl7xrtaL">/files/8VY4kR24xDzwpl7xrtaL</a></td></tr><tr><td><strong>Microsoft Outlook</strong></td><td></td><td><a href="/pages/UPxgpuXRC1LBAAN8uQe6">/pages/UPxgpuXRC1LBAAN8uQe6</a></td><td><a href="/files/eYlnjFnhO3R67uHNjZ76">/files/eYlnjFnhO3R67uHNjZ76</a></td></tr></tbody></table>

## Calendar link options

You can choose what to sync:

* **All my shifts across all on-call schedules**: every upcoming shift you are responsible for, regardless of schedule.
* **My shifts for one on-call schedule**: your upcoming shifts in a specific schedule, useful when you're part of multiple schedules.
* **All team members' shifts in one on-call schedule**: see who is on-call and who will be on-call at any time from your calendar.

## How calendar sync works

The subscription link is a Webcal (iCalendar) feed. When your calendar app fetches the feed, Spike provides on-call data for the next six months.

If you make changes to the schedule in Spike, they'll appear in your calendar the next time your app refreshes the feed. The update interval depends on your calendar app and can vary by provider.

To set up calendar sync:

1. Go to your on-call schedule settings or the [calendar view of on-calls](https://app.spike.sh/on-calls/calendar).
2. Click **Calendar sync**.
3. Copy the subscription link, or click it directly if your browser offers to open it in your calendar app.

<figure><img src="/files/1HESq3pY2ACJQCbmaP55" alt="Copying the on-call calendar subscription link from Spike"><figcaption><p>Copy the subscription link from your on-call schedule settings.</p></figcaption></figure>

## Works with any calendar

The subscription link follows the iCalendar (Webcal) standard. It works with any calendar app that supports subscriptions, including Notion, Proton Calendar, Zoho Calendar, or your preferred calendar tool.

## FAQs

### How often does my calendar update?

Your calendar app decides how often it refreshes the subscription. Spike always serves the latest data when requested.

### Can I share my calendar link with others?

Yes, but sharing it will expose your schedule to whoever has the link.

### Does the calendar show past shifts?

No. The feed only includes upcoming shifts for the next six months.

### What happens if my schedule changes?

Your subscribed calendar will update the next time your app refreshes the feed.

### Can I unsubscribe later?

Yes. Remove the subscribed calendar anytime from your calendar app's settings.


# Google Calendar

Sync your on-call schedule with your Google Calendar

<figure><img src="/files/XhkpSdZW2aBWJ7lPr8SW" alt="Export on-call schedule to your calendar"><figcaption></figcaption></figure>

## Add on-call schedule to Google Calendar

Keep your on-call shifts visible alongside your regular meetings in Google Calendar. By subscribing to your Spike on-call calendar, any updates to your schedule will appear automatically without needing to reimport anything.

### Subscribe to your on-call calendar

1. Go to the settings page for your on-call schedule.
2. Click **Calendar sync** and copy the subscription link.
3. Go to [Google Calendar](https://calendar.google.com/).
4. In the left sidebar, find **Other calendars** and click the **+** icon.
5. Select **From URL**, paste your Spike calendar link, and click **Add calendar**.

Your on-call shifts will now appear in Google Calendar. The calendar refreshes automatically based on Google's update interval.

{% hint style="info" %}
If you are logged into your Google account, you can also click the calendar link directly from Spike. It will open Google Calendar and subscribe automatically.
{% endhint %}

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Apple Calendar</strong></td><td></td><td><a href="/pages/d1GU3vuy3z4jGOzt97qh">/pages/d1GU3vuy3z4jGOzt97qh</a></td><td><a href="/files/8VY4kR24xDzwpl7xrtaL">/files/8VY4kR24xDzwpl7xrtaL</a></td></tr><tr><td><strong>Microsoft Outlook</strong></td><td></td><td><a href="/pages/UPxgpuXRC1LBAAN8uQe6">/pages/UPxgpuXRC1LBAAN8uQe6</a></td><td><a href="/files/eYlnjFnhO3R67uHNjZ76">/files/eYlnjFnhO3R67uHNjZ76</a></td></tr></tbody></table>


# Apple Calendar

Sync your on-call schedule with your Apple Calendar

<figure><img src="/files/EKSRHibKSMXrl3bihLfm" alt="Export on-call schedule to your calendar"><figcaption></figcaption></figure>

## Add on-call schedule to Apple Calendar

View your Spike on-call shifts directly from the Calendar app on your Mac, iPhone, or iPad. By subscribing to your on-call calendar, updates will appear automatically whenever your calendar refreshes.

### Subscribe to your on-call calendar (Mac)

1. Go to the settings page for your on-call schedule.
2. Click **Calendar sync** and copy the subscription link.
3. Open the Calendar app on your Mac.
4. In the menu bar, click **File → New Calendar Subscription**.
5. Paste the link and click **Subscribe**.
6. Name your calendar and click **OK**.

Your on-call shifts will appear automatically in the Calendar app.

### Subscribe from iPhone or iPad

1. Copy your Spike calendar link.
2. Go to **Settings → Calendar → Accounts → Add Account → Other**.
3. Tap **Add Subscribed Calendar**.
4. Paste the link and tap **Next**.
5. Tap **Save**.

Your on-call schedule will now appear in the Calendar app and stay updated automatically.

{% hint style="info" %}
If you use iCloud Calendar, subscribing from your Mac will sync the on-call calendar across all your Apple devices automatically.
{% endhint %}

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Google Calendar</strong></td><td></td><td><a href="/pages/qSgETdzciZP72TGojOmN">/pages/qSgETdzciZP72TGojOmN</a></td><td><a href="/files/iM1t9H1SNkAyyBaayjrb">/files/iM1t9H1SNkAyyBaayjrb</a></td></tr><tr><td><strong>Microsoft Outlook</strong></td><td></td><td><a href="/pages/UPxgpuXRC1LBAAN8uQe6">/pages/UPxgpuXRC1LBAAN8uQe6</a></td><td><a href="/files/eYlnjFnhO3R67uHNjZ76">/files/eYlnjFnhO3R67uHNjZ76</a></td></tr></tbody></table>


# Microsoft Outlook

Sync your on-call schedule with your Microsoft Outlook

<figure><img src="/files/QPmkdyf6wqj1YJFTkB47" alt="Export on-call schedule to your calendar"><figcaption></figcaption></figure>

## Add on-call schedule to Outlook Calendar

View your Spike on-call shifts directly in Outlook on the browser or desktop. Any changes made in Spike will appear automatically in Outlook.

### Subscribe in Outlook on the browser

1. Go to the settings page for your on-call schedule.
2. Click **Calendar sync** and copy the subscription link.
3. Open [Outlook](https://outlook.com) and sign in.
4. In the left sidebar, select **Add calendar**.
5. Choose **Subscribe from URL**.
6. Paste your Spike calendar link.
7. Enter a name for the calendar and click **Import**.

Your on-call schedule will now appear in your Outlook Calendar view.

### Subscribe in Outlook Desktop (Windows or macOS)

1. Copy your calendar subscription link from Spike.
2. In Outlook, go to **File → Account Settings → Account Settings**.
3. Under the **Internet Calendars** tab, click **New**.
4. Paste the Spike calendar link and click **Add**.
5. Enter a name for the calendar and click **OK**.

The calendar will appear under **Other Calendars** in Outlook and update automatically.

{% hint style="info" %}
Outlook checks for calendar updates automatically. You'll always see the latest schedule whenever Outlook refreshes your subscription.
{% endhint %}

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Google Calendar</strong></td><td></td><td><a href="/pages/qSgETdzciZP72TGojOmN">/pages/qSgETdzciZP72TGojOmN</a></td><td><a href="/files/iM1t9H1SNkAyyBaayjrb">/files/iM1t9H1SNkAyyBaayjrb</a></td></tr><tr><td><strong>Apple Calendar</strong></td><td></td><td><a href="/pages/d1GU3vuy3z4jGOzt97qh">/pages/d1GU3vuy3z4jGOzt97qh</a></td><td><a href="/files/8VY4kR24xDzwpl7xrtaL">/files/8VY4kR24xDzwpl7xrtaL</a></td></tr></tbody></table>


# Linked calendars

Add external or holiday calendars as overlays on your on-call schedule to plan shifts around holidays and team events.

<figure><img src="/files/jRdG6VGete9iSim3cm31" alt="Linked calendars on Spike"><figcaption></figcaption></figure>

## Linked calendars

Linked calendars display external or holiday calendars as overlays on your on-call schedule. Use them to plan shifts around holidays, regional events, or company-wide leaves. They do not modify or affect any existing on-call shifts.

<figure><img src="/files/Yh2if7e2Z13pgP2r2WpJ" alt="Holiday calendar overlaid on an on-call schedule"><figcaption><p>A holiday calendar overlaid on the on-call schedule.</p></figcaption></figure>

### Adding a linked calendar

Visit the [Linked Calendars](https://app.spike.sh/oncalls/linked-calendars) section on your dashboard. You can upload an `.ics` file or link directly from Google Calendar or Outlook.

<figure><img src="/files/vEzopmvunAiRg4hPWGXT" alt="Link a calendar on Spike"><figcaption><p>Link a calendar from the Linked Calendars section.</p></figcaption></figure>

{% tabs %}
{% tab title="Upload ICS file" %}

1. Export your calendar as a `.ics` file from Google, Outlook, or another calendar app.
2. In the Linked Calendars section, click **+ Link a calendar** and choose **Upload file**.
3. Select your `.ics` file and click **Link**.

The imported calendar appears as an overlay. Toggle visibility anytime using the checkbox beside its name.
{% endtab %}

{% tab title="Link from Google Calendar" %}

1. In Google Calendar, go to **Settings → Integrate calendar**.
2. Copy the **Public address in iCal format**. The calendar must be set to public.
3. In the Linked Calendars section, click **Link calendar**, choose **From link**, and paste the link.
   {% endtab %}

{% tab title="Link from Outlook Calendar" %}

1. In Outlook Calendar, go to **Settings → View all Outlook settings → Calendar → Shared calendars**.
2. Under **Publish a calendar**, select the calendar and permissions, then copy the ICS link.
3. In the Linked Calendars section, click **Link calendar**, choose **From link**, and paste the link.
   {% endtab %}
   {% endtabs %}

{% hint style="info" %}
Spike only reads data from linked calendars. It cannot write, modify, or delete any events on external calendars.
{% endhint %}

### Managing linked calendars

All linked calendars appear in the [Linked Calendars list](https://app.spike.sh/oncalls/linked-calendars) below your on-call calendar.

* **Toggle on/off:** Use the checkbox beside a calendar name to show or hide it on the on-call view.
* **Refresh data:** Click **Refresh** beside a calendar to fetch the latest events. Spike refreshes all calendars automatically every 24 hours at midnight UTC.

Only users who can modify on-call schedules can add, delete, or manage linked calendars.

{% hint style="info" %}
Linked calendars are shared across the team. Toggling visibility, adding, and deleting linked calendars affects everyone's view.
{% endhint %}

### FAQs

#### Can I link multiple calendars?

Yes. All linked calendars appear as overlays on your on-call calendar.

#### Does linking a calendar change my on-call schedule?

No. Linked calendars are for reference only and do not modify or offset any on-call shifts.

#### How often do linked calendars refresh?

Calendars added via public links refresh automatically every 24 hours at midnight UTC. You can also refresh manually anytime by clicking **Refresh** beside the calendar name.

#### Who can add or manage linked calendars?

Anyone with permission to modify on-call schedules can add, delete, or manage linked calendars.

#### Can I hide a calendar without deleting it?

Yes. Toggle visibility on or off using the checkbox beside each calendar. The change applies to everyone in the workspace.


# Introduction to Live Call Routing

Live Call Routing gives your team a phone number that routes incoming calls to the on-call engineer.

<figure><img src="/files/G9ZUMBh7T7VZKf7sH1QS" alt="Live Call Routing on Spike"><figcaption></figcaption></figure>

## Live Call Routing

Live Call Routing gives your team a dedicated phone number that routes incoming calls to the on-call engineer. It captures human-reported incidents: a security vendor flagging a breach, or a payment partner reporting a failure. The caller connects directly to whoever is on-call.

{% hint style="success" %}
Live Call Routing is available on **all paid plans**.
{% endhint %}

### How Live Call Routing works

<figure><img src="/files/aWW1TX1GEixQmVro1Snb" alt="Live Call Routing flow showing on-call and fallback responders"><figcaption><p>Incoming calls route through on-call and fallback responders.</p></figcaption></figure>

Spike uses your on-call schedules to determine who receives calls.

* An incoming call first rings the configured on-call responder.
* If there is no answer, it rings fallback responder 1.
* If still unanswered, it rings fallback responder 2.
* If no one answers, Spike plays your configured **No Answer** message and takes a message from the caller.

{% hint style="info" %}
Voicemail pickup counts as an answered call. Spike will not route to a fallback responder in this case.
{% endhint %}

Every call is recorded and logged. A detailed alert is sent to your configured Slack or Microsoft Teams channels.

### How to set up Live Call Routing

Visit [Live Call Routing](https://app.spike.sh/call-routing) on the dashboard to get started.

Live Call Routing works with any phone number from Twilio or Plivo. Use an existing number you already own, or purchase a new one directly from Twilio or Plivo.

Your number stays completely private. Spike does not require API keys or direct access to your account.

{% hint style="info" %}
To get a number directly from Spike, email <support@spike.sh>.
{% endhint %}

{% content-ref url="/pages/Y8aE8oXq5bgLbGl5vIHU" %}
[Configuring with Twilio](/live-call-routing/lcr-with-twilio)
{% endcontent-ref %}

{% content-ref url="/pages/md1UtAnk4WBgwdeOfWrD" %}
[Configuring with Plivo](/live-call-routing/lcr-with-plivo)
{% endcontent-ref %}

{% stepper %}
{% step %}

#### Add your phone number

Enter your phone number in full international format, including the `+` symbol. Give it a clear name (e.g., *Engineering Hotline*) for easy identification.

{% hint style="info" %}
Find your number in Twilio under **Console → Develop → Phone numbers → Active numbers**, or in Plivo under **Numbers → Active**.
{% endhint %}
{% endstep %}

{% step %}

#### Configure who receives the calls

Select an on-call schedule or a specific responder. Optionally add up to two fallback responders.
{% endstep %}

{% step %}

#### Customize your messages

Set up three audio messages:

* **Welcome message**: played when someone calls.
* **No one on-call message**: played if no one is currently on call.
* **No answer message**: played if all responders fail to answer.
  {% endstep %}

{% step %}

#### Connect your Twilio or Plivo account

Spike provides a webhook URL. Paste it into your Twilio or Plivo console as per their instructions.
{% endstep %}

{% step %}

#### Go live

Your phone number is now ready to start routing calls.
{% endstep %}
{% endstepper %}

### Call recording setup

When call recording is enabled, Spike retrieves recordings directly from your Twilio or Plivo account. To play recordings inside Spike, disable **HTTP Basic Authentication for media access** in your provider's settings.

{% tabs %}
{% tab title="Twilio" %}
In your Twilio Console, go to **Develop → Voice → Settings → General**. Under **HTTP Basic Authentication for media access**, select **Disable**.
{% endtab %}

{% tab title="Plivo" %}
In your Plivo Console, go to **Voice → Settings → Other Settings**. Under **HTTP Basic Authentication for media access**, select **Disable**.
{% endtab %}
{% endtabs %}

### Customize messages

<figure><img src="/files/Y5hRsKSNQKzjcU50IyDz" alt="Custom message configuration for Live Call Routing"><figcaption><p>Configure the three audio messages for your phone line.</p></figcaption></figure>

Spike plays audio messages at key points during a call. Configure three types:

#### Welcome message

Played as soon as the call begins. Use it to greet callers and let them know they're being connected to the on-call team.

*Example: "Hi, thanks for calling the Engineering Hotline. Please hold while we connect you to the on-call engineer."*

#### No one answered message

Played when no one answers after trying the primary and fallback responders. Ask the caller to leave a voicemail after the beep.

*Example: "Sorry, no one is available to take your call right now. Please leave a message and we'll get back to you as soon as possible."*

#### No one on-call message

Played when there is no on-call responder at the moment.

*Example: "Our on-call team is currently offline. Please leave a message with your name and number, and we'll return your call as soon as we're back on shift."*

### Call logs and recordings

<figure><img src="/files/9m4szzzE1Fnt0kISVAtR" alt="Call log in Live Call Routing"><figcaption><p>All calls appear in the Call Logs section of your dashboard.</p></figcaption></figure>

All calls appear in the **Call Logs** section of your dashboard. Each log entry includes:

* Caller information
* Who answered (or if unanswered)
* Fallback activity (e.g., "Primary did not answer → routed to Secondary")
* Duration of the call
* A link to the audio recording
* Detailed activity log
* Link to incidents

From the log, you can:

* Review the call for post-incident analysis
* Create or link incidents directly from the log
* Archive or delete entries when no longer needed

### Test mode

Before going live, test your setup:

1. Enable **Test Mode** for 5 minutes.
2. During this time, all calls route directly to you.
3. Ask a colleague to call your number and confirm that routing, fallback, and messages work as expected.

### FAQs

#### How many fallback responders can I add?

Up to 2 fallback responders.

#### I don't have a Twilio or Plivo account. How can I get started?

Email <support@spike.sh>. The Spike team can help with setup.

#### What happens if no one is on-call?

The caller hears your configured **No one on-call message**. Spike takes a message and creates a call log.

#### Can I review past calls?

Yes. All calls are logged with full details and a recording in the **Call Logs** section.

#### Can I have a transcript of my call?

Not yet. Transcripts aren't available currently.


# Triggering incidents

Automatically trigger incidents from incoming calls using Live Call Routing.

<figure><img src="/files/e9IAZXWunGsiVbMjMA2M" alt="Triggering incidents from Live Call Routing"><figcaption></figcaption></figure>

## How to trigger incidents

There are two ways to trigger incidents from Live Call Routing calls: manually from the call log, or automatically after each completed call.

### Manual incident creation

Open any call in the [call log](https://app.spike.sh/lcr) and click **Create incident**. Fill in:

* **Title**
* **Integration**
* **Escalation policy**
* **Priority** (optional)
* **Severity** (optional)

### Auto-trigger incidents

You can configure Spike to automatically trigger an incident after each incoming call is completed.

{% hint style="info" %}
A call is considered **complete** if:

* It is answered and finishes normally, **or**
* It goes unanswered (regardless of whether the caller left a message)
  {% endhint %}

To set up automatic incident creation:

1. From [Live Call Routing](https://app.spike.sh/lcr), visit **Settings → Incidents**
2. Enable **Auto-trigger incident for Live Call Routing**
3. Choose:
   * The **integration** to use for this incident
   * The **escalation policy** to use. You can default to the escalation policy set on the selected integration. If the policy is updated on the integration later, the change applies automatically.
4. (Optional) Set a default **priority** and **severity** to help with alert routing or analytics.

### Auto-generated incident titles

Each automatically triggered incident will have a title in this format:

`On-call hotline: Call from Mitchell Starc (+14156040016) (33s)`

This includes:

* The Live Call Routing setup name
* Caller name (if known)
* Phone number
* Duration of the call

### Incident payload

Spike includes detailed metadata with each auto-triggered incident, so you can automate follow-up actions or run outbound scripts.

```json
{
  "message": "On-call hotline: Call from Mitchell Starc (+14156040000) (33s)",
  "details": {
    "callId": "call_1234567890abcdef",
    "twilioCallId": "CA0a1b2c3d4e5f678901234567890abcd",
    "liveCallRouting": {
      "name": "On-call hotline",
      "number": "+12245550123",
      "recordingEnabled": true
    },
    "call": {
      "calledAt": "2025-07-29T06:24:32.262Z",
      "answeredAt": "2025-07-29T06:24:55.801Z",
      "duration": 33,
      "recording": "https://api.twilio.com/2010-04-01/Accounts/AC123/Recordings/RE456"
    },
    "caller": {
      "name": "Mitchell Starc",
      "number": "+14156040016"
    },
    "receiver": {
      "id": "user_abcdef123456",
      "name": "Priya S.",
      "oncallId": "oncall_789xyz",
      "oncallName": "Backend Team"
    },
    "details": ""
  },
  "priority": "p1",
  "severity": "high",
  "teams": ["devops", "backend"],
  "title": "On-call hotline: Call from Mitchell Starc (+14156040016) (33s)"
}
```

Use this payload to:

* View who answered or missed the call
* Track escalation behavior
* Access the call recording
* Run follow-up automation using Spike or external tools

### FAQs

#### Can I trigger incidents for missed calls only?

Yes.

#### Can I customize the incident title?

Not yet. The incident title is auto-generated using the routing name, caller name/number, and call duration to ensure uniqueness.

#### Will changing the escalation policy on the integration affect auto-triggering?

Yes, but only if you've selected to sync escalation with the integration. Any updates to the integration's escalation will automatically apply here.

#### Can I use this with webhooks or automation tools?

Yes. The incident payload contains detailed metadata (call ID, responder info, timestamps, etc.), which you can use in Spike's outbound webhooks or alert rules.


# Configuring with Twilio

Connect your Twilio number to Spike to enable Live Call Routing.

<figure><img src="/files/gVgJdPh25oEsKGzqZPNY" alt="Configure Twilio for Live Call Routing on Spike"><figcaption></figcaption></figure>

## Configure your Twilio number for Live Call Routing

Spike provides a webhook URL during Live Call Routing setup. Follow these steps to connect it with your Twilio number.

{% stepper %}
{% step %}

#### Sign in to Twilio

In your Twilio Console, go to **Develop → Phone Numbers → Manage → Active Numbers**. If you don't have a phone number, buy one from the Twilio dashboard first.
{% endstep %}

{% step %}

#### Select your phone number

Choose the number you want to use with Live Call Routing.
{% endstep %}

{% step %}

#### Configure incoming call settings

Scroll down to the **Voice** section.

* For **When a call comes in**, select **Webhook** from the dropdown.
* Paste your **Spike webhook URL** in the field.
* Set the HTTP method to **HTTP POST**.
  {% endstep %}

{% step %}

#### Configure the fallback handler (optional)

In the same section, find **If primary handler fails**.

* Select **Webhook** from the dropdown.
* Paste the **same Spike webhook URL**.
* Set the HTTP method to **HTTP POST**.

{% hint style="info" %}
Save your changes by scrolling to the bottom of the page and clicking Save.
{% endhint %}
{% endstep %}

{% step %}

#### Access call recordings

When call recording is enabled, Spike retrieves recordings directly from your Twilio account.

* In your Twilio Console, go to **Develop → Voice → Settings → General**.
* Under **HTTP Basic Authentication for media access**, select **Disable**.
  {% endstep %}
  {% endstepper %}

<figure><img src="/files/drVzamfP7bOdhdKY5aZN" alt="Twilio webhook settings for Live Call Routing"><figcaption></figcaption></figure>

Once saved, your Twilio number will forward all incoming calls to Spike. Spike handles routing, fallbacks, and call logging automatically.

{% hint style="info" %}
Need help connecting your Twilio account? Reach out to <support@spike.sh>.
{% endhint %}


# Configuring with Plivo

Connect your Plivo number to Spike to enable Live Call Routing.

<figure><img src="/files/pC1QRJ89kCFu73W4jSwa" alt="Configure Plivo for Live Call Routing on Spike"><figcaption></figcaption></figure>

## Configure your Plivo number for Live Call Routing

Spike provides a webhook URL during Live Call Routing setup. Plivo requires you to create an XML application first, then connect it to your phone number.

{% stepper %}
{% step %}

#### Create an application

In your Plivo Console, go to **Voice → XML under Applications → New Application**.

Give the application a name you can recognise later.

Under the **Voice** section, select POST request and paste Spike's webhook URL under:

* Primary answer URL
* Fallback answer URL
* Hangup answer URL (optional)

Click **Create Application**.

<figure><img src="/files/nfKtOvBuA2THyH9OJAaH" alt="Plivo XML application settings for Live Call Routing"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Configure your phone number

Visit **Phone Numbers → Active** and select your number.

In the Number configuration section:

* Select **XML Application** under Application Type
* Select your previously created application under **Plivo Application**

Click **Update**.

<figure><img src="/files/vPHfg8WymwouHQxIFE1T" alt="Plivo phone number configuration for Live Call Routing"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Access call recordings

When call recording is enabled, Spike retrieves recordings directly from your Plivo account.

* In your Plivo Console, go to **Voice → Settings → Other Settings**.
* Under **HTTP Basic Authentication for media access**, select **Disable**.
  {% endstep %}
  {% endstepper %}

Once saved, your Plivo number will forward all incoming calls to Spike. Spike handles routing, fallbacks, and call logging automatically.

{% hint style="info" %}
Need help connecting your Plivo account? Reach out to <support@spike.sh>.
{% endhint %}


# Playbooks

Playbooks automate incident response by running predefined actions manually or based on conditions.

A Playbook is a sequence of response steps Spike runs on an incident. Set one up once, then trigger it manually or configure it to run automatically.

{% hint style="info" %}
Actions run in the exact order you define. Spike does not reorder them.
{% endhint %}

## What Playbooks can do

* Add responders based on severity or incident type
* Set incident priority and severity
* Create war rooms for team collaboration
* Generate tickets in Jira, Linear, or ClickUp
* Create support tickets in Zendesk or Freshdesk
* Trigger external workflows via outbound webhooks

## How Playbooks run

### Manual runs

Run any Playbook from an incident with a single click. Use this when you need to kick off a response sequence on demand.

### Automatic runs

Set conditions on a Playbook and Spike runs it automatically on every incident that matches. Conditions can target severity, integration, or other incident properties.

## Permissions

All team members can create, edit, and delete Playbooks by default. Advanced permission settings are available for teams that need granular control over read, write, and execution rights.

## Example use cases

* **Critical incident response:** Add a response team, assign severity, and create a ticket in one click.
* **Low severity management:** Set the incident to low priority and resolve it automatically.
* **External communication:** Create a status page incident and notify subscribers automatically.
* **Custom integrations:** Trigger scripts or external processes via outbound webhooks.
* **Ticket triage:** Assign incidents to the right responders and set priorities based on keywords.
* **Security breach:** Acknowledge the incident, open a high-priority support ticket, and trigger isolation protocols via webhook.


# Actions in Playbooks

All actions available in Spike Playbooks, with examples of how to use them.

Each Playbook can include one or more of the following actions. Actions run in the order you define.

## Actions

* **Add responder** — Add one or more team members to the incident.
* **Mark priority as** — Set the incident priority from P1 to P5.
* **Mark severity as** — Set the incident severity from SEV1 to SEV3.
* **Trigger outbound webhook** — Send the incident payload to an external endpoint to trigger scripts or workflows.
* **Use Title remapper** — Rewrite the incident title using a predefined template.
* **Execute playbook** — Trigger another Playbook as part of this one.
* **Create a War room** — Start a video conference on Google Meet or Zoom for team collaboration.
* **Create a task on** — Log the incident as a task in Jira, Linear, or ClickUp.
* **Create a support ticket on** — Open a ticket in Zendesk, Freshdesk, or Supportpal.
* **Resolve incident** — Mark the incident as resolved.
* **Acknowledge incident** — Mark the incident as acknowledged.
* **Add links** — Attach static links to the incident, such as runbooks, PRs, or deploy pipelines.
* **Create incident on status page** — Publish the incident to your status page and notify subscribers.
* **Resolve incidents on status page** — Mark the status page incident as resolved.
* **Resolve by timer after** — Automatically resolve the incident after a set duration.

## Examples

### Critical incident response

**Conditions:** Payload contains high severity indicators, or the incident has occurred more than `x` times in the last `y` minutes.

1. Add responder — bring in senior engineers
2. Mark priority as P1
3. Mark severity as SEV1
4. Create a War room — start a Google Meet for immediate discussion
5. Create a task on Jira — log the incident for tracking

### Low severity auto-resolution

**Conditions:** Payload contains low severity indicators.

1. Mark severity as SEV3
2. Mark priority as P5
3. Resolve incident

### Status page update

1. Create incident on status page — notify subscribers
2. Resolve incidents on status page — update subscribers on resolution

### Payment system glitch

1. Resolve incident
2. Create a support ticket on Zendesk — document the issue for customer outreach

### Auto-resolve with external trigger

1. Trigger outbound webhook — run custom analysis or alert external systems
2. Resolve incident


# Automating Playbooks

Set up Playbooks to run automatically when an incident matches conditions you define.

Automated Playbooks run on every incident that matches the conditions you define. No manual trigger needed.

## Setting up automation

### Step 1: Choose your trigger event

The trigger is an incoming incident.

### Step 2: Select integrations and services

Choose whether the automation applies to all integrations and services or only specific ones.

### Step 3: Define conditions (optional)

* **Incident title** — match by keyword or regex
* **Incident details** — match by payload key/value pairs or regex
* **Incident occurrences** — trigger based on how many times an incident has occurred within a timeframe
* **Priority or severity** — match by P1–P5 or SEV1–SEV3

Combine multiple conditions using AND/OR logic. For example: run the Playbook if the incident is P1 priority OR contains "Down" in its title.

### Step 4: Select incident status condition

**Run on any incident:** Runs for every incident matching your conditions, on any status change — triggered, acknowledged, or resolved.

**Run when all incidents:** Runs when all incidents in a set reach a specific status. Useful for coordinated actions across multiple incidents.

## Example use cases

### When an incident is triggered

1. **Automatic service recovery:** Trigger an outbound webhook to restart servers, run diagnostics, or scale resources.
2. **Keyword detection:** Detect severity from keywords in the incident title, alert teams, and update your status page.
3. **Critical integration incident:** For SEV1 incidents on a specific integration, set priority to P1, launch a War room, and run external scripts via outbound webhook.
4. **Customer-facing outage:** Acknowledge the incident, create a Zendesk ticket, and prepare customer support for communication.
5. **Service self-recovery:** Auto-acknowledge or resolve incidents triggered by service restart attempts.
6. **Performance degradation:** Trigger diagnostics via outbound webhook when performance metrics fall below thresholds.

### When incidents are acknowledged or resolved

1. **Post-incident review:** Trigger an outbound webhook to schedule a review once all incidents are resolved.
2. **System health recheck:** After acknowledging connectivity issues, run an automated health check via outbound webhook.
3. **Customer communication:** Update the status page and send resolution summaries when incidents are resolved.
4. **Resource scaling:** Initiate resource optimization after high-usage incidents are resolved.
5. **Infrastructure restoration:** Automate service restoration and backup checks following database incidents.


# Run Playbooks manually

Trigger any Playbook manually from the dashboard or an incident page.

Click the **Playbooks** button on the dashboard or any incident detail page to trigger a Playbook. A progress modal shows the status of each action as it runs.

## Run on multiple incidents

A Playbook can run on a single incident or multiple incidents at once. This is useful when you want the same response actions applied across different incidents at the same time.

## Permissions

All team members can trigger Playbooks by default. Admins can adjust execution rights as needed.

## Customization

Playbooks run exactly as configured. There is no option to adjust actions at the time of triggering.

## Notifications and logging

Manual Playbook runs are logged in Spike. No notifications are sent to team members when a Playbook is triggered manually.


# Create a status page

Create a status page to communicate the health of your system components to customers.

A status page is a public-facing page that shows the current status of your system components: website, API, mobile app, or any service your customers depend on.

To create one, open the Status Pages dashboard and click **New status page** from the dropdown in the top navigation.

<figure><img src="/files/sI1KMh2CLDR4Ma4Wwnry" alt="Create status page dropdown in Spike"><figcaption></figcaption></figure>

## Fill in the details

<figure><img src="/files/n9YArXy9nEGGIEzJfMep" alt="Status page creation form in Spike"><figcaption></figcaption></figure>

Fill in the name and description. The slug you set here becomes the URL where your status page is publicly accessible at `https://statuspage.spike.sh/your-slug`.

Upload a logo so customers can identify the page as yours.

Set the visibility to **Public** to make the page accessible to anyone with the link.

## Add components

Components represent the parts of your system you want to display status for — website, API, mobile app, or individual microservices. Enter them as a comma-separated list.

<figure><img src="/files/36whLINfCH276l6BuRxn" alt="Add components to status page in Spike"><figcaption></figcaption></figure>

Once created, your status page appears in the dashboard with uptime history for each component.

<figure><img src="/files/2oKPRkuDwjxbDiHdBW7K" alt="New status page in the Spike dashboard"><figcaption><p>Your status page in the dashboard.</p></figcaption></figure>

{% hint style="info" %}
Next, [style your status page](/status-pages/style-your-status-page) with your brand colors, or [add a custom domain](/status-pages/add-custom-domain-to-status-page).
{% endhint %}


# Style your status page

Customize your status page with your brand colors, logo, header, footer, and uptime display options.

Visit [Themes](https://statuspage.spike.sh/themes) from the sidebar to access all styling options. Changes preview in real time before you publish.

## Header

Customize the header color, add a logo, and include links to other parts of your website for consistent navigation.

## Cover image and color

Customize the cover section with a background image or color. You can also hide the cover entirely for a minimal layout.

## Footer

Add custom links, social media icons, and copyright information to the footer.

## Components and historical uptime

For each component, choose whether to display historical uptime data. Showing uptime history adds transparency for visitors.

{% hint style="info" %}
Any non-operational status counts as downtime. Planned maintenance is excluded.
{% endhint %}


# Incidents on your status page

Create public incidents on your status page and post updates as the situation evolves.

Use the status page dashboard to create public incidents and keep customers informed as the situation develops.

## Declare an incident

On your status page, click **Incidents** in the left sidebar, then click **Declare incident**.

<figure><img src="/files/7o927SUb1Xzahl90n3hz" alt="Declare incident form on Spike status page"><figcaption></figcaption></figure>

Fill in the **title** and **description** to describe the issue.

Set the **impact** based on your assessment. You can update this as the situation develops.

Set the **date and time** the incident was identified. Spike uses this to calculate outage duration for affected components.

Select the **affected components** impacted by the incident. For each component, set its current state:

* **Operational**: The component is functioning correctly.
* **Degraded performance**: The component is working but below normal performance.
* **Partial outage**: The component is not working for some users or in some situations.
* **Critical outage**: The component is not functioning for most users.
* **Planned maintenance**: The component has scheduled maintenance. Consider creating a [Planned Maintenance event](/status-pages/create-planned-maintenance-on-status-page) instead.

To **notify subscribers** by email, toggle on the notification option. Spike sends an email to all status page subscribers.

## Add updates to an incident

Once the incident is created, it appears on your status page. Click into the incident to open it.

<figure><img src="/files/PkvMKdO1ptamkpHRmHlf" alt="Incident page on Spike status page dashboard"><figcaption></figcaption></figure>

As you learn more, post updates to keep subscribers informed. Click **Send an update**.

<figure><img src="/files/TMLLFt6QKvdco2H4QN0U" alt="Send an update button on incident page"><figcaption></figcaption></figure>

<figure><img src="/files/cEaIAJRc2jZSMMsfzirZ" alt="Send an update form on Spike status page"><figcaption></figcaption></figure>

For each update, select the current incident status:

* **Identified**: You have identified the cause or the fix.
* **Resolved**: The issue is fixed. Move affected components back to Operational.
* **Postmortem**: The issue is resolved. Use this to share findings and steps to prevent recurrence.
* **Update**: A general update when none of the above statuses apply.

<figure><img src="/files/M7lP6cgf6AlHXewBfdBI" alt="Incident updates timeline on Spike status page"><figcaption></figcaption></figure>

Updates appear on your public status page immediately after posting.


# Create planned maintenance on your status page

Create a planned maintenance event to notify subscribers about upcoming service impact.

Planned maintenance events appear on your public status page and notify subscribers before and after the maintenance window.

## Create a planned maintenance event

<figure><img src="/files/AdFlSOxShaC7MIe4x3VY" alt="Planned maintenance section in Spike status page dashboard"><figcaption></figcaption></figure>

Click **Maintenance** in the left sidebar, then click **New planned maintenance**.

<figure><img src="/files/mcJz9vINRzOAvnstKcjP" alt="Create planned maintenance form in Spike"><figcaption></figcaption></figure>

Fill in the **title** and **description** to explain the maintenance.

Select the **components** the maintenance will affect. For example, mobile app maintenance may not affect backend APIs.

Set the **start** and **end** date and time for the maintenance window.

To email subscribers, check **Notify subscribers**. Spike sends notifications at the start and end of the maintenance window.

## View planned maintenance

<figure><img src="/files/vTEpX78T1lEXuIPuLpZG" alt="Upcoming planned maintenance in Spike status page dashboard"><figcaption></figcaption></figure>

The event appears in the **Upcoming** section on the Planned maintenance page. Click it to see full details.

<figure><img src="/files/ZIbVAePBK1CWH84RlibN" alt="Planned maintenance details in Spike"><figcaption></figcaption></figure>

<figure><img src="/files/wtkr4EWeb0U9ePHZTc00" alt="Planned maintenance visible on public status page"><figcaption></figcaption></figure>

Subscribers see the planned maintenance on your public status page. To make changes after creating it, see [Edit planned maintenance](/status-pages/edit-planned-maintenance).


# Edit planned maintenance

Edit an upcoming planned maintenance event to update its details or schedule.

<figure><img src="/files/ZM8ZybU6rFCPDbsu38U5" alt="Planned maintenance details page in Spike"><figcaption></figcaption></figure>

On the planned maintenance details page, click **Edit** in the options menu at the top right.

<figure><img src="/files/1NYAuKR1boaGu9ymVQBE" alt="Edit planned maintenance form in Spike"><figcaption></figcaption></figure>

Update any field, including the start and end date and time, then save.


# Add a custom domain to your status page

Host your status page on a custom subdomain like status.example.com.

## Step 1: Add your domain in Spike

Click **Host** in the top-right corner of your status page.

<figure><img src="/files/jdoav2q1VgAeDPpKsRam" alt="Host option in Spike status page settings"><figcaption></figcaption></figure>

Enter your custom domain, for example `status.acme.com`.

<figure><img src="/files/iAL4o4A9Gk0vPCslaRy2" alt="Add custom domain to Spike status page"><figcaption></figcaption></figure>

## Step 2: Update your DNS settings

In your domain's DNS settings, add a CNAME record pointing to `alias.spike.sh`.

Spike adds your domain to its SAN certificate so your status page loads correctly over HTTPS.

DNS changes can take up to 10 minutes to propagate.

{% hint style="info" %}
If your status page does not appear on your custom domain after 30 minutes, contact <support@spike.sh>.
{% endhint %}


# Manage your subscribers

Let visitors subscribe to your status page for real-time updates on incidents and maintenance events.

Visitors subscribe directly from your status page using email, RSS/Atom, Slack, or Microsoft Teams. From your settings, you can control who can subscribe, restrict by domain, and import subscribers in bulk.

## How to subscribe

{% tabs %}
{% tab title="Email" %}

<figure><img src="/files/XUDCVAcwceEPe8TL9QV4" alt="Email subscription option on Spike status page"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="RSS / Atom" %}

<figure><img src="/files/7s96Exunku3ri9rxcQsj" alt="RSS/Atom subscription option on Spike status page"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Slack" %}

<figure><img src="/files/b817AMrRq0TecrMr9qFY" alt="Slack subscription option on Spike status page"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Microsoft Teams" %}

<figure><img src="/files/3wy0K8zAJw5IBFs0ZbS6" alt="Microsoft Teams subscription option on Spike status page"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Email subscription

Email is the most common subscription method. Subscribers do not receive a confirmation email after subscribing. The subscribe button appears on both public and private status pages. Email notifications follow your status page theme. Set up branding [under Themes](https://statuspage.spike.sh/themes).

{% hint style="info" %}
Subscribers on private status pages must have a Spike account.
{% endhint %}

### RSS subscription

Subscribers can use an RSS or Atom feed to receive updates. Private status page feed URLs include a unique token.

Use the RSS feed to post status updates to Slack or Microsoft Teams channels, or to automate updates across other systems.

## Configure subscriber control

Open **Security & Access** in your status page settings ([link](https://statuspage.spike.sh/configure/security-access)) to control who can subscribe:

* **Allow new subscribers**: enabled by default
* **Restrict by email domain**: only specified domains can subscribe (add subdomains separately)
* **Disable unsubscribe**: subscribers cannot remove themselves

| Allow new subscribers | Subscribers with domains | Who can subscribe?           |
| --------------------- | ------------------------ | ---------------------------- |
| Enabled               | Disabled                 | Anyone                       |
| Enabled               | Enabled                  | Specified email domains only |
| Disabled              | Automatically disabled   | No one                       |

## Import subscribers

Open the **Subscribers** section from the sidebar ([link](https://statuspage.spike.sh/subscribers)) to see all active subscribers, delete individual subscribers, or import new ones via CSV. The CSV must include an **Email** header. No other fields are processed.

{% hint style="info" %}
Subscribers are scoped to each status page and cannot be shared across pages. To add the same subscribers to multiple pages, upload the CSV to each one.
{% endhint %}

## Notify subscribers

When creating incidents or posting updates, enable the notify option to send email and RSS updates to subscribers. This option is enabled by default.


# Embed status page notifications on your website

Embed live status notifications on your website to keep visitors informed about incidents and maintenance.

The embed feature displays live status notifications directly on your website. Visitors see updates without having to visit your status page separately.

<figure><img src="/files/S7Rrtu9FMHlHKMX3QKqN" alt="Example status page notification embedded on a website"><figcaption></figcaption></figure>

## When notifications appear

After page load completes, the notification appears within 5 seconds. By default, it shows in the bottom-right corner. You can configure the position in your widget settings.

{% hint style="info" %}
Notifications support planned maintenance events and are shown once per visitor.
{% endhint %}

## Set up

Visit the **Widgets** section from the sidebar. Copy the code snippet and paste it before the closing `</body>` tag on every page where you want the notification to appear.

When creating or editing a planned maintenance event, enable **Show a banner to status page visitors**.

<figure><img src="/files/CuDwI6cjEoJGKxfKAn2u" alt="Enable Notify visitors option for planned maintenance in Spike"><figcaption></figcaption></figure>

## Security

Add your domains to the allowlist so the widget loads correctly. Use `*.example.com` to allow all subdomains. For local testing, add your testing domain (such as an [ngrok](https://ngrok.com) URL) to the allowlist temporarily.


# Live status widget

Embed a live status widget on your website to show real-time system health.

<figure><img src="/files/0jbPjoOIMPaE1bec3RIK" alt="Live status widget embedded on a website"><figcaption></figcaption></figure>

The live status widget displays your system's current health directly on your website. Paste the code snippet into any page: footer, contact page, support docs, header dropdown, or sidebar.

## Status priority order

The widget shows the highest-priority status across all your components:

1. Planned Maintenance
2. Critical Outage
3. Partial Outage
4. Degraded Performance
5. Operational

For example, if components A, B, and C are in *Degraded Performance* and component D is in *Critical Outage*, the widget shows *Critical Outage*.

## Customisation

Spike supports Light, Dark, and System themes out of the box. You can override Spike's default CSS to modify the look and feel. All HTML classes use the **`spike--`** prefix.

### How to enable

1. Visit your status page dashboard at <https://statuspage.spike.sh>
2. Navigate to **Widget** from the sidebar
3. Enable **Embed Live Status Page Widget** <img src="/files/dVwdrk3RwKJYOaTAhmw7" alt="" data-size="line">
4. Click **Get code** and paste it in your `<body>` tag

You can initialise the widget with configuration options:

```javascript
<script>
    // Initialize the widget with custom settings
    Spike.initializeStatusWidget({
        element: "#spike-live-status", // set your html element's unique identifer
        statusPageId: "<your unique id>", // do not change this
        theme: "system", // Other options -> light, dark
        console: true // Set to 'false' to disable error logs
    })
</script>
```

{% hint style="info" %}
Adjust the loading and initialisation to fit your frontend stack.
{% endhint %}

{% tabs %}
{% tab title="Large rounded corners" %}

<figure><img src="/files/4np7EQkiJ5m4zgblXEVE" alt="Live status widget with large rounded corners"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Small rounded corners" %}

<figure><img src="/files/n2sZytI2BVq0orTJaHvZ" alt="Live status widget with small rounded corners"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Security

Add your domains to the allowlist so the widget loads correctly. Use `*.example.com` to allow all subdomains. For local testing, add your testing domain (such as an [ngrok](https://ngrok.com) URL) to the allowlist temporarily.


# Create integration and service on our dashboard

Integrations has to be added to a service. In this doc we will take you through the process of how to create a service and add any number of integrations to it.

## **What is a service?**

**You can think of services as a microservice.** Services are a way to scope your internal services from your architecture. Each of your services can have multiple integrations and you can create an unlimited number of services. We highly encourage you to create different services for each of your different modules.

[Learn more about services](https://docs.spike.sh/services/introduction-to-services-on-spike).

## Adding service

![](/files/-MV0lvZIemA8LVozI6cu)

You can create a new service by clicking on the [New Service button](https://app.spike.sh/services/new) on the [services page](https://app.spike.sh/services).

Give it an appropriate name, **for ex: Billing service**. ( This way you can also integrate your payment gateway by adding another integration for every time payments fail ). Hit **Create service!**

***

Once the service is created you will be able to see an overview of your service with all of it's integrations.

### Adding integration

From the header, select Add integration. Optionally, on the sidebar select integrations and then add integration.

![Step 1 - Select an integration](/files/-MA_0pStfmI7OsHpnYJn)

![Step 2 - add service, escalation, Acknowledge timeout](/files/-MA_4DRfZ91cI0S9hMzO)

[Acknowledge timeout](https://docs.spike.sh/incidents/acknowledge-timeout) and repeat escalations are optional but we highly recommend it.

![](/files/-MV0mRgzTZ9s8kBzWDSh)

The last bit on our dashboard is the final step of copying the webhook to be used on Pingdom used as an example here.

So, get the webhook by clicking on the **Copy Webhook** button.

![Final step - copy the integration webhook](/files/-MA_5po6j3rmYasjPvhI)

{% hint style="danger" %}
Make sure to use the Pingdom webhook in Pingdom. Using it on other integrations might not give you the proper incident messages and will not reliably group repeated
{% endhint %}

{% hint style="success" %}
Not able to find an integration you are looking for?? Use the **Webhook** integration instead and paste it on any service.
{% endhint %}


# Setup integrations

Follow the simple instructions on how to setup an integration with Spike.

{% content-ref url="/pages/-Ln3o57T7rleB\_NDguHi" %}
[Integrate Spike with AWS](/integrations-guideline/integrate-spike-with-aws)
{% endcontent-ref %}

{% content-ref url="/pages/-Ln3oiGSeacmwuwdBHIK" %}
[Integrate Spike with Google Cloud](/integrations-guideline/integrate-google-cloud-with-spike)
{% endcontent-ref %}

{% content-ref url="/pages/-M-JdUhWPmT7lJP1hjGG" %}
[Integrating with Webhooks](/integrations-guideline/integrating-with-webhooks)
{% endcontent-ref %}

{% content-ref url="/pages/-Ln3orLYyop8UFMfFt7w" %}
[Integrate Spike with Healthchecks](/integrations-guideline/integrate-healthchecks-with-spike)
{% endcontent-ref %}

{% content-ref url="/pages/-Ln3ouc0uT3e\_dlxfi5W" %}
[Integrate Spike with Apex ping](/integrations-guideline/integrate-apex-ping-with-spike)
{% endcontent-ref %}

{% content-ref url="/pages/-Ln4PJS0-KCekPyWnz64" %}
[Integrate Spike with Uptime Robot](/integrations-guideline/integrate-spike-with-uptime-robot)
{% endcontent-ref %}

{% content-ref url="/pages/-LupVuqDSI2W7hBR6x7e" %}
[Integrate Spike with Sentry](/integrations-guideline/integrate-spike-with-sentry)
{% endcontent-ref %}

{% content-ref url="/pages/-LovtjoNaf81yqiKAdVW" %}
[Integrate Spike with Pingdom](/integrations-guideline/integrate-spike-with-pingdom)
{% endcontent-ref %}

{% content-ref url="/pages/-MABBINnLk479vFR1BOg" %}
[Integrate Spike with Twilio](/integrations-guideline/integrate-spike-with-twilio)
{% endcontent-ref %}

{% content-ref url="/pages/-MA\_mIqCDGSwMhX1FEBp" %}
[Integrate Spike with Microsoft Azure](/integrations-guideline/integrate-spike-with-microsoft-azure)
{% endcontent-ref %}

{% content-ref url="/pages/-MAa4zECjZkmxpJgT1dO" %}
[Integrate Spike with Honeybadger](/integrations-guideline/integrate-spike-with-honeybadger)
{% endcontent-ref %}

{% content-ref url="/pages/-MB3nw1P4yRo3RZqktPL" %}
[Integrate Spike with Datadog](/integrations-guideline/integrate-spike-with-datadog)
{% endcontent-ref %}

{% content-ref url="/pages/-MAqc4pdqP4Uqf0CuBe4" %}
[Integrate Spike with Travis CI](/integrations-guideline/integrate-spike-with-travis-ci)
{% endcontent-ref %}

{% content-ref url="/pages/-MB-1n5WpJBjpgVsoHOm" %}
[Integrate Spike with Rollbar](/integrations-guideline/integrate-spike-with-rollbar)
{% endcontent-ref %}

{% content-ref url="/pages/-MB-MwcKIyKoYZe\_Poow" %}
[Integrate Spike with Needle.sh](/integrations-guideline/integrate-spike-with-needle.sh)
{% endcontent-ref %}

{% content-ref url="/pages/-MB9PsFs-KllRTxT8yWU" %}
[Integrate Spike with Cronitor](/integrations-guideline/integrate-spike-with-cronitor)
{% endcontent-ref %}

{% content-ref url="/pages/-MCltmiobhHTyx3eqLoR" %}
[Integrate Spike with Bugsnag](/integrations-guideline/integrate-spike-with-bugsnag)
{% endcontent-ref %}

{% content-ref url="/pages/-MD0e0g4UX7g1jMF3wBr" %}
[Integrate Spike with Prometheus](/integrations-guideline/integrate-spike-with-prometheus)
{% endcontent-ref %}

{% content-ref url="/pages/-MD0bKHfMKOaJuwv5bj0" %}
[Integrate Spike with Grafana](/integrations-guideline/integrate-spike-with-grafana)
{% endcontent-ref %}

{% content-ref url="/pages/-MEMMUxQuVfmWEVdXC0h" %}
[Integrate Spike with Instana](/integrations-guideline/integrate-spike-with-instana)
{% endcontent-ref %}

{% content-ref url="/pages/-MEOQC3s4HbvjL2nK3YS" %}
[Integrate Spike with Zapier](/integrations-guideline/integration-spike-with-zapier)
{% endcontent-ref %}


# Archive an integration

Simple guide to archiving an integration

## How to archive an integration?

You can choose to archive any integration. Visit the integrations page, select an integration and click archive.

![archive any integration](/files/-MRcwzeTnmAAODfijwlY)

{% hint style="info" %}
Once the integration is archived, no new incidents will be created
{% endhint %}

### Is it possible to retain a webhook after archiving?

No. Once you archive any integration (ex: AWS) and then create a new one (ex: AWS) then the webhook will be different than the archived one.

### Does this affect existing incidents?

No. In fact, the existing incidents will prompt you about archived integration to avoid misinformation.

![archived integration in existing integration](/files/-MRdK5C-py5v4rHN22tr)

### How to restore an integration?

There is no automated process. If you certain about restoring then talk to us via chat from the dashboard or email us at <support@spike.sh>


# Integrating with Webhooks

Use spike's webhook and create an incident from your code.

## Create an incident using our webhooks integration

Each webhook is unique to the service and escalation policy. Make sure you create a webhook integration and copy the webhook URL. [Know how](https://docs.spike.sh/integrations-guideline/create-integration-and-service-on-dashboard).

From your code, you can create an incident simply by making a **POST** request.

## Create an incident

<mark style="color:green;">`POST`</mark> `https://hooks.spike.sh/:token/push-events`

#### Path Parameters

| Name  | Type   | Description                               |
| ----- | ------ | ----------------------------------------- |
| token | string | Unique token for your webhook integration |

#### Request Body

| Name     | Type   | Description                                                                                                               |
| -------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| title    | string | This will be the title of your incident. Failing to add this will create an empty incident. Read more about this below 👇 |
| body     | string | Accepts objects and strings. This data will be in your incident details                                                   |
| severity | string | <p>Sets the severity on your incident. Options are</p><p><strong>sev1, sev2, and sev3.</strong></p>                       |
| priority | string | <p>Sets the priority on your incident. Options are</p><p><strong>p1, p2, p3, p4, and p5</strong></p>                      |

{% tabs %}
{% tab title="200 Cake successfully retrieved." %}

```
{ Ok: true }
```

{% endtab %}

{% tab title="500 Could not process your request." %}

```
{}
```

{% endtab %}
{% endtabs %}

The above request will create a new incident. Please make sure you have used the correct webhook URL. If you have copied the URL from the dashboard then the **token \_\*\*\*\***\_\*\* should already be present.\*\* A new incident is created soon as make a POST request. A successful request will get you 200 HTTP response status code.

### **When is a new incident NOT created?**

If the integration has an open incident (*not resolved state*) \_\_ with the same title then a new incident will NOT be created.

### What is the title's significance?

The **title** plays an important role really. A new incident will use this title and it will be sent on all alter channels. The title acts as a unique identifier to perform group actions, suppress repeated incidents and also to auto-resolve them.

### What happens if I miss adding a title?

Failing to add **title** would create incidents with no message. This also means that it will NOT group, suppress or auto-resolve these incidents.

{% hint style="info" %}
We highly recommend you add a title to your POST request while creating an incident
{% endhint %}

## Auto-resolve incident

<mark style="color:green;">`POST`</mark> `https://hooks.spike.sh/:token/push-events`

#### Path Parameters

| Name  | Type   | Description                               |
| ----- | ------ | ----------------------------------------- |
| token | string | Unique token for your webhook integration |

#### Request Body

| Name   | Type   | Description                                                                                                                                               |
| ------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| status | string | **resolve**                                                                                                                                               |
| body   | string | As of now, you can add any message about the incident you would like here. Accepts objects too.                                                           |
| title  | string | This will be the title of your incident. Failing to add this will create an empty incident title with all other parameters. Read more about this below 👇 |

{% tabs %}
{% tab title="200 Cake successfully retrieved." %}

```
{ Ok: true }
```

{% endtab %}

{% tab title="500 Could not process your request." %}

```
{}
```

{% endtab %}
{% endtabs %}

The above request will automatically resolve incidents. We use the title and the token to uniquely get open incidents and resolve them.

All you need is to add the **status parameter as 'resolve'** in your POST request. The rest of the parameters are the same as creating incident request.

{% hint style="warning" %}
Make sure to have the same **title while resolving,** otherwise it won't work.
{% endhint %}


# Integrate Spike with Email

Have a tool which doesn't support webhook? In this case, use our email integration.

## Where to use email integration?

Many tools like DigitalOcean, Pulseway etc do not support webhooks as alert channels. In this case, you can choose to create an Email integration with Spike.sh to get incidents and relevant alerts.

## How does email integration with Spike.sh work?

Select Email from our list of integrations and use the uniquely generated email address on any tool of your choice. The emails received are managed by us for your integration. There is no inbox :)

{% hint style="info" %}
The subject line will be the incident title and the body of email will go into incident details.
{% endhint %}

### How to create an email integration?

#### Step 1

From the header > click [Add integration](https://app.spike.sh/integrations/new) and select **email**, give it an appropriate name create the integration.

#### Step 2

Copy the Email from the integration page.

![](/files/-MVtiMGT7XqZb90QCM6m)

#### Step 3

You can choose to send an email to your unique email address to test if an incident gets created.

### Example -

![](/files/-MV1kapUOPvOqBgWGaON)

{% hint style="warning" %}
Email integration does not auto-resolve incidents and there is a 30 MB payload limit.
{% endhint %}


# Integrate Spike with AWS

## Service and Integration

Make sure you have the service and integration already setup for AWS. Follow the link below on instructions of how to create integration and service

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

## Using the webhook on AWS

{% hint style="info" %}
We will create a SNS topic and add alarms on say EC2 servers which can be monitored eventually on **Cloudwatch**
{% endhint %}

![](/files/Ih7dXaqWmq2VVplIYzQ3)

Login to your AWS console and head straight to [Simple Notification Service (SNS)](https://console.aws.amazon.com/sns/v3/home).

![](/files/D66FUR1NWWClJ8oIPRpD)

We will create a topic in SNS which will be available across AWS services.

After your subscription is made, you will be taken to the topic's detail page. **Refresh the page to make sure that the status will be confirmed for the subscription**. If that fails to happen, you can click on the topic page and ask to request confirmation.

![](/files/3nI1zqPvfqlQoj5uElTN)

Click on **Create topic** and name your topic on the next page.

![](/files/JXQHwHlShMUTUHbU9DFH)

{% hint style="success" %}
A good name goes a long way. We recommend you use a name that you and your peers can easily identify. One way is to give the topic your service's name on Spike
{% endhint %}

![](/files/mczDyfiCAlE36e6B8U6o)

Once the topic is created, you will need to create a subscription (*this is where you paste the webhook you copied from Step 1*)

Once you created a topic, you will see your topic page like this

![Create a subscription for the topic you create before this step](/files/hWzRzLBVXoYNpTqfSa4k)

Select **HTTPS** as the protocol and paste the copied webhook into the endpoint and click on create subscription at the bottom. *Selecting HTTPS is mandatory.* Spike will automatically confirm the subscription for you.

![](/files/YzwMs0jprrc7ccuj3t3Q)

{% hint style="danger" %}
Make sure to **Refresh** the page on AWS
{% endhint %}

![](/files/vgAn5dFYdGWteEVALpo3)

If the status has not changed then inside the topic, can find the subscription. Select it and request for confirmation.

## Receiving incidents on Spike

We will use the above topic to receive incidents by creating alarms on Cloudwatch. We will also dive into setting up incident alarms directly from EC2.

### Cloudwatch

Navigate to [Cloudwatch](https://console.aws.amazon.com/cloudwatch/home) on your AWS console

![](/files/nQEpjoFRAD2tsKjwK3si)

Select alarms and then create alarm

![](/files/W4xbNTImV9SPze2o9pE2)

We recommend you select an alarm which is BAD. This will trigger and actually register a new incident.

**Make sure to choose the newly created service at the bottom in the ACTIONS section.**

![](/files/5xtvK8gSx84AODVNSRQY)

When you click on choose metric, you might see more or less services than our dashboard and that is completely fine. Choose as and many metrics you would like.

{% hint style="info" %}
We recommend choosing many metrics as incidents can occur from any of the above services including billing.
{% endhint %}

{% hint style="success" %}
This integration supports auto resolution by adding an **OK** state in all your monitors in AWS
{% endhint %}

### EC2 (example)

We will setup incident alerts for EC2 as an example here -

![](/files/sqKckPHrY3aUOOLlzlvb)

**Follow these steps below once you have selected instance from sidebar on EC2 -**

1. Select an instance
2. Go to Actions
3. Cloudwatch Monitoring
4. Add/Edit alarms

![](/files/V2zb88zK0CWQjMoLFLOA)

![](/files/8JkwE2sFkX3AOmcbVHsK)

Once you see the above popup, make sure to select the SNS topic you created in Step 2. Fill in the details for your alarm.

As an example, we have created a simple alarm for when the CPU Utilization crosses 60% on our EC2 instance.

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited
3. **How many SNS topics can I create on AWS?**
   * Unlimited.

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [kaushik@spike.sh.](mailto:kaushik@spike.sh)


# Integrate Spike with Google Cloud

## Service and Integration

Make sure you have the service and integration already setup for Google Cloud. Follow the link below on instructions of how to create integration and service

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

## Use the webhook on Google Cloud

We will create a webhook on Stackdriver to integrate directly with Spike. There is no limit to the number of Spike's webhooks you can add on Google Cloud

{% hint style="success" %}
Updated Google Cloud integration docs on 8th May 2020.
{% endhint %}

Login to your [Google Cloud console](https://console.cloud.google.com/) and find [Monitoring](https://console.cloud.google.com/monitoring) on the sidebar

![Select alerting in Monitoring sub menu](/files/-M6o5IHlWivXR7XjD4cH)

![Click on edit notification channel](/files/-M6o5W71wKt8ku7Y9CFB)

![Select webhook](/files/-M6o5W73rfJOVRBfJxSp)

![Paste the webhook and give an appropriate name](/files/-M6o5W74Flf6UGBWWAHJ)

Enter the webhook you copied earlier.

{% hint style="info" %}
Optional: You can choose to have Basic Auth enabled. Every Google Cloud integration will have a unique username password combination.
{% endhint %}

**Hit Test Connection and Save**

{% hint style="info" %}
Testing your webhook will create a test incident. Resolve the test incident immediately. This test incident will not have any metrics though.
{% endhint %}

{% hint style="danger" %}
If it fails, make sure you have pasted the right username and password. Refresh the page after a few tries. We are always available on the Live chat on your dashboard. You can also reach out to us on <support@spike.sh>
{% endhint %}

![Create a new policy](/files/-M6o5W75mktzPWswW6sQ)

Go to the [monitoring section](https://console.cloud.google.com/monitoring) again and click on Create policy.

![Add your conditions for alerts and select notification channel](/files/-M6o6UYHjOqKhGZzUYLB)

![Select the notification channel we just created](/files/-M6o6rVOGOqMuu9o3pK_)

{% hint style="info" %}
For your existing policies, you can simply edit and choose the same steps mentioned
{% endhint %}

Inside of Notifications, click on the dropdown menu and select **Webhook with Basic Authentication**.

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited
3. **How many SNS topics can I create on AWS?**
   * Unlimited.

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Sematext

Detect and troubleshoot production & performance issues with logs, metrics, synthetic and real user monitoring. All in one place on Sematext.

## Service and integration

Create a new Sematext integration. Follow the steps in the link below to create a service and integration.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

###

### Using the webhook on Sematext

### Step 1

From the [Sematext Hook](https://apps.sematext.com/ui/hooks) dashboard, **Create New** alert.

![Select to add Alerts](/files/-MAeESKY_LgFMyoLY6I4)

### Step 2

From the list of options, select **Spike.sh**.

![Select WebHook](/files/-MAeFlCnu6mTPQ2edSwQ)

### Step 3

You will be now displayed with a configuration panel.

Paste your **Spike webhook** in the URL field

```
// Make sure to add the following parameters and any other variables you deem fit

$description
$title

```

You can also add custom variables for more in-depth information about the alert.

Finally, **Save notification hook.**

![Configure the Webhook fields](/files/-MAeGJjga5Hn-mI1QVKG)

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Healthchecks

Healthchecks.io monitors the heartbeat messages sent by your cron jobs, services and APIs. Spike integrates easily so get immediate alerts when they don't arrive on schedule.

## Service and Integration

Make sure you have the service and integration already setup for Healthchecks. Follow the link below on instructions of how to create integration and service

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

## Use the webhook on Healthchecks

![Spike.sh on Healthchecks.io](/files/-MCIBqvAyFXHiNu1_6qQ)

You can use our native **Spike.sh** integration on [**Healthchecks.io**](https://healthchecks.io)**.** Copy the webhook from above steps after creating an integration. Next, paste it on Healthchecks.io, simple as that.

{% hint style="success" %}
This integration supports auto resolution.
{% endhint %}

{% hint style="warning" %}
If you are using the webhook integration with Healthchecks.io then feel free to create a new integration as mentioned above and **delete the webhook**. The native integration is more robust and is the recommended way.
{% endhint %}

At any given point in time, you can book a free consultation with us by [blocking our calendar](https://calendly.com/spikehq) or contacting us at <support@spike.sh>


# Integrate Spike with Pingdom

Instructions for integrating Pingdom to receive alerts when any of the HTTP(s), POP3, IMAP, SMTP or TCP check for your application fails.

## Service and Integration

Make sure you have the service and integration already setup for Pingdom. Follow the link below on instructions of how to create integration and service

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

## Use the webhook on Pingdom

Login to [pingdom](https://my.pingdom.com) and navigate to [Integrations page](https://my.pingdom.com/integrations/settings).

You can choose to edit or add a new one. Enter the webhook you copied in the above step.

![Adding spike's webhook on pingdom](/files/-LovysWiTrrM6mXyrxyg)

Once you have saved it, you can use this for all monitoring. For uptime checks, navigate to the [uptime section](https://my.pingdom.com/newchecks/checks) under **Experience monitoring.**

![Select your Spike webhook for checks](/files/-LovzDY2EP_02sS4Vurw)

Select one or more checks and edit to select the webhook at the bottom of the modal.

> You can choose to test the webhook but note that it will create a new incident.

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Sentry

Connect Sentry with Spike and get incident alerts over phone calls, sms, Slack, etc to the on-call responder

<figure><img src="/files/g1y51g4PQ1KgYSmRhyvK" alt=""><figcaption></figcaption></figure>

[Sentry](https://github.com/spikehq/docs.spike.sh/tree/main/integrations-guideline/https/sentry.io) is a powerful error monitoring and performance tracking platform designed for developers. It provides real-time insights into application issues, helping teams identify, troubleshoot, and resolve errors quickly. With detailed stack traces, performance metrics, and contextual data, Sentry ensures that you can proactively manage your application's health and deliver a seamless user experience.

## Overview

The Spike integration with Sentry bridges error monitoring and incident response. Connect Sentry to Spike to automatically trigger real-time incident alerts for critical errors.

You can setup Spike with Sentry in two ways.

1. Single-click install on Sentry
2. Connect with Spike webhook (*paste webhook on Sentry*)

### Integrating with multiple projects on Sentry

![Multiple projects on Sentry](/files/iAKaoD36fFcDtCivnMvj)

To integrate multiple projects on Sentry with Spike, you will need to use both Spike app on Sentry and the webhook integration.

Consider you have services A,B, and C to integrate with Sentry.

**Service A**: Utilize Sentry's 1-click app for a streamlined integration. This is limited to a single project on Sentry.

**Services B, C and so on..**: Establish a webhook integration by creating it on [Spike](https://app.spike.sh/integrations/new) and subsequently configuring it in Sentry.

The 1-click app offers an effortless setup for one project, while the webhook integration allows for unrestricted application across multiple projects.

***

## How to set up?

To set up, you will need a Sentry integration on Spike no matter which way you choose. So please make sure you have created one on [Spike](https://github.com/spikehq/docs.spike.sh/tree/main/integrations-guideline/https/app.spike.sh/integrations/README.md)

### 1. Single-click install on Sentry

{% tabs %}
{% tab title="Installation steps" %}

* **Install and connect**
  * On Sentry, go to settings > Integrations
  * Locate the Spike integration and click to begin setup.
  * Sentry will redirect you to Spike, where you can select an existing Sentry integration to connect with your Sentry account.
  * Choose your integration on Spike and complete the installation process.
* **Route alerts from Sentry**
  * Once the installation is verified, go to the Alerts section in Sentry and configure alert rules to start receiving alerts on Spike.
  * Add your conditions for alerts and in actions select **Send a notification via an integration and then Select Spike.**
    {% endtab %}

{% tab title="Installation with images" %}

* On Sentry, go to settings > Integrations and install our native Spike Integration

![Select Spike in your Sentry account](/files/-MHsYl_-CjwR9SaHWC2w)

* Sentry will redirect you to Spike to select an existing Sentry integration that should be connected to your Sentry account.

![Select integration on Spike](/files/QTWlTLCeGCDkT75PttXN)

* Once you have installed and the installation is verified, visit Alerts section in your Sentry account and click on **Create Alert rule.**

![Select alerts from sidebar](/files/-MHsQgapFmSB_upMrLMd)

* Add your conditions for alerts and in actions select **Send a notification via an integration and then Select Spike.** ![](/files/-MHsSTo_74AMGr3VBzJJ)
  {% endtab %}
  {% endtabs %}

* Test by generating a new error on Sentry.

***

### 2. Integrating with Sentry's webhook

{% tabs %}
{% tab title="Set up steps" %}

* **On Sentry**
  * On your Sentry account, navigate to Settings > Integrations and select Webhook.
  * Paste the webhook URL copied from Spike into the Webhook field in Sentry's integration settings.
  * Enable the plugin to activate the integration.
* **Configure alert rules**
  * Go to the Alerts section in the Sentry sidebar and select Create Alert Rule.
  * Define the conditions under which alerts should be triggered.
  * In the Actions section, select Send a notification via an integration and choose the Spike webhook integration.
    {% endtab %}

{% tab title="Set up with images" %}
**Step 1:** On [Sentry](https://sentry.io), go to settings > Integrations and **select Webhook**

![Webhooks on Sentry](/files/-MHsNCjEs7dFegA-Jo01)

![Add to project](/files/-MHsNZpEdemHkoGokOB0)

Paste your copied webhook from Spike to Sentry's webhook integration.

![Paste Spike webhook on Sentry](/files/-MHsO1SGDAzVqH18TfqG)

{% hint style="warning" %}
Do not forget to **Enable** the plugin
{% endhint %}

**Step 2: Set up alerts**

Visit Sentry's new Alerts section from the sidebar and select **Create Alert Rule**

![](/files/-MHsSTo_74AMGr3VBzJJ)

Add your conditions for alerts and in actions select **Send a notification via an integration**

![Select notification via Integration for Webhook](/files/-MHsQxPevc0TrZRttcth)

This is how the end result might look

![Spike webook integration on Sentry](/files/fIchAU8jeYtyYtH9YeuO)
{% endtab %}
{% endtabs %}

* Test by generating a new error on Sentry.

### FAQs

<details>

<summary>Why create a Sentry integration on Spike?</summary>

Creating a Sentry integration on Spike allows you to group and suppress incidents effectively, ensuring better incident management.

</details>

<details>

<summary>Is there a limit on Sentry integrations?</summary>

**Single-click install**: Only one integration is allowed per Sentry account.

**Sentry webhook integration**: Unlimited integrations are supported.

</details>

<details>

<summary>Does resolving the incident on Spike resolve the error on Sentry?</summary>

No. Sorry, we currently don't support bi-directional integration with Sentry.

</details>


# Integrate Spike with Apex ping

Ping by Apex is a very beautiful minimalist uptime monitoring solution for businesses. Spike integrates with Apex ping using webhooks to alert you when your websites are down

## Service and Integration

Make sure you have the service and integration already setup for Apex ping. Follow the link below on instructions of how to create integration and service

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

## Use the webhook on Apex ping

Login into [Apex.sh/ping](https://ping.apex.sh/) account and visit the [alerts page](https://ping.apex.sh/alerts) to being your integration.

![](/files/-Ln4OhY9aALz1Fbm0qWQ)

Click on **add alerts**

On the alerts page, you can add or edit an alert.

1. Select **Webhook** from the dropdown.
2. Paste the webhook
3. Customize your settings for alerts and **save.**

{% hint style="success" %}
This integration supports auto resolution.
{% endhint %}

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Uptime Robot

## Service and Integration

Make sure you have the service and integration already setup for Uptime Robot. Follow the link below on instructions of how to create integration and service

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

## Use the webhook on Uptime Robot

Login to [Uptime Robot](https://uptimerobot.com/login) and navigate to Settings from the header.

Go to **settings > click Add Alert contact**

This is where you manage all the alerts for your monitors. Create as many alerts as you would like and you select which monitor's up and down will be alerted by identifying by name.

####

Select webhook from the drop-down menu.

![](/files/whBnMXpHBfGAjfJwyqX0)

***

Paste the Spike webhook URL in the **URL to Notify** field.

![](/files/7o2miYXxFnpATgeseG95)

Paste the following JSON in the **POST Value** field.

```
{   
    "monitorID": "*monitorID*",
    "monitorURL": "*monitorURL*",
    "monitorFriendlyName": "*monitorFriendlyName*",
    "alertType": "*alertType*",
    "alertTypeFriendlyName": "*alertTypeFriendlyName*",
    "alertDetails": "*alertDetails*",
    "alertDuration": "*alertDuration*",
    "alertDateTime": "*alertDateTime*",
    "sslExpiryDate": "*sslExpiryDate*",
    "sslExpiryDaysLeft": "*sslExpiryDaysLeft*"
}
```

After selecting the Webhook option, paste the webhook you copied earlier from the dashboard and hit **Create alert contact**

## Receive alerts

For your new or already existing monitors, follow these simple steps to send alerts to Spike.

![](/files/H2Togq7Izp4XCaIr4JiX)

Edit your monitors

![](/files/RFF7wqP9tmm3oxXAgPmY)

Identify your Spike integration by name and select it.

{% hint style="success" %}
This integration supports auto resolution.
{% endhint %}

**Hit save!**

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Twilio

Integrate Spike with Twilio to receive real-time alerts via Phone calls, SMS, Slack, MS Teams, and more for usage anomalies and debugger errors.

<figure><img src="/files/S6w5VZfQnQgSwWjURXKl" alt=""><figcaption></figcaption></figure>

## Overview

[Twilio](https://twilio.com) provides cloud communication services for messaging, voice, and more. It also offers tools like Debugger and Usage Triggers to monitor usage spikes, errors, and anomalies in your Twilio account.

With Spike’s integration, you can receive real-time alerts for Twilio events, such as:

* **Usage Triggers:** Alerts for predefined usage thresholds (e.g., sudden spikes in API usage or spending).
* **Debugger Alerts:** Notifications for issues identified by Twilio's Debugger tool.

This integration enables your team to respond immediately to critical events and usage patterns in your Twilio services.

{% hint style="info" %}
Spike will automatically group repeated incidents and suppress alerts while an incident is open. You can set up [alert rules](https://docs.spike.sh/alerts/alert-rules) to control incident severity and customize actions. Auto-resolution is not supported.
{% endhint %}

## Set up instructions

**Step 1:** Create a Twilio integration in the Spike dashboard and copy the webhook URL.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

**Step 2:**

{% tabs %}
{% tab title="Alarms in Twilio" %}
**Setup:**

* Go to your Twilio Console and navigate to **Monitor > Alarms > Manage Alarms**.
* Create a new alarm, configure your metrics at the top of the page.
* Scroll down, enable webhook and paste your Spike webhook URL here. **Save and Test:**
* Save the configuration and, if possible, trigger a test to verify the webhook is working.
  {% endtab %}

{% tab title="Errors, Debuggers, and Usage triggers" %}
**Setup:**

* Go to your Twilio Console and navigate to **Monitor > Logs > Errors**.
* Create a new webhook, paste your Spike webhook URL here.
* Configure the threshold and parameters for the trigger in Error logs section. **Save and Test:**
* Save the configuration and, if possible, trigger a test to verify the webhook is working.
  {% endtab %}
  {% endtabs %}

## FAQ

<details>

<summary>Does Spike use this integration to make calls from my Twilio account?</summary>

No. This integration does not allow Spike to make calls or send messages from your Twilio account.

</details>

<details>

<summary>What is this integration mainly used for?</summary>

This integration is meant to notify you about issues or unusual activities in your Twilio account, such as usage spikes or debugger errors. It helps you create and track incidents related to your Twilio services in real time.

</details>


# Integrate Spike with Microsoft Azure

### Service and integration

Make sure to add the Azure integration and copy the webhook.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

{% hint style="success" %}
Azure Integration on Spike is capable of integrating with Azure Services like [**VMs, Application Insights** and more](https://azure.microsoft.com/en-in/services/).
{% endhint %}

### Using Webhook with Azure

### **Step 1**

On [Azure Portal](https://portal.azure.com/#home) go to **Monitor**

![Select monitor](/files/-MA_yDlL3GfQvBT0qg20)

### **Step 2**

On the Monitor dashboard, choose to **Create Alert**

![Hit create alert](/files/-MA_z-fxwp6uEbv-g0sU)

### **Step 3**

![Select resources you would like to monitor](/files/-MA_zSWY3IDiCiOwUwwc)

On the Create Alert dashboard, you will be asked to configure the categories:

1. **Select A Resource**\
   Choose a resource group you wish to monitor, for example, a Virtual Machine.
2. **Select A Condition**\
   Choose a condition at which you wish to trigger an alert
3. **Select Action Rule**\
   So, this is the main section which lets you integrate with webhooks. Azure allows you to paste a custom webhook URL to direct alerts to that server.

![Paste the webhook on Azure](/files/-MAa16dCmlstwNl3Xjk0)

### **Step 4**

Finally, add a **description** to your alert and choose the **severity** of the alert.

![Set alert rules](/files/-MAa1RXJWUecTZfm4dUL)

In the advanced settings section, make sure to check both **enable upon creation** and **automatically resolve alerts**.

<figure><img src="/files/aUO5jCVddv9zgReWK5QL" alt=""><figcaption><p>Automatically resolve Aure alerts</p></figcaption></figure>

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Honeybadger

How to get Phone, SMS and Slack alerts from Honeybadger?

### Service and integration

Make sure you have the service and integration already setup for Honeybadger. Follow the link below on instructions of how to create integration and service

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

### Using Webhook with Honeybadger

### Step 1

From the [Honeybadger](https://app.honeybadger.io/) dashboard, select your project, Then go to **Settings** and choose **Alerts and Integrations**

![Select Alerts and Integrations](/files/-MAa79Z4ku6P1_oMnSg1)

### Step 2

Scroll down till you find **WebHook** option and select it.

![Select WebHook from the list](/files/-MAa7Mn1JxH6tu3e_Vjw)

###

### Step 3

Finally, all left is to paste the Spike integration URL in the input field and save.

![Paste the Integration URL](/files/-MAa7rna_ojA024p46db)

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Rollbar

Integrate Spike with Rollbar to receive real-time alerts via Phone calls, SMS, Slack, MS Teams, and more for application errors

<figure><img src="/files/2XXWXKbSS0SjeBtdYIpu" alt=""><figcaption></figcaption></figure>

## Overview

[Rollbar](https://spike.sh) is a real-time error tracking and monitoring tool for web and mobile applications. It helps development teams identify, prioritize, and resolve errors faster by providing detailed insights into application issues. Rollbar integrates seamlessly with various programming languages and frameworks, allowing teams to maintain high application quality and stability.

## Incident alerts from Rollbar

By integrating Rollbar with Spike, you can receive real-time alerts for various application errors and issues, including:

* Error Occurrences: Alerts when new errors occur or when the frequency of known errors increases, helping you quickly address critical issues.
* Critical and High-Severity Errors: Notifications for errors categorized as critical or high severity, ensuring immediate attention to the most impactful problems.
* Deploy-Related Errors: Alerts for errors that occur after deployments, allowing you to identify and resolve issues introduced by new code changes.

This integration ensures that you stay informed about application issues as they happen, enabling fast response and minimizing the impact on users.

{% hint style="info" %}
Spike will automatically group repeated incidents and also suppress alerts while incident is open. You can set up [alert rules](https://docs.spike.sh/alerts/alert-rules) to determine incident severity and take actions accordingly. Auto-resolution is not supported.
{% endhint %}

## Set up instructions

**Step 1:** Create a Rollbar integration on [Spike dashboard](https://app.spike.sh/integrations) and copy the webhook

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

**Step 2:**

{% tabs %}
{% tab title="Setup on Rollbar" %}

* **Navigate to Notifications**:
  * visit Settings > Notifications and select **Webhook**
  * Paste the webhook from Spike. You can reuse the same webhook or add more for various rules on Rollbar.
    {% endtab %}
    {% endtabs %}


# Integrate Spike with Travis CI

Integrate Spike with Travis CI to receive real-time alerts via Phone calls, SMS, Slack, MS Teams, and more for build statuses and pipeline results, ensuring continuous integration monitoring.

<figure><img src="/files/QLJBqpjyUW6oTHTUUJWv" alt=""><figcaption></figcaption></figure>

## Overview

[Travis CI](https://www.travis-ci.com) is a continuous integration service used to build and test software projects hosted on GitHub and Bitbucket. Travis CI automates the process of building, testing, and deploying code, making it easier for teams to deliver high-quality software quickly. With Travis CI, you can ensure that your codebase remains stable and that issues are caught early in the development cycle.

## Incident Alerts from Travis CI

By integrating Travis CI with Spike, you can receive real-time alerts for various pipeline and build-related events, including:

* Build Failures: Alerts when a build fails, allowing you to quickly address issues in your CI/CD process.
* Build Successes: Notifications when builds succeed, giving you confidence that your changes are stable and ready for deployment.
* Build Start and End Events: Alerts when a build starts or ends, keeping you informed of the CI/CD process status.

This integration helps you stay on top of your builds and ensures that you are notified of important events as they happen.

{% hint style="info" %}
Spike will automatically group repeated incidents and also suppress alerts while incident is open. You can set up [alert rules](https://docs.spike.sh/alerts/alert-rules) to determine incident severity and take actions accordingly. Auto-resolution is not supported.
{% endhint %}

## Set up instructions

**Step 1:** Make sure to add the Travis CI integration and copying the webhook.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

**Step 2:**

Setting up [Webhooks with Travis CI](https://docs.travis-ci.com/user/notifications/#configuring-webhook-notifications) is super easy.

{% tabs %}
{% tab title="Configure YAML" %}

* Configure the `.travis.yml`

Add the following configuration to `.travis.yml` file

```
notifications:
  webhooks:
    urls:
      - http://hooks.spike.sh/******/push-events
      - http://hooks.spike.sh/******/push-events
    on_success: change # default: always
    on_failure: always # default: always
    on_start:   change # default: never
    on_cancel:  always # default: always
    on_error:   always # default: always
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Don't forget to change the `urls` to the webhook URL provided by Spike.
{% endhint %}


# Integrate Spike with Heroku

### Service and integration

Make sure to add the Heroku integration and copying the webhook.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

## Using the webhook with Heroku

Go to the Dashboard page for your app and to to the dropdown menu below “More”.

You will see an option to “View Webhooks” that will take you to the webhooks creation and management interface.

### Step 1

From the **More** dropdown, select View **Webhook**.

![Go to More at the Dashboard](/files/-MB4WwWxVstdsE9jop_r)

### Step 2

Click **Create Webhook**

![Click to Create a Webhook](/files/-MB4X7nPgqWr_uxH8Sol)

Step 3

Paste the Spike hook URL in the **Payload-URL** field and fill other necessary details.\
Finally, click on **Add Workbook**

![Paste the Wbhook URL](/files/-MB4XEXNAZBEBpFPOt92)

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Datadog

Integrate Spike with Datadog to receive real-time alerts via Phone calls, SMS, Slack, MS Teams, and more when your monitored systems or devices encounter issues.

<figure><img src="/files/NUVF7ZjNXbqtYsOLiImh" alt="Datadog integration with Spike"><figcaption></figcaption></figure>

## Service and Integration Setup

Before proceeding, ensure you have:

1. Added the **Datadog integration** in Spike.
2. Copied the **Spike webhook URL** from the dashboard.

For details, see:

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

***

## Configure the Webhook in Datadog

### Step 1: Open Integrations

From the **sidebar**, select **Integrations**.

![Select Integration](/files/-MB4IvbX7XRDKVUH5a37)

***

### Step 2: Choose Webhooks

Search for **Webhooks** in the integrations list and select it.

![Select Webhook](/files/S78XcvnSf7miu1WKXOWX)

***

### Step 3: Create a Webhook

Fill in the details and paste your **Spike webhook URL** into the **URL field**.

![Datadog Webhook](/files/2s4Y5OJKB5fWKIV1RJjD)

***

### Step 4: Add the Payload

Copy the following payload and paste it into Datadog. You can also customize it with any of Datadog’s template variables.

{% hint style="warning" %}
To ensure proper incident management:

1. Include **`$AGGREG_KEY`** – enables automatic resolution.
2. Include **`$ALERT_TRANSITION`** – indicates if the event is triggering or resolving.
   {% endhint %}

```json
{ 
  "body": "$EVENT_MSG",
  "last_updated": "$LAST_UPDATED",
  "event_type": "$EVENT_TYPE",
  "title": "$EVENT_TITLE",
  "date": "$DATE",
  "alert_transition": "$ALERT_TRANSITION",
  "aggreg_key": "$AGGREG_KEY", 
  "org": {
    "id": "$ORG_ID",
    "name": "$ORG_NAME"
  },
  "id": "$ID" 
}
```

***

## Set Up Automatic Notifications

1. Go to **Incident Settings** in Datadog.
2. Click **Notification Rules** → **New Rule**.
3. Select condition:
   * `Declared or Incident attributes are updated`.
4. Configure the conditions as required.
5. In the **Notify** field, select the **webhook you created**.
6. For auto-resolution, enable **Renotify on: Status Update**.

![Datadog Notification Rules](/files/wLmxM8dYmS1MwBH2Oojp)

***

At Spike, we’re committed to integrating with the tools your team already uses. Our mission is to help you detect incidents, crashes, and spikes before your customers do.

If you’d like us to build a new integration, contact us at [**support@spike.sh**](mailto:support@spike.sh).


# Integrate Spike with Axiom

Integrate Spike with Axiom to receive real-time alerts via Phone calls, SMS, Slack, MS Teams, and more for anomalies found in your logs

<figure><img src="/files/FRVtOyUqM7y2JWF8AMe0" alt=""><figcaption></figcaption></figure>

## Overview

[Axiom](https://axiom.co) is a platform that provides powerful data management and observability solutions, allowing teams to ingest, store, and query large volumes of data effortlessly. It offers seamless integration with various data sources and helps you monitor, analyze, and act on your data in real-time. Axiom’s platform is designed to scale with your needs, making it a versatile tool for organizations handling extensive data pipelines and logs.

With Spike’s integration, you can receive real-time alerts for various data-driven incidents detected by Axiom, including:

* **Data Ingestion Failures**: Alerts when data ingestion from sources fails, ensuring you can address potential data loss immediately.
* **Query Performance Issues**: Notifications when queries take longer than expected or fail, helping you maintain the performance and reliability of your data operations.
* **Anomaly Detection**: Alerts when unusual patterns or anomalies are detected in your data, enabling proactive measures to prevent potential issues.

{% hint style="success" %}
Auto-resolution is supported for this integration. Spike will also automatically group repeated incidents and suppress alerts while incident is open.
{% endhint %}

## Set up instructions

**Step 1:** Make sure to add the Axiom integration and copy the webhook.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

**Step 2:**

{% tabs %}
{% tab title="Setup on Axiom" %}

* **1. Creating a New Monitor**:
  * Navigate to the 'Monitors' section in your dashboard.
  * Click on 'New monitor' to begin setting up your monitor.
  * Fill in the 'Name' field with a unique identifier for your monitor.
  * In the 'Description' field, provide a brief description of what the monitor aims to check.
  * Specify the query conditions and set the frequency of checks.
* **2. Adding a Notifier**:
  * In the 'Notification Options' section, click on 'Manage notifiers'.
  * Enter a recognizable 'Name' for your notifier.
  * Select the 'Webhook' integration.
  * Paste your 'Axiom Webhook'.
  * Save your notifier.
* **3. Linking Notifier to the Monitor**:
  * Return to your monitor's configuration page.
  * Locate the 'Notification Options' section.
  * Select the newly created notifier.
  * Save your monitor settings to finalize the setup.
* **Configure the Webhook**:
  * Enter the details for your notification, and paste the Spike.sh webhook URL
  * If you see an option for setting headers, set the `ContentType` to `"application/json"`
    {% endtab %}
    {% endtabs %}


# Integrate Spike with Needle.sh

### Service and integration

Make sure to add the Needle integration and copy the webhook.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

### Using the webhook with Needle.sh

Go to **Security** section from the side navigation and chose **Alert Settings** option.

![Choose Alert Settings](/files/-MB-NvgItcBnzmkFJO2U)

Chose to **Add Webhook** option from the settings and paste the spike hooks URL.

![Choose Webhook](/files/-MB-O_fqBzUWLk4o0cSv)

## FAQ

1. **How many services and integrations can I create on Spike?**
   * Unlimited
2. **How many escalation policies can I have on Spike?**
   * Unlimited

At Spike, we are working hard to integrate with all the tools your business uses. We are on a mission to help **you** identify incidents/crashes/spikes before your customers do.

If you have any integration in mind and would like us to build it for you then contact us at [support@spike.sh.](mailto:support@spike.sh)


# Integrate Spike with Cronitor

Integrate Spike with Cronitor.io to receive real-time alerts via Phone calls, SMS, Slack, MS Teams, and more for uptime monitoring, cron job monitoring, and heartbeat checks.

<figure><img src="/files/kgDENnMYLwVA6biJHmBz" alt=""><figcaption></figcaption></figure>

## Overview

[Cronitor.io](https://cronitor.io) is a monitoring tool designed to track the health and performance of your scheduled jobs, uptime, and heartbeat signals. Set up this integration to get instantly phone call and other alerts when things go wrong.

### Incident Alerts from Cronitor.io

With Spike’s integration, you can receive real-time alerts for various incidents monitored by Cronitor.io, including:

* **Uptime Monitoring**: Alerts when your websites or services go down, ensuring prompt response to minimize downtime.
* **Cron Job Monitoring**: Notifications when scheduled jobs fail to run, take too long, or run at unexpected times.
* **Heartbeat Monitoring**: Alerts when expected heartbeat signals from your services or applications are missed, indicating potential failures or issues.

This integration allows you to stay on top of any disruptions in your scheduled jobs, uptime, and heartbeat signals, ensuring quick action and resolution.

{% hint style="success" %}
Auto-resolution is supported for this integration. Spike will also automatically group repeated incidents and suppress alerts while incident is open.
{% endhint %}

## Set up instructions

**Step 1**: To start, add a Cronitor integration in Spike and copy the webhook URL.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

{% tabs %}
{% tab title="Setup on Cronitor" %}

* **Select a Monitor:**
  * From the Cronitor dashboard, choose the monitor you want to configure.
* **Configure the Monitor:**
  * Adjust the monitor settings according to your requirements
* **Set Up the Webhook:**
  * In the Alert Recipients panel, select the **Webhook option**.
  * Paste the Spike.sh webhook URL into the provided field.
  * If available, set the `Content-Type` header to `application/json` for proper data formatting.
    {% endtab %}
    {% endtabs %}


# Integrate Spike with Cronicle

Integrate Spike with Cronicle to receive real-time alerts via Phone calls, SMS, Slack, MS Teams, and more when scheduled jobs complete with failures.

<figure><img src="/files/hnS8rZ5w23mSNF1xiUIc" alt=""><figcaption></figcaption></figure>

## Overview

[Cronicle](https://cronicle.net) is an open-source task scheduler for running cron-style jobs across one or more servers. It helps teams schedule, run, and monitor recurring tasks from a central web interface.

With Spike’s Cronicle integration, incidents are triggered only when a job run is completed and failed. This helps reduce noise from in-progress events and keeps alerts focused on actionable failures.

## How it works

Spike evaluates Cronicle webhook payloads using the event action and completion result:

* Spike only creates incidents for `action: job_complete` events where `complete: 1` and `code` is non-zero.
* `job_start` events are ignored by default and do not trigger incidents.
* Spike auto-resolves an existing Cronicle incident when a later `job_complete` event for the same job id has `complete: 1` and `code: 0`.
* Cronicle’s exit code is read from the `code` field in the webhook payload (`0` = success, non-zero = failure).

{% hint style="success" %}
Auto-resolution is supported for this integration. Spike will also automatically group repeated incidents and suppress alerts while incident is open.
{% endhint %}

## Set up instructions

**Step 1:** Create a Cronicle integration in the Spike dashboard and copy the webhook URL.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

**Step 2:** Configure the webhook in Cronicle.

{% tabs %}
{% tab title="Setup on Cronicle" %}

1. Log in to the Cronicle web UI and open the **Schedule** tab.
2. Find the job/event, click **Edit** (or open the event to edit it).
3. In the **Edit Event** form, scroll to **Event Notification → Event Web Hook**.
4. Paste the Spike webhook URL into the **Web Hook URL** field, then save the event.

Cronicle posts webhook events on job start and job complete. Spike acts only on `job_complete` by default.
{% endtab %}
{% endtabs %}

## Test the integration

1. Trigger a Cronicle job run that fails (for example, force a non-zero process exit code).
2. Confirm Cronicle sends the webhook and verify a new incident is created in Spike.
3. Run the same job again and ensure it completes successfully (`complete: 1`, `code: 0`).
4. Confirm Spike auto-resolves the previously open incident for that job.


# Integrate Spike with CloudAMQP

Integrate Spike with CloudAMQP to receive real-time alerts via Phone calls, SMS, Slack, MS Teams, and more for queue and broker incidents.

<figure><img src="/files/bOsj7C2unBXIZT9wpLL9" alt=""><figcaption></figcaption></figure>

[CloudAMQP](https://www.cloudamqp.com) is a managed RabbitMQ platform that helps teams run, monitor, and scale message brokers without managing infrastructure directly.

Teams commonly use CloudAMQP alerts for queue depth spikes, node health issues, connection surges, and broker-related availability problems.

## Prerequisites

* A CloudAMQP account with access to alert/notification configuration
* A CloudAMQP integration webhook URL from Spike
* JSON webhook payloads with a `message` field

## Step 1 — Create the integration in Spike

In Spike → Integrations → Add Integration → CloudAMQP

Copy the webhook URL for your CloudAMQP integration.

{% content-ref url="/pages/-Ln3rb4wLUFeI-OAPcmq" %}
[Create integration and service on our dashboard](/integrations-guideline/create-integration-and-service-on-dashboard)
{% endcontent-ref %}

## Step 2 — Configure Webhook in CloudAMQP

In CloudAMQP, open your instance notification/alerting settings and add a webhook destination.

Use the following settings:

* URL: Paste the Spike webhook URL copied in Step 1
* Method: POST
* Content-Type: `application/json`

Save the webhook and attach it to the alert conditions you want to send to Spike.

## What happens in Spike?

Spike processes CloudAMQP events using the integration finder and resolver logic:

* Deduplication: incidents are grouped by the `message` field.
* Incident creation rules: if `metadata.resolved === true`, Spike does not create a new incident.
* Incident creation rules: when `metadata.resolved` is not `true`, Spike creates a new incident or groups into an existing open one with the same `message`.
* Auto-resolve: if the event contains top-level `resolved: true`, Spike resolves the matching open incident.

## Test it

1. Trigger a CloudAMQP test alert (for example, a queue depth threshold alert).
2. Confirm a new incident appears in Spike with the expected `message`.
3. Send a resolved payload for the same `message` with `resolved: true`.
4. Confirm the existing incident is auto-resolved and no extra incident is created when `metadata.resolved === true`.

## Troubleshooting

* Wrong webhook URL: verify the full Spike webhook URL was copied correctly.
* Invalid JSON: make sure the payload is valid JSON and sent as `application/json`.
* Missing `message` field: dedup/grouping depends on `message`, so include it in all events.
* `resolved` set incorrectly: auto-resolution requires top-level `resolved: true`.
* `metadata.resolved` set incorrectly: if `metadata.resolved === true`, Spike will not create a new incident.
* Outbound network blocked: confirm CloudAMQP can reach `hooks.spike.sh` from your network.
* Alert/resolution timing mismatch: ensure the resolved payload is sent for the same `message` and after the alert event.




---

[Next Page](/llms-full.txt/1)

