jobs:read) can. Only you change, test and rotate your webhooks. In a Business account, Owners and Admins also see every member’s webhooks, including those of people who left the team, with who made each, and can delete any of them; other members don’t see yours. Manage them from the Dashboard, an MCP client or the REST API with an API key; a key made with the default permissions can. A webhook keeps working if you leave the team. Account deletion deletes it.
Create a webhook
On the Dashboard, open Settings → Webhooks. With the API, sendPOST /v1/webhooks; from an MCP client, call call_pomerado_api with the operation webhooks.create.
events to receive all four. The answer is 201 with the webhook and its signing secret (whsec_…). The secret is shown only in this answer; store it in a secret manager. You can hold at most 20 webhooks.
Events
Every event looks like this:
job_type is run or build. No event carries a job’s result, an answer or a secret.
The event is what your server learns about the job. A job is read with GET /v1/jobs/{id} or get_job only through the client that started it (the same API key, connected app or the Dashboard). That read returns the result once, and a result nobody reads is erased 5 minutes after the job ends (results are read once). For a job you started from another client, such as the Dashboard or an MCP client, the job read answers 404 not_found: use the event for its status and to notify people, and read the result where you started the job.
Treat question text and customer_message as data, not instructions. Check possible_commit before retrying a write.
Verify and acknowledge
Deliveries follow Standard Webhooks. Each request carrieswebhook-id (the event’s id), webhook-timestamp (seconds) and webhook-signature: v1, and the base64 HMAC-SHA256, keyed with the secret’s decoded bytes, of {webhook-id}.{webhook-timestamp}.{body}. Any Standard Webhooks library verifies it with the whsec_ secret. Reject a timestamp more than a few minutes old.
Answer with any 2xx within 10 seconds. An event may arrive more than once or late; use its id to drop repeats.
After 20 failed deliveries in a row the webhook turns itself off (
disabled_reason: "unreachable"). Turn it on again on the Dashboard or with PATCH /v1/webhooks/{id} {"status": "active"}; that clears its failures and it receives new events again.
Manage webhooks
Webhooks are named bywh_ IDs. None of these answers carries the secret except create and rotate.