Page 1 of 1

Welcome to the Tweaking4All community forums!
When participating, please keep the Forum Rules in mind!

Topics for particular software or systems: Start your topic link with the name of the application or system.
For example “MacOS X – Your question“, or “MS Word – Your Tip or Trick“.

Please note that switching to another language when reading a post will not bring you to the same post, in Dutch, as there is no translation for that post!

JellyFin - Use Luna...
Clear all

[Solved] JellyFin - Use LunaSea for notifications

2 Posts
1 Users
Famed Member Admin
Joined: 11 years ago
Posts: 2678
Topic starter  

If you're using JellyFin, then you may want to see notifications on your phone based on certain events.
Several services are already predefined, but LunaSea is missing ...

LunaSea is a great little app for iOS or Android, to monitor your media related services like Sonarr, Radarr, NZBGet etc.
So it sounds only logical to add Jellyfin to that bunch.

These are the steps to get that going:


  • 1 - In Lunasea go to settings -> notifications. With each service you can get a "Device".

When clicking the button a Device link is generated which we need.

Example (shortened since the gobbledygook is quite long after /device/): 

Grab that link and replace the selected service (lidarr in this example) with "custom": 

  • 2 - In Jellyfin (server) go to Dashboard -> Plugins and make sure "Webhook" is installed.

If not: install it and reboot the JellyFin server!


  • 3 - In Dashboard -> Plugins click the 3-dots and select Settings.


  • 4 - In the settings window we now click "Add Generic Destination" and scroll down to edit the settings.

Webhook Name: LunaSea (or whatever you want to call it - it's just so you can see what is what)
Webhook URL: paste the modified link we got in step 1.
Notification Type: check whatever you like. I used "Start playback" for testing, so I just have to start a video to see a notification.

Template: I used something super simple for that, which you can modify to your taste. Just make sure the fields "title" and "body" exist and are a string.
The used notation to fill in variable is called Handlebars notation. Webhook variables are listed on the Webhook Github page.

  "title": "JellyFin: {{{NotificationType}}}",
  "body": "{{{Name}}}"

If you like, you can add an image field to include an icon or something like that (on the right of the notification).
The link needs to be accessible on the Internet. This needs to be a PNG (recommended) or JPG. Also recommended to keep those images small 😉 


  "title": "JellyFin: {{{NotificationType}}}",
  "body": "{{{Name}}}",
  "image": ""



  • 5 - Add a request header by clicking "Add Request Header".

If you forget this, you'll get messages like "Unknown Title Unknown Content".

Key: Content-type
Value: application/json

Click "Save" and you should be good to go.
As mentioned before: I did test my notifications with playback start/stop. Would have been cool if the Webhook devs would have added a test button.

Famed Member Admin
Joined: 11 years ago
Posts: 2678
Topic starter  

Available variables copied from the Webhook Github page (for easy reference):


  • if_equals
    • if first parameter equals second parameter case insensitive
  • if_exist
    • if the value of the parameter is not null or empty
  • link_to
    • wrap the $url and $text in an <a> tag


  • Every Notifier

    • ServerId
    • ServerName
    • ServerVersion
      • $major.$minor.$build
    • ServerUrl
      • Server url
    • NotificationType
  • BaseItem:

    • Timestamp
      • Current server time local
    • UtcTimestamp
      • Current server time utc
    • Name
      • Item name
    • Overview
      • Item overview
    • Tagline
      • Item tagline
    • ItemId
      • Item id
    • ItemType
      • Item type
    • Year
      • Item production year
    • SeriesName
      • TV series name
    • SeasonNumber
      • Series number - direct format
    • SeasonNumber00
      • Series number - padded 00
    • SeasonNumber000
      • Series number - padded 000
    • EpisodeNumber
      • Episode number - direct format
    • EpisodeNumber00
      • Episode number - padded 00
    • EpisodeNumber000 -
      • Episode number - padded 000
    • Provider_{providerId_lowercase}
      • ProviderId is lowercase.
    • RunTimeTicks
      • The media runtime, in Ticks
    • RunTime
      • The media runtime, as hh:mm:ss
  • Playback

    • Includes everything from BaseItem
    • PlaybackPositionTicks
      • The current playback position, in Ticks
    • PlaybackPosition
      • The current playback position, as hh:mm:ss
    • MediaSourceId
      • The media source id
    • IsPaused
      • If playback is paused
    • IsAutomated
      • If notification is automated, or user triggered
    • DeviceId
      • Playback device id
    • DeviceName
      • Playback device name
    • ClientName
      • Playback client name
    • NotificationUsername
      • User playing item. Note: multiple notifications will be sent if there are multiple users in a session
    • UserId
      • The user Id
    • PlayedToCompletion
      • true/false, Only when NotificationType == PlaybackStop