Changes
🚀 Feature Release - Native Webhooks
Overview
Adds native webhook support for integrating Pulsarr with external automation systems like Home Assistant, n8n, or custom services (closes #341). Configure endpoints through the UI and receive typed JSON payloads for 8 different event types.
Key Updates
Native Webhooks
- 8 event types: media.available, watchlist.added, watchlist.removed, approval.created, approval.resolved, approval.auto, delete_sync.completed, user.created
- Rich payloads: Each event includes relevant context - media details, routing decisions, user info, GUIDs
- Custom auth headers: Support for Authorization headers (Bearer tokens, API keys)
- Per-endpoint event filtering: Subscribe each endpoint to only the events it needs
- Connection testing: Verify endpoints before saving with inline test buttons
- Concurrency limits: Webhooks dispatch with rate limiting to avoid overwhelming targets
Webhook Management UI
- New "Webhooks" section in Settings → Notifications
- Create, edit, delete, and toggle endpoints
- Test existing endpoints directly from the card
- View which events each endpoint subscribes to
Typed Payloads
- Full Zod schemas for all webhook payloads
- OpenAPI documentation for payload structures
- Consistent envelope format:
{ event, timestamp, data } - Routing details included where applicable (instance, quality profile, root folder, tags)
Breaking Changes
- Node.js 24.12.0 required: Upgraded from Node.js 24.11.1 (patch update)
- Docker users: No action needed, image includes correct version
- Manual installations: Update Node.js before upgrading Pulsarr
Manual installation upgrade:
node --version # Should show 24.x.x
nvm install 24 && nvm use 24
# Then update Pulsarr normallyTechnical Changes
- New
/v1/webhooks/endpointsCRUD API - Webhook dispatch integrated into notification orchestration
sent_to_native_webhooktracking in notification records- Shared enrichment data computed once, used across all channels
Migration & Compatibility
Docker users - No action required, pull latest image
Manual installation users - Must be on Node.js 24.x before updating:
node --version # Verify you're on Node.js 24.x
# If not, install Node.js 24:
nvm install 24 && nvm use 24
# Then update Pulsarr normally
git pull origin master
npm install
npm run migrate
npm run build
npm run start:prodDatabase migrations (automatic on startup):
- 071: Drops deprecated
sent_to_webhookcolumn,triggered_by_user_idscolumn, and unused watchlist triggers - 072: Adds
webhook_endpointstable for storing endpoint configurations - 073: Cleans up orphaned public notifications
- 074: Adds new notification type enum values
Full Changelog: v0.8.2...v0.8.3
Docker Image: lakker/pulsarr:0.8.3
- Feature: Native Webhooks (#825) @jamcalli
- Feature/native webhook support (#824) @jamcalli
- Feature/refactor notifications processing (#823) @jamcalli
🔄 Dependencies
- chore(deps): update dependency @scalar/fastify-api-reference to v1.40.8 (#827) @renovate[bot]
- chore(deps): update dependency fast-xml-parser to v5.3.3 (#822) @renovate[bot]
- chore(deps): update actions/checkout action to v6 (#810) @renovate[bot]
- fix(deps): update dependency lucide-react to ^0.561.0 (#809) @renovate[bot]
- chore(deps): update node.js to v24.12.0 (#808) @renovate[bot]
- chore(deps): update dependency @fastify/cors to v11.2.0 (#807) @renovate[bot]
- chore(deps): update dependency @types/node to v24.10.4 (#821) @renovate[bot]
Docker
docker pull lakker/pulsarr:0.8.3
Contributors
@actions-user, @jamcalli, @renovate[bot] and renovate[bot]