Complete reference for Lattica webhook events. For setup and signature verification, see Zapier and webhooks.
Common payload structure
Every webhook delivery has the same envelope:
{
"event": "task.created",
"delivered_at": "2026-04-12T10:14:22Z",
"workspace_id": "ws_8FjK4q",
"actor": {
"type": "user",
"id": "usr_a91kp2",
"name": "Priya Shah"
},
"data": { ... event-specific payload ... }
}
Headers
| Header | Description |
|---|---|
X-Lattica-Event |
Event name, e.g. task.created |
X-Lattica-Signature |
HMAC-SHA256 of body, prefixed sha256= |
X-Lattica-Delivery-Id |
Unique ID per delivery — log it, dedupe with it |
X-Lattica-Workspace |
Workspace ID |
X-Lattica-Webhook-Id |
The configured webhook endpoint’s ID |
Task events
task.created— new tasktask.updated— any field changed; payload includeschangesobjecttask.deleted— soft-deleted (still recoverable for 30 days)task.completed— moved into a status configured as terminaltask.reopened— moved back out of a terminal statustask.assigned— assignee set or changedtask.unassigned— assignee clearedtask.due_soon— fires 24h before due datetask.overdue— fires once when due date passes
Project events
project.createdproject.updatedproject.archivedproject.member_addedproject.member_removed
Comment events
comment.createdcomment.updatedcomment.deleted
Workspace events
member.invitedmember.joinedmember.removedmember.role_changedbilling.plan_changedbilling.payment_failed
Sample: task.updated
{
"event": "task.updated",
"delivered_at": "2026-04-12T10:14:22Z",
"workspace_id": "ws_8FjK4q",
"actor": { "type": "user", "id": "usr_a91kp2", "name": "Priya Shah" },
"data": {
"task": {
"id": "task_d3Bk2e",
"title": "Customer onboarding call — Acme",
"status": "in_progress",
"assignee_id": "usr_a91kp2",
"due_date": "2026-04-15"
},
"changes": {
"status": { "from": "todo", "to": "in_progress" }
}
}
}
Idempotency
Webhook deliveries are at-least-once. Use X-Lattica-Delivery-Id to dedupe on your side — store the ID after successful processing and reject duplicates.