Skip to content

An agent's health changed

POST

Sent when an agent’s status changes and watch or at_risk is the old or new status. Becoming measured as healthy, or going quiet, sends nothing.

Midwater-Signature
required
string

Example

t=1791493920,v1=5f1410b3599929147ad7559ca8423d05b723079614d80aa9763d17b440a899e3

t=<unix seconds>,v1=<hex>: HMAC-SHA256 of <t>.<raw body> keyed with the environment’s signing secret (whsec_…). Verify with a 5-minute tolerance and a constant-time compare, and accept the delivery if any v1= value matches.

Midwater-Event
required
string

The event type, the same as the body’s type.

Midwater-Delivery
required
string

The delivery ID; the same on every retry of one delivery. Deduplicate on it.

Media typeapplication/json
object
id
required

Event ID, evt_….

string
type
required
string
environment
required

Webhooks fire for live conversations, and for test ones only when the destination or route opts in.

string
Allowed values: test live
created_at
required
string format: date-time
data
required
object
type
required
Allowed value: agent.health_changed
data
required
object
agent
required
object
id
required
string
name
required
string
health_status
required

not_enough_calls: fewer than 5 calls with an outcome in the last 7 days, so nothing is measured yet, unless a high-severity compliance failure puts the agent in watch (1) or at_risk (2 or more).

string
Allowed values: healthy watch at_risk not_enough_calls
group
object
id
required
string
name
required
string
from
required

not_enough_calls: fewer than 5 calls with an outcome in the last 7 days, so nothing is measured yet, unless a high-severity compliance failure puts the agent in watch (1) or at_risk (2 or more).

string
Allowed values: healthy watch at_risk not_enough_calls
to
required

not_enough_calls: fewer than 5 calls with an outcome in the last 7 days, so nothing is measured yet, unless a high-severity compliance failure puts the agent in watch (1) or at_risk (2 or more).

string
Allowed values: healthy watch at_risk not_enough_calls
last_7_days
required
object
conversations
required

Conversations received in the window.

integer
with_outcome
required

Conversations with an outcome (customer calls that were scored).

integer
resolution_rate
required

Share of conversations with an outcome that were resolved.

number | null
handed_to_person_rate
required

Share handed to a person (a transfer, or a person requested and provided).

number | null
requests_for_person_not_honored
required

Conversations where the caller asked for a person and didn’t get one.

integer
avg_frustration
required

Average caller frustration, 0 (calm) to 1 (very frustrated).

number | null
compliance_failures
required

Compliance checks that failed in the window.

integer
last_30_days
required
object
conversations
required

Conversations received in the window.

integer
with_outcome
required

Conversations with an outcome (customer calls that were scored).

integer
resolution_rate
required

Share of conversations with an outcome that were resolved.

number | null
handed_to_person_rate
required

Share handed to a person (a transfer, or a person requested and provided).

number | null
requests_for_person_not_honored
required

Conversations where the caller asked for a person and didn’t get one.

integer
avg_frustration
required

Average caller frustration, 0 (calm) to 1 (very frustrated).

number | null
compliance_failures
required

Compliance checks that failed in the window.

integer
url
required
string format: uri

Any 2xx within 5 seconds marks the delivery as delivered. Anything else, or no answer in time, is retried: today 3 retries about 2, 8 and 30 seconds apart; planned: 8 attempts over about 24 hours.