Webhooks
There's no programmatic webhook subscription endpoint in v1. Webhooks are configured through Automation rules, which gives you fine-grained trigger filtering and the same audit trail as the rest of your automations.
How to set one up
- In the Konduit UI, create an Automation rule
- Pick a trigger — see the list below
- Add a Webhook action with your destination URL
- Save — the webhook fires on every matching event
That's it. No subscription, no key management, no separate dashboard.
Available triggers
| Trigger | Scope | Fires when |
|---|---|---|
task_created |
List | New task created (any source — UI, API, form) |
task_field_changed |
List | A task field changed — status, priority, assignee, or a custom field (payload carries changed_field, old_value, new_value) |
task_deleted |
List | Task soft-deleted (payload includes pre-delete snapshot) |
time_logged |
List | Manual time entry created or running timer stopped |
date_trigger |
List | A task date field arrives (configurable lead time) |
recurring |
List | Fires on a recurring schedule |
row_inserted |
DataTable | New datatable row |
row_updated |
DataTable | Datatable row changed |
row_deleted |
DataTable | Datatable row deleted |
form_submitted |
Form | Form submission received |
date_trigger and recurring are time-based (scheduled) triggers. Automations — and therefore webhooks — require a Pro or Business plan.
Each trigger supports filters — e.g., "only when severity = high" or "only on the Bugs list". Filters are configured in the same UI as the trigger.
Payload format
Webhook payloads are JSON. Shape varies by trigger; the common envelope:
{
"rule_id": "...",
"workspace_id": "...",
"trigger_type": "task_created",
"scope_type": "list",
"scope_id": "...",
"fired_at": "2026-01-01T00:00:00.000Z",
"data": {
"task": { "id": "...", "title": "..." }
}
}
fired_at is an ISO 8601 timestamp string. scope_type is list, datatable, or form, and scope_id is the corresponding list / table / form ID.
For task_field_changed, the payload names the changed field and carries its old and new values alongside the full task:
{
"trigger_type": "task_field_changed",
"data": {
"task": { "id": "...", "status_id": "in_progress" },
"changed_field": "status_id",
"old_value": "open",
"new_value": "in_progress"
}
}
Signing
Webhook payloads are signed with an HMAC header so you can verify the request came from Konduit. The shared secret is shown when you create the Webhook action.
X-Konduit-Signature: sha256=<hex>
Compute HMAC-SHA256(secret, raw_body) on your side and constant-time-compare against the header. Reject mismatches.
Discord webhooks
Discord webhook URLs (https://discord.com/api/webhooks/...) are auto-detected and the payload is reformatted as a Discord embed. Useful for piping task activity into a Discord channel without a separate bot.
Programmatic subscription (planned)
A programmatic webhook subscription API is planned for v1.1. If you need this before then for a specific integration, reach out at team@konduit.work.
Next
- Versioning → — what's NOT in v1
- Forms → — polling alternative for form submissions