Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
efaefa9
docs(rum): bump Flutter SDK snippets to flashcat_flutter_plugin 0.2.0
Fiona2016 Sep 28, 2026
2d3df69
Merge pull request #506 from flashcatcloud/docs/flutter-sdk-0.2.0
Fiona2016 Sep 28, 2026
d4616a9
docs(rum): document remote configuration for Flutter
Fiona2016 Sep 28, 2026
b3a9098
docs: doc-review 2026-09-28 (diff) — CLI incident projection fields a…
Sep 28, 2026
b86c63d
Merge pull request #508 from flashcatcloud/doc-review/2026-09-28-080453
ysyneu Sep 28, 2026
a80d5f3
docs(change-integration): add GitHub change integration page
ysyneu Sep 28, 2026
c76e84b
docs(change): document the Failed change status
ysyneu Sep 28, 2026
abc7da8
Merge pull request #530 from flashcatcloud/feat/change-failed-status
ysyneu Sep 28, 2026
778f449
Merge pull request #524 from flashcatcloud/feat/github-change
ysyneu Sep 28, 2026
616caeb
docs(change): add GitLab change integration page
ysyneu Sep 28, 2026
5395913
docs(change): add LaunchDarkly change integration page
ysyneu Sep 28, 2026
ae669f5
docs(change): add Netlify change integration page
ysyneu Sep 28, 2026
659aa41
docs: add HCP Terraform change integration page
ysyneu Sep 28, 2026
152762a
Merge pull request #532 from flashcatcloud/feat/hcp-terraform-change
ysyneu Sep 28, 2026
a5dda62
docs(change): add Argo CD change integration
ysyneu Sep 28, 2026
c1bae38
docs(change): note the Netlify link fallback
ysyneu Sep 28, 2026
1e5cb36
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
0040079
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
597c4c7
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
2078314
Merge pull request #533 from flashcatcloud/feat/argocd-change
ysyneu Sep 28, 2026
f5968bb
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
ac52592
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
67ce615
docs: add JFrog Artifactory change integration page
ysyneu Sep 28, 2026
bfa3fea
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
7878363
Merge pull request #535 from flashcatcloud/feat/netlify-change
ysyneu Sep 28, 2026
9ba4e03
Merge pull request #534 from flashcatcloud/feat/gitlab-change
ysyneu Sep 28, 2026
90f632a
docs(change): add Vercel change integration page
ysyneu Sep 28, 2026
5815246
docs(change): note deleted scheduled changes are ignored
ysyneu Sep 28, 2026
05c1b59
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
12ac6ce
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
cf3a128
Merge pull request #536 from flashcatcloud/feat/vercel-change
ysyneu Sep 28, 2026
bd95e26
docs(change): add Jenkins change integration page
ysyneu Sep 28, 2026
b1567f1
docs(change): add Buildkite change integration page
ysyneu Sep 28, 2026
a0b43db
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
f7bc96c
Merge pull request #537 from flashcatcloud/feat/jfrog-artifactory-change
ysyneu Sep 28, 2026
0ea0678
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
c37d13b
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
88f089e
Merge pull request #539 from flashcatcloud/feat/buildkite-change
ysyneu Sep 28, 2026
7cfa0df
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
f1d4e64
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
c006113
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
5b88be5
Merge pull request #538 from flashcatcloud/feat/launchdarkly-change
ysyneu Sep 28, 2026
9c5154a
Merge remote-tracking branch 'origin/feat/change-integrations' into f…
ysyneu Sep 28, 2026
a8acc5d
Merge pull request #540 from flashcatcloud/feat/jenkins-change
ysyneu Sep 28, 2026
0c2653c
docs(change): list every Jenkins rejection reason
ysyneu Sep 28, 2026
cbe7f58
Merge pull request #541 from flashcatcloud/feat/jenkins-change-faq
ysyneu Sep 28, 2026
b881693
docs(rum): document on-error capture for Web SDK 0.3.0
Fiona2016 Sep 29, 2026
a483391
docs(stripe): match the current Workbench labels and cover every test…
ysyneu Sep 29, 2026
18e7e61
Merge pull request #556 from flashcatcloud/fix/stripe-integration-e2e
ysyneu Sep 29, 2026
4fae5e8
docs(argocd): describe the output of template notify
ysyneu Sep 29, 2026
ad7ead7
docs(argocd): describe the output of template notify
ysyneu Sep 29, 2026
51005fa
Merge pull request #571 from flashcatcloud/fix/argocd-integration-e2e
ysyneu Sep 29, 2026
9f6c7f1
Merge pull request #572 from flashcatcloud/fix/argocd-change-e2e
ysyneu Sep 29, 2026
dc74c1d
docs(jenkins-change): JUnit dependency, Credentials Store, QUEUED and…
ysyneu Sep 29, 2026
164b1c2
Merge pull request #573 from flashcatcloud/fix/jenkins-change-e2e
ysyneu Sep 29, 2026
4c1b9ff
docs(change): GitHub Actions deployments canceled on the run page sho…
ysyneu Sep 29, 2026
dc8854c
Merge pull request #574 from flashcatcloud/fix/github-change-e2e
ysyneu Sep 29, 2026
4687fd5
docs(netlify change): restore time, canceled builds, current event list
ysyneu Sep 29, 2026
b1518a5
Merge pull request #507 from flashcatcloud/docs/rum-flutter-remote-co…
Fiona2016 Sep 29, 2026
d19c91b
Merge pull request #578 from flashcatcloud/fix/netlify-change-e2e
ysyneu Sep 29, 2026
d124b17
docs(kentik): match the channel form, per-agent Synthetics alerts, te…
ysyneu Sep 29, 2026
5a0dfd3
Merge pull request #579 from flashcatcloud/fix/kentik-integration-e2e
ysyneu Sep 29, 2026
f905b78
docs(change): correct LaunchDarkly and HCP Terraform setup steps
ysyneu Sep 29, 2026
a237c84
Merge remote-tracking branch 'origin/main' into docs/web-on-error-cap…
Fiona2016 Sep 29, 2026
38cf5fc
Merge pull request #580 from flashcatcloud/fix/change-e2e-ld-hcp
ysyneu Sep 29, 2026
0dcc0b8
Merge pull request #554 from flashcatcloud/docs/web-on-error-capture
Fiona2016 Sep 29, 2026
a18a261
Merge pull request #589 from flashcatcloud/feat/alert-integrations
ysyneu Sep 29, 2026
4fd6087
Merge pull request #610 from flashcatcloud/feat/alert-batch5
ysyneu Sep 29, 2026
dae3577
Merge pull request #608 from flashcatcloud/feat/change-integrations
ysyneu Sep 29, 2026
4b9015a
api: document detail_url on AlertInfo and AlertItem
ysyneu Sep 29, 2026
0f8c119
Merge pull request #621 from flashcatcloud/docs/openapi-alert-detail-url
ysyneu Sep 29, 2026
a6d8206
Merge origin/main into feat/alert-batch7
ysyneu Sep 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions api-reference/on-call.openapi.en.json
Original file line number Diff line number Diff line change
Expand Up @@ -30374,13 +30374,14 @@
},
"change_status": {
"type": "string",
"description": "Lifecycle status of the change event, reported by the change source as execution progresses.\n| Value | Meaning |\n|---|---|\n| `Planned` | Planned, not started. |\n| `Ready` | Ready for execution. |\n| `Processing` | Being executed. |\n| `Canceled` | Canceled. |\n| `Done` | Completed. |",
"description": "Lifecycle status of the change event, reported by the change source as execution progresses.\n| Value | Meaning |\n|---|---|\n| `Planned` | Planned, not started. |\n| `Ready` | Ready for execution. |\n| `Processing` | Being executed. |\n| `Canceled` | Canceled. |\n| `Done` | Completed. |\n| `Failed` | Failed. |",
"enum": [
"Planned",
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
]
},
"link": {
Expand Down Expand Up @@ -30468,13 +30469,14 @@
},
"change_status": {
"type": "string",
"description": "Current lifecycle status of the change.\n| Value | Meaning |\n|---|---|\n| `Planned` | Planned, not started. |\n| `Ready` | Ready for execution. |\n| `Processing` | Being executed. |\n| `Canceled` | Canceled. |\n| `Done` | Completed. |",
"description": "Current lifecycle status of the change.\n| Value | Meaning |\n|---|---|\n| `Planned` | Planned, not started. |\n| `Ready` | Ready for execution. |\n| `Processing` | Being executed. |\n| `Canceled` | Canceled. |\n| `Done` | Completed. |\n| `Failed` | Failed. |",
"enum": [
"Planned",
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
]
},
"start_time": {
Expand Down
10 changes: 6 additions & 4 deletions api-reference/on-call.openapi.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -30374,13 +30374,14 @@
},
"change_status": {
"type": "string",
"description": "变更事件的生命周期状态。由变更事件源按执行进度上报。\n| 值 | 含义 |\n|---|---|\n| `Planned` | 已计划,尚未开始。 |\n| `Ready` | 已就绪,待执行。 |\n| `Processing` | 正在执行。 |\n| `Canceled` | 已取消。 |\n| `Done` | 已完成。 |",
"description": "变更事件的生命周期状态。由变更事件源按执行进度上报。\n| 值 | 含义 |\n|---|---|\n| `Planned` | 已计划,尚未开始。 |\n| `Ready` | 已就绪,待执行。 |\n| `Processing` | 正在执行。 |\n| `Canceled` | 已取消。 |\n| `Done` | 已完成。 |\n| `Failed` | 失败。 |",
"enum": [
"Planned",
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
]
},
"link": {
Expand Down Expand Up @@ -30468,13 +30469,14 @@
},
"change_status": {
"type": "string",
"description": "变更的当前生命周期状态。\n| 取值 | 含义 |\n|---|---|\n| `Planned` | 已计划,未开始。 |\n| `Ready` | 就绪,待执行。 |\n| `Processing` | 执行中。 |\n| `Canceled` | 已取消。 |\n| `Done` | 已完成。 |",
"description": "变更的当前生命周期状态。\n| 取值 | 含义 |\n|---|---|\n| `Planned` | 已计划,未开始。 |\n| `Ready` | 就绪,待执行。 |\n| `Processing` | 执行中。 |\n| `Canceled` | 已取消。 |\n| `Done` | 已完成。 |\n| `Failed` | 失败。 |",
"enum": [
"Planned",
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
]
},
"start_time": {
Expand Down
18 changes: 14 additions & 4 deletions api-reference/openapi.en.json
Original file line number Diff line number Diff line change
Expand Up @@ -1320,6 +1320,10 @@
"description": "Alert description.",
"type": "string"
},
"detail_url": {
"description": "Console URL of this alert (`{console}/alert/detail/{alert_id}`). Empty when the deployment has no console base configured.",
"type": "string"
},
"end_time": {
"description": "Unix timestamp (seconds) when the alert recovered. 0 if still active.",
"format": "int64",
Expand Down Expand Up @@ -1541,6 +1545,10 @@
"description": "Alert description.",
"type": "string"
},
"detail_url": {
"description": "Console URL of this alert (`{console}/alert/detail/{alert_id}`). Empty when the deployment has no console base configured.",
"type": "string"
},
"end_time": {
"description": "Resolution time, Unix epoch seconds. 0 if still active.",
"format": "int64",
Expand Down Expand Up @@ -4494,13 +4502,14 @@
"type": "string"
},
"change_status": {
"description": "Lifecycle status of the change event, reported by the change source as execution progresses.\n| Value | Meaning |\n|---|---|\n| `Planned` | Planned, not started. |\n| `Ready` | Ready for execution. |\n| `Processing` | Being executed. |\n| `Canceled` | Canceled. |\n| `Done` | Completed. |",
"description": "Lifecycle status of the change event, reported by the change source as execution progresses.\n| Value | Meaning |\n|---|---|\n| `Planned` | Planned, not started. |\n| `Ready` | Ready for execution. |\n| `Processing` | Being executed. |\n| `Canceled` | Canceled. |\n| `Done` | Completed. |\n| `Failed` | Failed. |",
"enum": [
"Planned",
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
],
"type": "string"
},
Expand Down Expand Up @@ -4576,13 +4585,14 @@
"type": "string"
},
"change_status": {
"description": "Current lifecycle status of the change.\n| Value | Meaning |\n|---|---|\n| `Planned` | Planned, not started. |\n| `Ready` | Ready for execution. |\n| `Processing` | Being executed. |\n| `Canceled` | Canceled. |\n| `Done` | Completed. |",
"description": "Current lifecycle status of the change.\n| Value | Meaning |\n|---|---|\n| `Planned` | Planned, not started. |\n| `Ready` | Ready for execution. |\n| `Processing` | Being executed. |\n| `Canceled` | Canceled. |\n| `Done` | Completed. |\n| `Failed` | Failed. |",
"enum": [
"Planned",
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
],
"type": "string"
},
Expand Down
6 changes: 4 additions & 2 deletions api-reference/openapi.legacy.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -28938,7 +28938,8 @@
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
]
},
"start_time": {
Expand Down Expand Up @@ -29007,7 +29008,8 @@
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
],
"description": "变更状态"
},
Expand Down
18 changes: 14 additions & 4 deletions api-reference/openapi.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -1320,6 +1320,10 @@
"description": "告警描述。",
"type": "string"
},
"detail_url": {
"description": "这条告警的控制台页面(`{控制台}/alert/detail/{alert_id}`)。部署没有配置控制台地址时为空。",
"type": "string"
},
"end_time": {
"description": "告警恢复的 Unix 时间戳(秒),仍活跃时为 0。",
"format": "int64",
Expand Down Expand Up @@ -1541,6 +1545,10 @@
"description": "告警描述。",
"type": "string"
},
"detail_url": {
"description": "这条告警的控制台页面(`{控制台}/alert/detail/{alert_id}`)。部署没有配置控制台地址时为空。",
"type": "string"
},
"end_time": {
"description": "恢复时间,Unix 时间戳(秒)。活跃时为 0。",
"format": "int64",
Expand Down Expand Up @@ -4494,13 +4502,14 @@
"type": "string"
},
"change_status": {
"description": "变更事件的生命周期状态。由变更事件源按执行进度上报。\n| 值 | 含义 |\n|---|---|\n| `Planned` | 已计划,尚未开始。 |\n| `Ready` | 已就绪,待执行。 |\n| `Processing` | 正在执行。 |\n| `Canceled` | 已取消。 |\n| `Done` | 已完成。 |",
"description": "变更事件的生命周期状态。由变更事件源按执行进度上报。\n| 值 | 含义 |\n|---|---|\n| `Planned` | 已计划,尚未开始。 |\n| `Ready` | 已就绪,待执行。 |\n| `Processing` | 正在执行。 |\n| `Canceled` | 已取消。 |\n| `Done` | 已完成。 |\n| `Failed` | 失败。 |",
"enum": [
"Planned",
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
],
"type": "string"
},
Expand Down Expand Up @@ -4576,13 +4585,14 @@
"type": "string"
},
"change_status": {
"description": "变更的当前生命周期状态。\n| 取值 | 含义 |\n|---|---|\n| `Planned` | 已计划,未开始。 |\n| `Ready` | 就绪,待执行。 |\n| `Processing` | 执行中。 |\n| `Canceled` | 已取消。 |\n| `Done` | 已完成。 |",
"description": "变更的当前生命周期状态。\n| 取值 | 含义 |\n|---|---|\n| `Planned` | 已计划,未开始。 |\n| `Ready` | 就绪,待执行。 |\n| `Processing` | 执行中。 |\n| `Canceled` | 已取消。 |\n| `Done` | 已完成。 |\n| `Failed` | 失败。 |",
"enum": [
"Planned",
"Ready",
"Processing",
"Canceled",
"Done"
"Done",
"Failed"
],
"type": "string"
},
Expand Down
24 changes: 22 additions & 2 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1814,7 +1814,17 @@
{
"group": "变更集成",
"pages": [
"zh/on-call/integration/change-integration/custom-event"
"zh/on-call/integration/change-integration/custom-event",
"zh/on-call/integration/change-integration/github",
"zh/on-call/integration/change-integration/gitlab",
"zh/on-call/integration/change-integration/hcp-terraform",
"zh/on-call/integration/change-integration/argocd",
"zh/on-call/integration/change-integration/netlify",
"zh/on-call/integration/change-integration/vercel",
"zh/on-call/integration/change-integration/jfrog-artifactory",
"zh/on-call/integration/change-integration/buildkite",
"zh/on-call/integration/change-integration/launchdarkly",
"zh/on-call/integration/change-integration/jenkins"
]
},
{
Expand Down Expand Up @@ -3252,7 +3262,17 @@
{
"group": "Change Integration",
"pages": [
"en/on-call/integration/change-integration/custom-event"
"en/on-call/integration/change-integration/custom-event",
"en/on-call/integration/change-integration/github",
"en/on-call/integration/change-integration/gitlab",
"en/on-call/integration/change-integration/hcp-terraform",
"en/on-call/integration/change-integration/argocd",
"en/on-call/integration/change-integration/netlify",
"en/on-call/integration/change-integration/vercel",
"en/on-call/integration/change-integration/jfrog-artifactory",
"en/on-call/integration/change-integration/buildkite",
"en/on-call/integration/change-integration/launchdarkly",
"en/on-call/integration/change-integration/jenkins"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions en/developer/cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -842,8 +842,8 @@ The following commands support `--fields` with `json` or `toon` output. Supply c

| Command | Structured output when `--fields` is omitted | Limit |
| --- | --- | --- |
| `flashduty incident list` | `incident_id`, `title`, `incident_severity`, `progress`, `start_time`, `channel_id` | 16 KiB |
| `flashduty incident similar <id>` | `incident_id`, `title`, `incident_severity`, `progress`, `start_time`, `close_time`, `ack_time`, `alert_cnt`, `root_cause`, `score` | 16 KiB |
| `flashduty incident list` | `incident_id`, `num`, `title`, `incident_severity`, `progress`, `start_time`, `channel_id`, `detail_url` | 16 KiB |
| `flashduty incident similar <id>` | `incident_id`, `num`, `title`, `incident_severity`, `progress`, `start_time`, `close_time`, `ack_time`, `alert_cnt`, `root_cause`, `score`, `detail_url` | 16 KiB |
| `flashduty incident detail <id>` | Returns full detail when `--fields` is omitted; otherwise returns only the selected fields | 8 KiB for projections only |
| `flashduty alert-event list` | `event_id`, `alert_id`, `event_severity`, `event_status`, `event_time`, `title` | 16 KiB |
| `flashduty channel escalate-rule-list <channel-id>` | `rule_id`, `rule_name`, `status`, `priority`, `filters` | 16 KiB |
Expand Down
2 changes: 1 addition & 1 deletion en/on-call/incident/search-view-incident.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ The change event list displays the following information:

| Column | Description |
| :--- | :--- |
| **Status** | Current status of the change event, including Planned, Ready, Processing, Canceled, Done |
| **Status** | Current status of the change event, including Planned, Ready, Processing, Canceled, Done, Failed |
| **Change Key** | Unique identifier of the change event |
| **Title** | Brief description of the change event |
| **Description** | Detailed information about the change event |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ kubectl exec -n argocd deploy/argocd-notifications-controller -- \
/usr/local/bin/argocd admin notifications template notify flashduty-health <app-name> --recipient flashduty
```

No error output means Flashduty accepted the request. When the application is `Healthy`, this is a recovery message and creates no alert; in an intermediate state such as `Progressing`, Flashduty ignores it.
The command prints debug logs of the request and response, including the full push URL with its `integration_key`, so do not paste the output anywhere public. A `200 OK` status on the `Received response:` line means Flashduty accepted the request. When the application is `Healthy`, this is a recovery message and creates no alert; in an intermediate state such as `Progressing`, Flashduty ignores it.

</Step>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ Creating a notification channel requires the Administrator role in Kentik; Membe
<Steps>
<Step title="Create a Custom Webhook notification channel">

1. Log in to the Kentik Portal and go to **Settings** → **Notifications**
2. Click **Add Notification Channel** and set **Type** to **Custom Webhook**. Do not choose the **JSON** type: Flashduty parses the output of the template below
1. Log in to the Kentik Portal and go to **Settings** → **Notification Channels**
2. Click **Add Notification Channel** and set **Type** to **Webhook** (listed as Custom Webhook). Do not choose the **JSON** type: Flashduty parses the output of the template below
3. Fill in the fields as follows:

| Field | Value |
Expand All @@ -47,7 +47,7 @@ Creating a notification channel requires the Administrator role in Kentik; Membe
| **Status** | On |
| **URL** | The full Flashduty integration push URL, including `integration_key` |
| **Custom Headers** | Leave empty |
| **Custom Template** | Paste the template below without renaming any field |
| **Custom Template** | Click **Go to Notification Template Setup** and paste the template below into **TEMPLATE** on the **Template & Preview** tab, without renaming any field |
| **Uglify JSON** | Keep the default |

```go-template
Expand Down Expand Up @@ -75,7 +75,7 @@ Creating a notification channel requires the Administrator role in Kentik; Membe
}
```

4. Click **Add Notification Channel** to save
4. Click **Save**

</Step>

Expand All @@ -102,6 +102,7 @@ Do not use this channel for mitigation methods or Insights notifications: these
Flashduty uses the Kentik alert ID (`AlarmID`, shown as **Alert ID** in Kentik) as the Alert Key. Every state-change notification of one Kentik alert, from Active to Cleared, carries the same alert ID, so they merge into one alert, and the clear notification closes it.

- **Alerts per key**: an alert policy raises a separate alert for each key (one set of values of the policy dimensions) that matches the conditions. Each alert has its own ID, so each is a separate Flashduty alert that recovers on its own
- **Synthetics alerts per agent**: a Synthetics test raises a separate alert, with its own ID, for each test agent. A new failure after an alert clears gets a new alert ID and becomes a new Flashduty alert
- Changes to the description, severity, metric values, or times do not change the Alert Key. Events without `AlarmID` are rejected
- When one notification carries several events, each event maps to its own alert. A notification with no events is accepted but creates no alert

Expand Down Expand Up @@ -150,6 +151,6 @@ The alert title is the Kentik event description (`Description`), such as `Alarm
- **`AlarmID is required`**: the channel is used for mitigation or Insights notifications, or the template was changed. Use the channel only for alert policies and Synthetics tests
- **The alert does not recover**: confirm that the alert is Cleared in Kentik. For policies with **Acknowledgement Required** on, the alert must be acknowledged in Kentik before it can clear (see [Kentik threshold policy settings](https://kb.kentik.com/v1/docs/threshold-policy-settings))
- **One policy creates several alerts**: the policy alerts on each set of dimension values separately; this is expected
- **Test notifications**: the content of the Kentik **Test** / **Test Notification Channels** buttons is defined by Kentik. If it carries an alert ID, Flashduty handles it as a regular alert; close that alert manually in Flashduty
- **Test notifications**: **Send Test Notification** on the **Template & Preview** tab sends mock data whose event description starts with `[TEST]`; Flashduty accepts it and creates no alert. If you first load a real alert with **Enter Alert ID**, the test carries that alert's real state, and Flashduty handles it as a real notification

For field details, see [Kentik notification channels](https://kb.kentik.com/docs/notification-channel) and the [Kentik Custom Webhook templating reference](https://github.com/kentik/custom-notification-templates/blob/main/docs/TEMPLATING_REFERENCE.md).
Loading
Loading