I’m not sure if this will be useful to anyone else but I have found several requests for custom notifications and have wanted the same thing myself. I found a bash script (https://forums.sonarr.tv/t/custom-email-and-sms-notifications/14401) to do this but I run Sonarr on Windows and wanted to do it in Powershell so I didn’t have to install anything else. I use Pushbullet and wanted the notifications to show “Show name - S#:E##” instead of the default, this should be easy enough to customize for any other provider/format.
# Define Variables
$sonarr_episodefile_id = $env:sonarr_episodefile_id
$sonarr_series_id = $env:sonarr_series_id
$sonarr_series_title = $env:sonarr_series_title
$sonarr_episodefile_seasonnumber = $env:sonarr_episodefile_seasonnumber
$sonarr_episodefile_episodenumbers = $env:sonarr_episodefile_episodenumbers
$apikey="" # Your Sonarr API key
$sonarr_address="http://localhost:8989" # Your Sonarr address (including base_url)
$pushkey="" # Your PushBullet API key
$pushtag="" # Add the tag for your Pushbullet Channel or leave blank for direct push notifications
# Grab series information
$sonarr_series=$(Invoke-WebRequest -URI $sonarr_address/api/episode?seriesId=$sonarr_series_id -Header @{"X-Api-Key" = $apikey}) | ConvertFrom-Json
# Grab episode details
$sonarr_episode_title = $sonarr_series | where {$_.episodeFileId -eq $sonarr_episodefile_id} | Select -ExpandProperty title
$sonarr_episode_description = $sonarr_series | where {$_.episodeFileId -eq $sonarr_episodefile_id} | Select -ExpandProperty overview
# Format content
$pushtitle = $sonarr_series_title + " - S" + $sonarr_episodefile_seasonnumber + ":E" + $sonarr_episodefile_episodenumbers
$pushmessage = $sonarr_episode_title + " - " + $sonarr_episode_description
# Prepare push notification body
$pushbody = @{
type = 'note'
"title" = $pushtitle
"body" = $pushmessage
channel_tag = $pushtag
}
# Send push notification
Invoke-WebRequest -Method POST -Uri "https://api.pushbullet.com/v2/pushes" -Header @{"Access-Token" = $pushkey} -Body $pushBody
Complete the required fields (apikey, sonarr_address, pushkey and channel_tag) and save as CustomPush.ps1 in a safe location (I used C:\temp\CustomPush.ps1 in the example)
In Sonarr, go to Settings > Connect > + and create a “Custom Script” for “On Download” and “On Upgrade” and put the Path and Arguments as below:
Path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Arguments: -ExecutionPolicy ByPass -File C:\temp\CustomPush.ps1 (change this to suit your path)
This should now send you a push notification like this:
The Blacklist - S1:E23
The Freelancer - Liz and Red track an assassin who disguises his kills in large-scale catastrophes.
Now you know which show and episode has been downloaded instead of just getting “Sonarr - Episode Downloaded” in your notification.
Credit and thanks to bobbintb and his original notification script which I used to help create this.