plugins/examples/webhook-rs/README.md
A Navidrome plugin written in Rust that sends HTTP webhook notifications when tracks are scrobbled. This is useful for integrating with external services like home automation systems, Discord bots, monitoring tools, or any service that can receive HTTP requests.
rustup target add wasm32-unknown-unknownFrom the plugins/examples directory:
make webhook-rs.ndp
Or build directly with cargo:
cd webhook-rs
cargo build --release
zip -j webhook-rs.ndp manifest.json target/wasm32-unknown-unknown/release/webhook_rs.wasm
Copy webhook-rs.ndp to your Navidrome plugins folder (configured via Plugins.Folder in your config).
Configure in the Navidrome UI (Settings → Plugins → webhook-rs):
| Key | Description | Example |
|---|---|---|
urls | Comma-separated list of webhook URLs | https://example.com/hook1,https://example.com/hook2 |
When a scrobble occurs, the plugin sends an HTTP GET request to each configured URL with the following query parameters:
| Parameter | Description |
|---|---|
title | Track title |
artist | Track artist |
album | Album name |
user | Username who scrobbled |
timestamp | Unix timestamp when the track started playing |
Example request:
GET https://example.com/webhook?title=Song%20Name&artist=Artist%20Name&album=Album%20Name&user=john×tamp=1703270400
The plugin is built using the Extism Rust PDK. Key exports:
nd_manifest - Returns plugin metadata and permissionsnd_scrobbler_is_authorized - Always returns true (all users authorized)nd_scrobbler_now_playing - No-op (returns success without action)nd_scrobbler_scrobble - Sends webhooks to configured URLs