Guides · Mux
Get a Mac notification when a Mux video is ready or a live stream starts
Mux posts a webhook the moment an uploaded video finishes processing, fails, or a live stream goes live or idle. Point one at EventBar and each one pops up in your menu bar, with this week's count of ready videos a glance away, without polling the API or keeping the dashboard open.
Needs: the free EventBar app on your Mac, an EventBar account, and a Mux account with access to the environment the videos are in. About five minutes. Mux preset, signature verified.
Steps
- Create the webhook URL. In the EventBar dashboard, open the Webhooks tab, pick the group this belongs to (one group per site or app is the usual shape), choose the provider Mux, name it, and press Create. Copy the URL; it stays visible and can be rotated any time.
- Paste it into Mux. In the Mux Dashboard: Settings, then Webhooks. Webhooks belong to one environment, so first pick the environment at the top (Production, Development or your own), then add a webhook, paste the URL as the address to notify and save it. Each webhook gets its own signing secret, which the dashboard shows with the webhook: copy it and paste it into the hook card in EventBar. It is not your API access token's secret.
- Trigger one. Most services offer a test delivery; otherwise do the real thing once. It shows up in the dashboard's Events tab within a second and in the menu bar, as an undefined type named after the event. That first one is your proof the wiring works.
- Make it read well. Press Define on the new type and give it a title and a body template. Fields come from the payload, nested ones with dots. The table below is a starting point.
This preset is on Plus and Pro. Free can do the same with a Generic JSON hook and a type field of type, without the signature check.
What you'll see
| Type | Title | Body template |
|---|---|---|
video.asset.ready | Video ready | {data.passthrough} · {data.duration}s · {data.id} |
video.asset.errored | Video failed | {data.passthrough} · {data.errors.messages.0} |
video.live_stream.active | Live | Stream {data.id} is live |
video.live_stream.idle | Stream ended | Stream {data.id} is idle |
Every type has its own switch in the menu bar, so a noisy one can be quiet on this Mac and still counted. Counts cover the last hour, 24 hours, 7 days, 30 days and all time.
Worth knowing
- The type is the event's
type, sovideo.asset.readyandvideo.asset.erroredeach get their own switch and count. Mux sends every event in the environment to every webhook, includingvideo.asset.createdandvideo.asset.updated; mute the ones you don't want from the menu bar and keep the counts. - The signature is
Mux-Signature: t=…,v1=…, a hex HMAC-SHA256 of the timestamp, a.and the raw body, keyed with the webhook's signing secret. Like Mux's own SDKs, EventBar refuses a timestamp more than five minutes off, so a captured delivery can't be replayed later. - Duplicates are dropped by the event
id. Mux retries a failed delivery for 24 hours and says a duplicate can arrive even after a success, so neither ever counts twice. {data.passthrough}is whatever you set aspassthroughwhen you created the asset or upload, often your own video id or title; it is empty if you never set it.{data.playback_ids.0.id}is the playback id if you want it in the text.- Production and Development are separate environments with separate webhooks and secrets. Make two hooks in two groups if you want both.
The full contract, including how each preset reads a payload and what the answers mean, is in the API docs. Something about Mux's payload changed? Tell us and we'll fix the guide.