v1.3.1
- Fix:
verifyWebhookSignaturenow exported as a standalone named function (noChurnKitinstance required) - Fix: Normalizers now return empty
signals: []andrecommendation: ''instead ofundefinedfor users with no scoring history - Fix:
batcher.push()throwsChurnKitError(VALIDATION_ERROR)immediately afterbatcher.destroy()instead of silently dropping events
v1.3.0
- New:
createBatcher()instance method onChurnKit(preferred over standalonecreateBatcher()) - New:
onRequest/onResponseobservability hooks onChurnKitOptions - New:
requestTimeoutMsper-call AbortSignal viaAbortSignal.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:
cooldownsupport 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
ChurnKitErrorwith typedErrorCodeconstants