---
title: "Outbound webhooks"
---

> Documentation Index
> Fetch the complete documentation index at: https://kmworks.date/llms.txt
> Use this file to discover all available pages before exploring further.

# Outbound webhooks

Every library event (`BookAdded`, `SeriesAdded`, `BookImported`, `ReadProgressChanged`, …) can be POSTed as `{event, timestamp, data}` JSON to configured URLs (`[webhooks]` in `config.toml`, env `KOMGA_WEBHOOKS_URLS` / `KOMGA_WEBHOOKS_EVENTS` / `KOMGA_WEBHOOKS_TIMEOUT` / `KOMGA_WEBHOOKS_SECRET`).

Event names and `data` shapes match the SSE stream, plus full `series`/`book` DTOs mirroring the REST API on upsert events (`series` on SeriesAdded/SeriesUpdated, `book` on BookAdded/BookUpdated, null when the row is gone; everything else stays id-only), and carried-over `libraryName`/`readListName`/`collectionName`/`userEmail` on Library/ReadList/Collection/User events.

Delivery is fire-and-forget through a bounded in-memory queue: 429/5xx and transport errors are retried up to 3 times with 1s/2s/4s backoff honoring `Retry-After`, other 4xx are dropped, and nothing is persisted.

Every request carries `X-Kmrs-Event`; with `secret` set it is HMAC-SHA256 signed via `X-Kmrs-Signature: t=<timestamp>,v1=<hex>` over `<timestamp>.<body>`.

The Java version has no webhook support at all.

Source: https://kmworks.date/server/enhancements/webhooks/index.mdx
