Configure webhooks
Connect Kera with external services using webhooks. Send events out when tickets change, and receive events from GitHub, GitLab, and other tools.
Outbound webhooks
Kera sends HTTP POST requests to external services when workflow transitions fire.
-
1 Register the webhook
Create an outbound webhook with a name and a target URL, in workspace settings or with the
create_outbound_webhookMCP tool. Kera shows the signing secret once, so store it where your receiver can read it. -
2 Add a webhook action to a transition
In your workflow YAML, add a
send_webhookaction that names the webhook. Kera sends a POST every time the transition fires.eventis optional and defaults toticket.transitioned.transitions: - from: in_progress to: review actions: - type: send_webhook webhook: ci event: ticket.ready_for_review -
3 Understand the payload
Each request is a JSON POST with the ticket, the state change, and who made it.
// Outbound webhook payload { "event": "ticket.ready_for_review", "delivery_id": "…", "ticket": { "id": "5f1c2a9e-…", "key": "KERA-42", "title": "Fix login timeout", "reporter": "alex@example.com", "assignee": "max@example.com", "state": "review", "prev_state": "in_progress" }, "workspace_id": "…", "project_slug": "kera", "actor": "max@example.com", "occurred_at": "2026-04-24T10:30:00Z" } -
4 Verify the signature
Every request carries
X-Kera-Signature: sha256=<hex>, an HMAC-SHA256 of the raw body keyed with your signing secret. Compute it on your side and reject requests that don't match. Kera also sendsX-Kera-Event,X-Kera-Webhook-Id,X-Kera-Delivery-Id, andX-Kera-Delivery-Attempt, plus any custom headers you configured. -
5 Common use cases
Trigger CI/CD pipelines when tickets move to review, notify a Slack channel when tickets are done, or sync state with an external tracker.
Inbound webhooks
External services send events to Kera to auto-link PRs, update ticket status, and sync pipeline results.
-
1 Set up an integration
Go to your workspace settings and add an integration for GitHub or GitLab. Each integration creates a unique webhook URL.
-
2 Copy the webhook URL
Each integration gets a unique endpoint:
https://your-workspace.getkera.eu/webhooks/inbound/{slug}/{token} -
3 Configure your source
In GitHub or GitLab, add the webhook URL to your repository settings. Select the events you want to send (push, pull request, pipeline, etc.).
-
4 Automatic linking
Once configured, Kera automatically links PRs to tickets by matching branch names and commit messages. It updates ticket status on merge and syncs pipeline results.
Tips
- Inbound webhooks are verified via signature (GitHub) or token (GitLab) — unverified requests are rejected.
- Outbound deliveries are retried with increasing delays after a network error or a 5xx response, up to the webhook's retry limit (5 by default). A 4xx response is not retried. The final outcome of each delivery appears in the audit trail.
- The same delivery can arrive more than once, after a retry or a resend. Your receiver must dedupe on
X-Kera-Delivery-Id(also in the signed body asdelivery_id): it stays the same across every retry and resend of one delivery, and differs between two deliveries of the same event.X-Kera-Delivery-Attemptchanges on each retry, so don't dedupe on it. - The older inline form,
url:instead ofwebhook:, sends a single unsigned request with no retries. Prefer a registered webhook. - You can add multiple
send_webhookactions to a single transition to notify several services at once.
Next steps
- Set up workflows — define the transitions that trigger outbound webhooks
- Set up a project — create the project your integrations connect to
- Build your dashboard — visualize the data flowing through your webhooks