Skip to main content
Configure incident Webhook. When specific operations occur on incidents (such as trigger or close), the system makes an HTTP callback to your configured address. The callback content includes the incident’s latest key information, allowing integration with your custom tools.

1. Event Types

The following event types are currently supported; more may be added in the future.
Event TypeDescription
i_newCreate incident (auto or manual)
i_assignAssign incident (auto or manual)
i_a_rspdAdd responders
i_snoozeManually snooze incident
i_wakeCancel snooze
i_ackManually acknowledge incident
i_unackCancel acknowledgment
i_stormTrigger storm warning
i_customTrigger custom action
i_rslvClose incident (auto or manual)
i_reopenReopen incident
i_mergeManually merge incident
i_commAdd comment
i_r_titleUpdate incident title
i_r_descUpdate incident description
i_r_impactUpdate incident impact
i_r_rcUpdate incident root cause
i_r_rsltnUpdate incident resolution
i_r_severityUpdate incident severity
i_r_fieldUpdate incident custom field

2. Push Description

Request Method

POST, Content-Type:“application/json”

Request Payload:

FieldTypeRequiredDescription
event_timeint64YesEvent timestamp in milliseconds
event_typestringYesEvent type, enum values see Event Types
event_idstringYesEvent ID, the same event may retry multiple times due to timeout, receiver needs to deduplicate
personPersonNoOperator, only exists for human actions
incidentIncidentYesIncident details
Person:
FieldTypeRequiredDescription
person_idint64YesPerson ID
person_namestringYesPerson name
emailstringYesEmail address
Responder:
FieldTypeRequiredDescription
person_idint64YesPerson ID
person_namestringYesPerson name
emailstringYesEmail address
assigned_atint64NoAssignment time
acknowledged_atint64NoAcknowledgment time
Incident:
FieldTypeRequiredDescription
incident_idstringYesIncident ID
titlestringYesIncident title
descriptionstringNoIncident description
impactstringNoIncident impact
root_causestringNoIncident root cause
resolutionstringNoIncident resolution
incident_severitystringYesSeverity, enum: Critical, Warning, Info
incident_statusstringYesIncident status, enum: Critical, Warning, Info, Ok
progressstringYesProgress, enum: Triggered, Processing, Closed
created_atint64YesCreated time
updated_atint64YesUpdated time
start_timeint64YesTrigger time, Unix seconds timestamp
last_timeint64NoLatest event time, latest event push time in associated alerts, Unix seconds timestamp, default 0
end_timeint64NoRecovery time, incident auto-recovers when all associated alerts recover, Unix seconds timestamp, default 0
ack_timeint64NoFirst acknowledgment time, incident can be acknowledged by multiple people, this is the earliest acknowledgment time. Unix seconds timestamp, default 0
close_timeint64NoClose time, end_time represents incident recovery time, close_time represents progress close time, incident closes when recovered, closing doesn’t affect recovery. Unix seconds timestamp, default 0
snoozed_beforeint64NoSnooze deadline
labelsmap[string]stringNoLabel KV, both Key and Value are strings. Not present for manual creation, for auto creation it’s the labels of the first grouped alert
fieldsmap[string]interfaceNoCustom field KV, Key is string, Value can be any type depending on field type
creatorPersonNoCreator info, only exists for manually created incidents
closerPersonNoCloser info, only exists for manually closed incidents
responders[]ResponderNoResponders list, only exists after incident is assigned. May be empty for i_new event
alert_cntint64NoAssociated alert count
channel_idint64NoChannel ID, 0 means not belonging to any channel
channel_namestringNoChannel name
detail_urlstringYesDetail URL
group_methodstringNoGrouping method, enum: n: no grouping, p: rule-based grouping, i: intelligent grouping

Request Response

HTTP status code 200 indicates successful push.

Request Example

curl -X POST 'https://example.com/incident/webhook?a=a' \
-H 'Content-Type: application/json' \
-H 'X-Customize-Header-A: a' \
-d '{
    "event_id":"fac0599a2a25529ba2362c0c184b6cfb",
    "event_time":1689335086948,
    "event_type":"i_new",
    "incident":{
        "account_id":74058170041504,
        "account_name":"TouTie Tech",
        "ack_time":0,
        "alert_cnt":0,
        "assigned_to":{
            "assigned_at":1689335086,
            "escalate_rule_id":"64abb8a687e7984845822139",
            "escalate_rule_name":"Default Escalation",
            "id":"NBRbNwDSTSMijKXdLtBU3T",
            "layer_idx":0,
            "type":"assign"
        },
        "channel_id":1840312623504,
        "channel_name":"Reduce Noise",
        "close_time":0,
        "created_at":1689335086,
        "creator":{
            "email":"toutie@flashcat.cloud",
            "person_id":1552048792504,
            "person_name":"TouTie"
        },
        "creator_id":1552048792504,
        "data_source_id":0,
        "dedup_key":"",
        "description":"",
        "detail_url":"http://10.206.0.17:8567/incident/detail/64b1352e376e32c85c56e25b",
        "end_time":0,
        "equals_md5":"",
        "group_method":"n",
        "impact":"",
        "incident_id":"64b1352e376e32c85c56e25b",
        "incident_severity":"Critical",
        "incident_status":"Critical",
        "labels":{
            "check": "cpu idle low"
        },
        "last_time":1689335086,
        "num":"56E25B",
        "progress":"Triggered",
        "resolution":"",
        "responder_ids":[
            1552048792504
        ],
        "responders":[
            {
                "acknowledged_at":0,
                "assigned_at":1689335086,
                "email":"toutie@flashcat.cloud",
                "person_id":1552048792504,
                "person_name":"TouTie"
            }
        ],
        "root_cause":"",
        "snoozed_before":0,
        "start_time":1689335086,
        "title":"ysy028",
        "updated_at":1689335086
    },
    "person":{
        "email":"toutie@flashcat.cloud",
        "person_id":1552048792504,
        "person_name":"TouTie"
    }
}' -v

