Webhooks
Goal updated
Sent when a Goal's intrinsic properties change (title, description, dates, progress, confidence, draft). Relation-only changes — owner reassignment, label/alignment edits — do not fire a webhook. A Key Result status update fires it only if the Goal's progress or confidence actually changes. Verify the signature and respond 2xx.
postWebhookgoal.updated
Headers
X-Workpath-Eventstring required
Example:goal.created
The event key (matches event in the body).
X-Workpath-Signaturestring required
Base64-encoded raw Ed25519 signature of the exact request body.
X-Workpath-Key-IDstring required
Example:production
Identifies which published public key signed this delivery.
Payload
Example payload
{
"schema_version": 1,
"account_subdomain": "acme",
"event": "goal.created",
"event_id": 9,
"created_at": "2026-04-30T09:17:32Z",
"data": {
"id": 42,
"title": "Increase EU revenue by 15%",
"description": "Drive growth across DACH and Nordics with focused account expansion.",
"progress": 0.45,
"confidence_level": 8,
"start_date": "2026-01-01",
"target_date": "2026-06-30",
"created_at": "2026-01-08T14:22:00Z",
"updated_at": "2026-04-30T09:17:30Z"
}
}Response
Any 2xx acknowledges receipt. A non-2xx response or timeout is retried.
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.