- Change events go to your
webhookUrlwhen a prompt’s answers change: your brand appears or disappears, a competitor pulls ahead, or a site is cited for the first time. - Alerts email your account’s admins when the brand’s mention rate over the last seven days falls
below
alertBelowPct.
Change events
SetwebhookUrl when you create or update a monitor:
400 VALIDATION_ERROR. webhookUrl: null
turns events off and discards the monitor’s event state; turning them on again starts from its history.
Event types
Brand events follow each prompt separately on each engine and, on a grid monitor, at each point. The state
is read from the last five answers, so
samples: 5 gives a full state in one run.
- An event is sent once, when the state changes. A brand that stays out of the answers sends one
monitor.mention.stoppedand nothing more until it returns. - A prompt has a state once it has five answers. That first state is the baseline and sends nothing.
- A category monitor has no brand of its own and sends only
monitor.source.first_cited.
- Turning on
webhookUrlfor a monitor that already has answers: each prompt’s state is rebuilt from its last five answers of the past 30 days, and every domain already cited counts as known. Events start with the next answer. - Creating a monitor with
webhookUrl, or turning it on before any answers exist: the first run sets the known domains, andmonitor.source.first_citedcounts answers from tasks created after that run is fully submitted. Brand events start once a prompt has five answers.
Payload
Each event is aPOST with a JSON body. For example:
Signature and retries
Events are signed and retried like task webhooks: the same threequerying-webhook-* headers, the same
HMAC-SHA256 scheme and the same retry schedule. Verify them with the code in
Webhooks. Two things differ:
querying-webhook-idis the eventid. Deduplicate on it.- The HMAC key is the SHA-256 digest of the API key that set
webhookUrl, not of a task’s key.
webhookUrl again with the new key, and events are signed with it. If
the key that set webhookUrl is revoked or expires, events stop: each one is marked failed with the
reason in delivery.lastError, and nothing is sent unsigned.
List and redeliver events
GET /v1/monitors/{id}/events (reference) lists events newest first.
The response has
webhookUrl, nextCursor (null on the last page) and events. Each event has id,
type, createdAt, data (as in the payload) and delivery:
POST /v1/monitors/{id}/events/{eventId}/redeliver
(reference) sends one event again now to the current
webhookUrl, with a fresh set of retries, and returns the event with its updated delivery. Delivered
events can be sent again too. It returns 409 WEBHOOK_NOT_SET when the monitor has no webhookUrl and
404 NOT_FOUND for an unknown event.
Events are kept for 30 days. An event still being retried is kept until its retries end.
Alerts
SetalertBelowPct on a brand monitor, a whole percentage from 1 to 100, to get an email when the
brand’s mention rate falls below it:
- Window: the scored answers of the last 7 days, across all of the monitor’s prompts and engines. The report defaults to 30 days, which moves too slowly to warn anyone.
- When: each time a scheduled run starts. The check reads the answers already scored, so it reflects the previous runs.
- Minimum sample: fewer than 5 scored answers in the window never fires. A new monitor, or one whose engines are failing, stays quiet.
- Crossing, not state: the alert fires when the rate is below the threshold and the alert is armed,
then disarms. It re-arms once the rate is back at or above the threshold, so a monitor that stays low
emails once, not every run. Changing
alertBelowPctre-arms it.
alertBelowPct with 400 VALIDATION_ERROR.
alertBelowPct: null turns the alert off.
Alert history
GET /v1/monitors/{id}/alerts (reference) returns
alertBelowPct, armed and deliveries: the 20 most recent alert emails for the monitor, tests
included. Each delivery has id, status (pending, sent or failed), attempts, createdAt,
sentAt, lastError and payload (monitorId, name, ratePct, threshold, windowDays, runs).
Delivery records are kept for 90 days.
Send a test alert
POST /v1/monitors/{id}/alerts/test (reference) queues a test email
through the same delivery path as a real alert, with “(test)” after the monitor name, and returns
data.queued: true. Check the result in the alert history. You can send three test emails per monitor
every five minutes; more returns 429 RATE_LIMITED. A category monitor returns 400 VALIDATION_ERROR.
Next steps
Webhooks
Signing, retries and safe handlers for every webhook.
Sources and answers
Open the answer behind an event.