> ## Documentation Index
> Fetch the complete documentation index at: https://www.checklyhq.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# IncidentioAlertChannel Construct

> Learn how to configure Incident.io alert channels with the Checkly CLI.

> [!TIP]
>
> For general information about alerting, see our docs on [the Incident.io integration](https://www.checklyhq.com/docs/integrations/incident-management/incidentio.md) and [alerting with Checkly](https://www.checklyhq.com/docs/communicate/alerts/overview.md).

Triggers and resolves alerts in Incident.io.

```ts Basic Example theme={null}
import { IncidentioAlertChannel } from 'checkly/constructs'

const incidentioChannel = new IncidentioAlertChannel('incidentio-channel-1', {
  name: 'ACME alerts',
  url: 'https://api.incident.io/v2/alert_events/checkly/xxxxx',
  apiKey: 'xxxxx45afe73'
})
```

```ts Advanced Example theme={null}
import { IncidentioAlertChannel } from 'checkly/constructs'

const incidentioChannel = new IncidentioAlertChannel('incidentio-channel-1', {
  name: 'ACME alerts',
  url: 'https://api.incident.io/v2/alert_events/checkly/xxxxx',
  apiKey: 'xxxxx45afe73',
  sendRecovery: true,
  sendFailure: true,
  sendDegraded: true,
  sslExpiry: true,
  sslExpiryThreshold: 30,
})
```

> [!NOTE]
>
> If you need to reference existing alert channels that were created outside of your CLI project, use [`fromId()`](https://www.checklyhq.com/docs/constructs/alert-channel#using-fromid-to-reference-an-existing-channel).

## Configuration

### Incident.io Alert Channel Options

**name** `string` *required*

Friendly name to recognise the integration.

**url** `string` *required*

The target URL created by installing the Checkly integration in Incident.io.

**apiKey** `string` *required*

The API key created by installing the Checkly integration in Incident.io.

**payload** `string`

The payload sent to the target URL when an alert is triggered. If this is not specified, we'll send a default payload with a basic title, description, etc.

We have [handlebar helpers and variables](https://www.checklyhq.com/docs/integrations/alerts/webhooks.md#using-variables) available for building custom payloads.

Here's an example payload, using the default one that we provide:

```ts highlight={5-26} theme={null}
new IncidentioAlertChannel('incidentio-channel-1', {
  name: 'ACME alerts',
  url: 'https://api.incident.io/v2/alert_events/checkly/xxxxx',
  apiKey: 'xxxxx45afe73',
  payload: `
    {
      "title": "{{ALERT_TITLE}}",
      "description": "{{ALERT_TITLE}} at {{STARTED_AT}} in {{RUN_LOCATION}} {{RESPONSE_TIME}}ms\\n\\n{{#if AI_ANALYSIS_CLASSIFICATION}}# AI Analysis\\n\\n{{AI_ANALYSIS_CLASSIFICATION}}\\n\\n{{{AI_ANALYSIS_ROOT_CAUSE}}}\\nRead full analysis: {{AI_ANALYSIS_LINK}}{{/if}}",
      "deduplication_key": "{{CHECK_ID}}",
      "metadata": {
        {{#if AI_ANALYSIS_CLASSIFICATION}}
        "ai_analysis_classification": "{{AI_ANALYSIS_CLASSIFICATION}}",
        "ai_analysis_root_cause": "{{{AI_ANALYSIS_ROOT_CAUSE}}}",
        "ai_analysis_link": "{{AI_ANALYSIS_LINK}}",
        {{/if}}
        "alertType": "{{ALERT_TYPE}}",
        "check_result_id": "{{CHECK_RESULT_ID}}",
        "resultLink": "{{RESULT_LINK}}"
      },
      {{#contains ALERT_TYPE "RECOVERY"}}
      "status": "resolved"
      {{else}}
      "status": "firing"
      {{/contains}}
    }
    `
})
```

### General Alert Channel Options

These options are valid for all alert channels types.

**sendRecovery** `boolean`

Whether to send notifications when checks recover from a [failed or degraded state](https://www.checklyhq.com/docs/communicate/alerts/overview.md#alert-channels). Default value is `true`.

**sendFailure** `boolean`

Whether to send notifications when checks [fail](https://www.checklyhq.com/docs/communicate/alerts/overview.md#alert-channels). Default value is `true`.

**sendDegraded** `boolean`

Whether to send notifications when checks [become degraded](https://www.checklyhq.com/docs/communicate/alerts/overview.md#alert-channels). Default value is `false`.

**sslExpiry** `boolean`

Whether to send notifications when a SSL/TLS certificate is about to expire. Default value is `false`.

```ts highlight={3} theme={null}
new EmailAlertChannel("email-channel-1", {
  address: "alerts@acme.com",
  sslExpiry: true,
  sslExpiryThreshold: 30, // Alert 30 days before expiry
})
```

[Learn more about SSL alerts.](https://www.checklyhq.com/docs/communicate/alerts/ssl-expiration.md)

**sslExpiryThreshold** `number`

Number of days before the SSL/TLS certificate expiry date to send notifications. Only relevant when `sslExpiry` is enabled. Default value is `30`.

```ts highlight={4} theme={null}
new EmailAlertChannel("email-channel-1", {
  address: "alerts@acme.com",
  sslExpiry: true,
  sslExpiryThreshold: 30, // Alert 30 days before expiry
})
```

[Learn more about SSL alerts.](https://www.checklyhq.com/docs/communicate/alerts/ssl-expiration.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.