Skip to content

Webhooks

Webhooks Configuration

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.

  1. Open the Now Playing dashboard and go to ConnectionsDestinations.
  2. Find the Webhooks card and click Configure.
  3. Enter the Endpoint URL (the full URL where Now Playing should send the request, beginning with https://).
  4. Select the HTTP Method. POST is the default and works with most services. Some APIs may require PUT.
  5. Optionally add Custom Headers for authentication or content-type overrides.
  6. Toggle the Webhook destination on.

Now Playing will send a request to your endpoint the next time your track changes.

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..."
}
FieldTypeDescription
artiststringArtist or performer name
titlestringTrack title
albumstringAlbum or release name
bpmnumberBeats per minute
keystringMusical key
artworkUrlstringURL 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.

If your endpoint requires authentication, add the appropriate header in the Custom Headers section. Common patterns:

HeaderExample ValueUse Case
AuthorizationBearer eyJhbGciOiJ...JWT or OAuth bearer token
AuthorizationBasic dXNlcjpwYXNzHTTP Basic auth (base64 encoded)
X-API-Keysk-live-abc123...API key authentication
X-Webhook-Secretyour-shared-secretHMAC-style shared secret

Headers are stored securely in Now Playing and sent with every request. They are never exposed in the dashboard after saving.

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:

  1. Create a new scenario/zap with a Webhooks trigger.
  2. Copy the generated webhook URL and paste it into Now Playing.
  3. 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.

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).

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 curl to 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/json header 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.