3. Configuration Guide

Go to Integration CenterWebhook → Add or edit an Incident Webhook integration.

Basic Settings

Enter the integration name and description for easy management.

Webhook Settings

Config ItemDescription
EndpointHTTP/HTTPS address to receive callbacks, must start with http:// or https://
TLS VerificationEnabled by default. When disabled, TLS certificate verification of the target server is skipped; suitable for test environments or self-signed certificates
HeadersCustom request headers in Key-Value format; multiple headers supported
ChannelsSelect All Channels or Specific Channels. When specific channels are selected, only incident events in those channels trigger callbacks
Event TypesCheck the event types to subscribe to (see Event Types); select all is supported. Only checked event types trigger callbacks
Disabling TLS certificate verification may expose you to man-in-the-middle attacks. Only disable it in test environments or when using self-signed certificates.

Custom request body

By default, the system pushes the complete JSON data following the Payload structure described above. If your receiver requires a specific data format, you can use a custom request body to reorganize the push content. Use {{field.path}} syntax to reference any field from the default Payload. The system replaces variables with actual values at push time. Variable syntax:
  • Use . to separate path levels, e.g. {{incident.title}} references the incident title
  • Array index access is supported, e.g. {{incident.responders.0.email}} references the first responder’s email
  • When the entire value is a single variable (e.g. "{{incident.labels}}"), the original data type is preserved (object, array, number, etc.)
  • When a variable is mixed with other text (e.g. "Incident: {{incident.title}}"), the variable is converted to a string for concatenation
Example: Transform the default Payload into a custom format for an internal system:
{
  "msg_type": "incident",
  "event": "{{event_type}}",
  "content": {
    "id": "{{incident.incident_id}}",
    "name": "{{incident.title}}",
    "severity": "{{incident.incident_severity}}",
    "status": "{{incident.progress}}",
    "channel": "{{incident.channel_name}}",
    "url": "{{incident.detail_url}}",
    "labels": "{{incident.labels}}",
    "responders": "{{incident.responders}}"
  }
}
If a variable path does not exist in the default Payload, the system keeps the original {{...}} text without replacement. It is recommended to first check the actual default Payload via invocation history to confirm available field paths.

4. Invocation History

Incident Webhook provides a complete invocation history, helping you troubleshoot push delivery and debug callback interfaces.

View Invocation History

Go to the Incident Webhook integration detail page and switch to the Invocation History tab.
FilterDescription
Time RangeSelect from last 1 hour, 6 hours, 1 day, 7 days, or custom range (up to 7 days of data)
Incident IDEnter an incident ID for exact search
Event TypeFilter records by event type
Request StatusFilter by success or failure

History Record Fields

FieldDescription
Trigger TimeTime when the event was triggered
Event TypeThe triggered event type (e.g., i_new, i_ack, etc.)
Incident IDAssociated incident ID; click to jump to incident details
Event IDUnique identifier for this callback; used for deduplication
Request StatusSuccess or failure, with HTTP status code
DurationRound-trip request time
Attempt CountIncludes initial request and retries

View Invocation Details

Click View Details on a record to see the complete request and response information:
  • Request: Includes Endpoint, Request Headers, and Request Payload
  • Response: On success, shows Response Headers and Response Body; on failure, shows Error Message

5. FAQ

  1. Is there a response timeout?
    • Service needs to return response within 2 seconds; exceeding 2 seconds is considered a failure
  2. Will pushes continue after failure?
Retries for specific network errors, max 1 retries:
  • context deadline exceeded (excluding awaiting headers)
  • i/o timeout
  • eof
  1. How to ensure push order?
    • Theoretically, events for the same incident are pushed in chronological order, but retries may cause out-of-order delivery
    • Services can filter based on event_time; if a later event has been received, earlier events can be filtered out. Each push carries the latest complete information, so occasional event loss is tolerable
  2. Trusted IP whitelist for push source?
    • May be updated in the future, please check regularly