# Webhook Configuration (Emby) To enable **Live Synchronization**, MixerBee can listen for events from your Emby server. By default, MixerBee queues rebuilds of scheduled playlists or collections 30 seconds after the last relevant webhook for a user. Actual completion depends on queued work and library size. > **IMPORTANT:** Webhook triggers only apply to items configured in the **Scheduler** tab. MixerBee uses the logic defined in your active schedules to perform the refresh. "One-off" builds created manually in the Builder tab are not affected by webhooks. > **Note:** This should work on JellyFin as well using the Webhooks plugin -- I don't have an instance to provide screenshots or exact entries but the gist is the same. > --- ## Connection-specific URL Each saved media connection has its own webhook URL and mandatory secret. Open that connection's settings and generate a **Webhook Secret**. The copied URL contains the saved connection ID and its secret. Disabling the secret disables webhook requests for that connection. Generating a secret prepares MixerBee to receive events; it does not configure the media server. For household members, generating a secret also creates a persistent setup request for the MixerBee installation owner. The owner can copy the URL from **Account settings → Webhook administration**, configure the media server, and mark it installed. MixerBee reports **Connected** only after it receives a valid event using the current secret. The installation owner should set **MixerBee URL reachable by media servers** in Account settings when the address used by Emby or Jellyfin differs from the browser address—for example, with Docker, a reverse proxy, or split DNS. The old shared `/api/webhook` endpoint is retired and returns `410 Gone`; it cannot decide which account or server should receive an event. --- ## Prerequisites * An Emby server administrator who can configure notifications for the selected media user. * MixerBee must be reachable via the network from your Emby server. --- ## Setup Instructions ### 1. Install the Webhooks Plugin (Requires Emby Premium) 1. Open your Emby dashboard. 2. Navigate to **Advanced** > **Plugins**. 3. Go to the **Catalog** tab. 4. Locate and install the **Webhooks** plugin. 5. Restart your Emby server if prompted. ### 2. Add the Notification 1. Navigate to **User Settings** (the user icon in the top right) > **Settings**. 2. **Note:** Ensure you are configuring this for the media-server user shown in the selected MixerBee connection. 3. Select **Notifications** from the left sidebar. 4. Click the **(+) Add Notification** button. ### 3. Configure the Connection 1. **Name**: Enter `MixerBee`. 2. **URL**: Paste the connection-specific URL copied from MixerBee. It has this form: `http://:9000/api/webhook/?token=` 3. **Content Type**: Select `application/json`. ![Edit Notification](screenshots/webhooks_edit_notification.png) ### 4. Select Relevant Events Select the following events to ensure MixerBee captures all necessary changes: * **New Media Added** * **Playback Stop** * **Mark Played** * **Mark Unplayed** ![Event Selection](screenshots/webhooks_edit_events.png) 5. Click **Save**. --- ## How it Works MixerBee uses a **30-second debounce timer by default**, grouped by user. Each relevant event for that user resets the timer. If you perform a bulk action (such as marking an entire season as "Played"), Emby may send many webhooks in rapid succession. After the events stop, MixerBee queues all non-enrichment schedules for that user. Events without a user ID queue all non-enrichment schedules. Schedules are not filtered by the event's media type. Playback-start events do not trigger a rebuild. For an event named `playback.stop`, MixerBee requires `PlaybackInfo.PlayedToCompletion` to be true. This prevents an incomplete playback stop from rebuilding lists. Requests arriving while a schedule is running may queue a follow-up run. You can verify the webhook is working from the **Connected** status in connection settings or by checking the MixerBee console logs; you should see: `Event matches triggers! Scheduling debounce rebuild for 30s from now.` For a Docker Hub install, view logs with `docker logs --tail 100 mixerbee`. An accepted webhook means work was queued; check subsequent job logs for the build result. --- Enjoy! 🐝