# Pingdom

EvoHub receives Pingdom alerts through a **Webhook** integration assigned to your checks. A check going down opens an EvoHub alert, and the check recovering resolves it. Uptime checks and transaction checks both work.

## Set it up

:::steps
### Create the integration
In EvoHub, go to **On-Call → Integrations → + Add Integration**, choose **Pingdom**, pick an **Escalation Policy** and click **Create Integration**. Copy the **Webhook URL**.
### Add a webhook integration
In My Pingdom, go to **Integrations → Add integration**, choose **Webhook** and set **URL** to your webhook URL.

```text
https://evohub.io/ingest/pingdom?key=YOUR_INTEGRATION_KEY
```
### Connect it to each check
Edit each check that should page, open **Connect integrations** and enable the webhook.
:::

> [!WARNING]
> The webhook sends nothing until it is connected to a check. Connect it to every check you want EvoHub to page for.

## Turn on auto-resolve

Nothing extra is needed. When a check recovers, Pingdom sends the webhook with `current_state` **UP** (or **SUCCESS** for a transaction check), and EvoHub resolves the matching alert.

## What EvoHub reads

| EvoHub alert | Taken from |
| --- | --- |
| Title | "`check_name` is `current_state`", for example "Checkout is DOWN" (or "Pingdom Alert"). |
| Description | `description`. |
| Labels | `check_type`. |
| Fingerprint | `check_id`. |

### Severity

| Pingdom importance level | EvoHub severity |
| --- | --- |
| HIGH | critical |
| LOW, or missing | medium |

## Resolve and deduplication

- `current_state` **DOWN** (uptime checks) or **FAILING** (transaction checks) opens an alert. **UP** or **SUCCESS** resolves the open alert for that check. Other states change nothing.
- Another down notification for a check whose alert is open is recorded as **Retriggered**.

## Test notifications

Pingdom's test webhook opens a real alert, titled "Pingdom test message received" (with the check name when Pingdom sends one), under the integration's escalation policy, so the test exercises the whole path, paging included. The test alert is keyed to the check like a real one: if that check already has an open alert, the test is recorded on it as **Retriggered**, and the check's next recovery resolves it. Otherwise resolve it in EvoHub afterwards.

## Troubleshooting

- **`401 INVALID_KEY`**: the URL's key is wrong or the integration is disabled. Copy the **Webhook URL** again from the integration.
- **Nothing arrives**: the webhook is not connected to the check. Edit the check and enable it under **Connect integrations**.
- **Everything is medium**: only checks whose importance level is **HIGH** open **critical** alerts. Set it on the checks that should wake someone up.

## Related

- [Integrations overview](https://docs.evohub.io/integrations-overview.md)
- [UptimeRobot](https://docs.evohub.io/uptimerobot.md)
- [Escalation policies](https://docs.evohub.io/escalation-policies.md)
