Webhooks

Generic Webhook Destination
Section titled “Generic Webhook Destination”The Webhook destination will send an HTTP request containing full track data as a JSON payload to any URL you specify, every time your track changes. This makes it straightforward to connect Now Playing to virtually any web service, API, or automation platform that can receive HTTP requests: home automation hubs, custom backend services, LED display controllers, analytics pipelines, or no-code automation tools like Make and Zapier.
Unlike the Discord or Twitch destinations which format a specific type of output, the Webhook destination is a general-purpose delivery mechanism. You define the endpoint, and the receiving service decides what to do with the data.
- Open the Now Playing dashboard and go to Connections → Destinations.
- Find the Webhooks card and click Configure.
- Enter the Endpoint URL (the full URL where Now Playing should send the
request, beginning with
https://). - Select the HTTP Method.
POSTis the default and works with most services. Some APIs may requirePUT. - Optionally add Custom Headers for authentication or content-type overrides.
- Toggle the Webhook destination on.
Now Playing will send a request to your endpoint the next time your track changes.
JSON Payload Format
Section titled “JSON Payload Format”Every request body is a JSON object with the following structure:
{ "artist": "Above & Beyond", "title": "Sun & Moon", "album": "Group Therapy", "bpm": 138, "key": "A min", "artworkUrl": "https://i.scdn.co/image/ab67616d0000b273..."}| Field | Type | Description |
|---|---|---|
artist | string | Artist or performer name |
title | string | Track title |
album | string | Album or release name |
bpm | number | Beats per minute |
key | string | Musical key |
artworkUrl | string | URL to the album artwork image |
Fields that are unavailable for a given track are included with an empty string value rather than being omitted, so your receiving code can always expect the same structure.
Authentication Headers
Section titled “Authentication Headers”If your endpoint requires authentication, add the appropriate header in the Custom Headers section. Common patterns:
| Header | Example Value | Use Case |
|---|---|---|
Authorization | Bearer eyJhbGciOiJ... | JWT or OAuth bearer token |
Authorization | Basic dXNlcjpwYXNz | HTTP Basic auth (base64 encoded) |
X-API-Key | sk-live-abc123... | API key authentication |
X-Webhook-Secret | your-shared-secret | HMAC-style shared secret |
Headers are stored securely in Now Playing and sent with every request. They are never exposed in the dashboard after saving.
Use Cases
Section titled “Use Cases”Home Automation
Trigger scenes in Home Assistant, Hubitat, or SmartThings when a track changes. For example, dim the lights when a slow track comes on, or flash a color when the BPM crosses a threshold. Point the webhook at your home automation hub’s HTTP API endpoint.
LED and DMX Displays
Many LED matrix and DMX lighting controllers expose HTTP endpoints for control. Send track title and artist data to a custom controller script that renders scrolling text on an LED panel.
Make and Zapier Workflows
If the service you want to reach does not accept webhooks directly, use Make (formerly Integromat) or Zapier as an intermediary:
- Create a new scenario/zap with a Webhooks trigger.
- Copy the generated webhook URL and paste it into Now Playing.
- Add subsequent steps in Make/Zapier to reshape the data and forward it to your target service: Notion, Airtable, Google Sheets, Slack, or anything else.
Custom Integrations and Analytics
Post track data to your own backend to build a play history database, generate set reports, or feed a custom web dashboard. Your endpoint receives the full JSON payload and can store, transform, or forward it however you need.
Twitch Channel Points / Custom Events
Combine a webhook with a custom backend that calls the Twitch API to trigger channel point redemption effects or update channel information metadata when a track changes.
Multiple Webhooks
Section titled “Multiple Webhooks”You can add multiple Webhook destinations, each pointing to a different endpoint. All configured webhooks fire simultaneously on every track change. This is useful when you need to notify several different services from a single track event without chaining them together.
To add another webhook, return to the Webhook configuration panel in the dashboard and use the Add Another option (or add a second Webhook destination card from the Destinations list).
Troubleshooting
Section titled “Troubleshooting”Requests are not being received at my endpoint
- Confirm the endpoint URL is correct and publicly reachable. Test it
independently using a tool like Postman or
curlto verify the server is responding. - Check that the Webhook destination is toggled on in the Now Playing dashboard.
- Ensure the Now Playing desktop app is running and connected to your DJ software.
Authentication errors (401 or 403 responses)
- Review your custom headers and confirm the token or API key is current and has not expired.
- Some APIs require the
Content-Type: application/jsonheader explicitly. Add it in the Custom Headers section if your endpoint is rejecting requests.
Endpoint receives requests but the payload format is wrong
Use Make or Zapier as an intermediary to transform the JSON payload into the format your target service expects before forwarding it.
Requests time out
Now Playing sends webhook requests with a short timeout. If your endpoint is
slow to respond, the request may fail. Ensure your receiving server responds
quickly (even with an empty 200 OK) and processes the data asynchronously if
needed.