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

# Changelog

> Release history for the ChurnKit SDK.

## v1.3.1

* **Fix**: `verifyWebhookSignature` now exported as a standalone named function (no `ChurnKit` instance required)
* **Fix**: Normalizers now return empty `signals: []` and `recommendation: ''` instead of `undefined` for users with no scoring history
* **Fix**: `batcher.push()` throws `ChurnKitError(VALIDATION_ERROR)` immediately after `batcher.destroy()` instead of silently dropping events

## v1.3.0

* **New**: `createBatcher()` instance method on `ChurnKit` (preferred over standalone `createBatcher()`)
* **New**: `onRequest` / `onResponse` observability hooks on `ChurnKitOptions`
* **New**: `requestTimeoutMs` per-call AbortSignal via `AbortSignal.timeout()`
* **New**: `atRiskAll()` async generator for zero-pagination streaming
* **New**: `account()` — fetch account info and plan details
* **New**: `ping()` — health check

## v1.2.0

* **New**: `watch()` / `unwatch()` / `listWatches()` — per-user webhook alerts
* **New**: `cooldown` support on watches (format: `"24h"`, `"7d"`)
* **New**: `isKnownErrorCode()` type guard for exhaustive error handling

## v1.1.0

* **New**: `bulkEvent()` — ingest up to 500 events per call
* **New**: `atRisk()` — paginated at-risk user query with plan filter
* **New**: Exponential backoff with jitter for retryable failures

## v1.0.0

* Initial release: `identify()`, `event()`, `score()`
* ESM + CJS dual package
* `ChurnKitError` with typed `ErrorCode` constants
