Notifications#

Prowlarr supports pushing notifications to external applications and services.

These are not only for Prowlarr to communicate with the outside world, they can also be useful for monitoring since the user can be alerted, by a service of their choice, when some kind of event (or problem) occurs.

Configuration#

Notification connections are configured using the following syntax.

prowlarr:
  settings:
    notifications:
      delete_unmanaged: false # Optional
      definitions:
        Email: # Name of notification connection in Prowlarr.
          type: "email" # Required
          notification_triggers: # When to send notifications.
            on_health_issue: true
            include_health_warnings: false # Do not send on just warnings.
            on_application_update: true
          tags: # Tags can also be assigned to connections.
            - "example"
          # Connection-specific parameters.
          server: "smtp.example.com"
          port: 465
          use_encryption: true
          username: "prowlarr"
          password: "fake-password"
          from_address: "prowlarr@example.com"
          recipient_addresses:
            - "admin@example.com"
        # Add additional connections here.

A type attribute must be defined so Buildarr knows what type of connection to make. Each connection has a unique value for type documented below.

The triggers enabled on a connection are defined under notification_triggers. Tags can be assigned to connections, to only allow notifications relating to media under those tags.

The delete_unmanaged flag on the outer connect block can be set to remove connections not defined in Buildarr. Take care when using this option, as it can remove connections automatically managed by other applications.

The following notification triggers can be enabled. Some connection types only allow a subset of these to be enabled, check the documentation the specific connection type for more information.

on_health_issue: bool = False class-attribute instance-attribute #

Be notified on health check failures.

include_health_warnings: bool = False class-attribute instance-attribute #

Be notified on health warnings in addition to errors.

Requires on_health_issue to be enabled to have any effect.

on_application_update: bool = False class-attribute instance-attribute #

Be notified when Prowlarr gets updated to a new version.

Apprise#

Receive media update and health alert push notifications via an Apprise server.

type: Literal['apprise'] = 'apprise' class-attribute instance-attribute #

Type value associated with this kind of connection.

base_url: AnyHttpUrl instance-attribute #

Apprise server base URL, including http[s]:// and port if needed.

configuration_key: Optional[SecretStr] = None class-attribute instance-attribute #

Configuration key for the Persistent Storage Solution.

Leave empty if Stateless URLs are used.

stateless_urls: Set[AnyHttpUrl] = set() class-attribute instance-attribute #

One or more URLs where notifications should be sent to.

Leave undefined or empty if Persistent Storage is used.

apprise_tags: Set[NonEmptyStr] = set() class-attribute instance-attribute #

Optionally notify only targets with the defined tags.

auth_username: Optional[str] = None class-attribute instance-attribute #

Username for authenticating with Apprise, if required.

auth_password: Optional[SecretStr] = None class-attribute instance-attribute #

Password for authenticating with Apprise, if required.

Boxcar#

Receive media update and health alert push notifications via Boxcar.

type: Literal['boxcar'] = 'boxcar' class-attribute instance-attribute #

Type value associated with this kind of connection.

access_token: Password instance-attribute #

Access token for authenticating with Boxcar.

Custom Script#

Execute a local script on the Prowlarr instance when events occur.

type: Literal['customscript'] = 'customscript' class-attribute instance-attribute #

Type value associated with this kind of connection.

path: NonEmptyStr instance-attribute #

Path of the script to execute.

Discord#

Send media update and health alert messages to a Discord server.

type: Literal['discord'] = 'discord' class-attribute instance-attribute #

Type value associated with this kind of connection.

webhook_url: AnyHttpUrl instance-attribute #

Discord server webhook URL.

username: Optional[str] = None class-attribute instance-attribute #

The username to post as.

If unset, blank or set to None, use the default username set to the webhook URL.

avatar: Optional[str] = None class-attribute instance-attribute #

Change the avatar that is used for messages from this connection.

If unset, blank or set to None, use the default avatar for the user.

host: Optional[str] = None class-attribute instance-attribute #

Override the host name that shows for this notification.

If unset, blank or set to None, use the machine name.

on_grab_fields: Set[OnGrabField] = {OnGrabField.overview, OnGrabField.rating, OnGrabField.genres, OnGrabField.quality, OnGrabField.size, OnGrabField.links, OnGrabField.release, OnGrabField.poster, OnGrabField.fanart} class-attribute instance-attribute #

Set the fields that are passed in for this 'on grab' notification. By default, all fields are passed in.

Values:

  • overview
  • rating
  • genres
  • quality
  • group
  • size
  • links
  • release
  • poster
  • fanart

Example:

...
  connect:
    definitions:
      Discord:
        type: "discord"
        webhook_url: "https://..."
        on_grab_fields:
          - "overview"
          - "quality"
          - "release"
on_import_fields: Set[OnImportField] = {OnImportField.overview, OnImportField.rating, OnImportField.genres, OnImportField.quality, OnImportField.codecs, OnImportField.group, OnImportField.size, OnImportField.languages, OnImportField.subtitles, OnImportField.links, OnImportField.release, OnImportField.poster, OnImportField.fanart} class-attribute instance-attribute #

Set the fields that are passed in for this 'on import' notification. By default, all fields are passed in.

Values:

  • overview
  • rating
  • genres
  • quality
  • codecs
  • group
  • size
  • languages
  • subtitles
  • links
  • release
  • poster
  • fanart

Example:

...
  connect:
    definitions:
      Discord:
        type: "discord"
        webhook_url: "https://..."
        on_import_fields:
          - "overview"
          - "quality"
          - "release"

Email#

Send media update and health alert messages to an email address.

type: Literal['email'] = 'email' class-attribute instance-attribute #

Type value associated with this kind of connection.

server: NonEmptyStr instance-attribute #

Hostname or IP address of the SMTP server to send outbound mail to.

port: Port = 587 class-attribute instance-attribute #

The port number on the SMTP server to use to submit mail.

The default is to use STARTTLS on the standard SMTP submission port.

use_encryption: EmailUseEncryption = EmailUseEncryption.always class-attribute instance-attribute #

Whether or not to use encryption when sending mail to the SMTP server.

If the port number is set to 465, SMTPS (implicit TLS) will be used. Any other port number will result in STARTTLS being used.

The default is to enforce encryption.

Note

Disabling encryption is available in Prowlarr v1.13 and above. If this option is set to never on an older version, it will have the same effect as setting it to preferred.

Values:

  • always/true - Enforce encryption
  • preferred - Prefer encryption, but allow unencrypted
  • never/false - Disable encryption

Changed in version 0.5.3: Added support for the always, preferred and never values.

username: NonEmptyStr instance-attribute #

SMTP username of the account to send the mail from.

password: Password instance-attribute #

SMTP password of the account to send the mail from.

from_address: NameEmail instance-attribute #

Email address to send the mail as.

RFC-5322 formatted mailbox addresses are also supported, e.g. Prowlarr Notifications <prowlarr@example.com>.

recipient_addresses: Annotated[List[NameEmail], Field(min_items=1, unique_items=True)] instance-attribute #

List of email addresses to directly address the mail to.

At least one address must be provided.

cc_addresses: Annotated[List[NameEmail], Field(unique_items=True)] = [] class-attribute instance-attribute #

Optional list of email addresses to copy (CC) the mail to.

bcc_addresses: Annotated[List[NameEmail], Field(unique_items=True)] = [] class-attribute instance-attribute #

Optional list of email addresses to blind copy (BCC) the mail to.

Gotify#

Send media update and health alert push notifications via a Gotify server.

type: Literal['gotify'] = 'gotify' class-attribute instance-attribute #

Type value associated with this kind of connection.

server: AnyHttpUrl instance-attribute #

Gotify server URL. (e.g. http://gotify.example.com:1234)

app_token: Password instance-attribute #

App token to use to authenticate with Gotify.

priority: GotifyPriority = GotifyPriority.normal class-attribute instance-attribute #

Gotify notification priority.

Values:

  • min
  • low
  • normal
  • high

Join#

Send media update and health alert push notifications via Join.

type: Literal['join'] = 'join' class-attribute instance-attribute #

Type value associated with this kind of connection.

api_key: Password instance-attribute #

API key to use to authenticate with Join.

device_names: Set[NonEmptyStr] = set() class-attribute instance-attribute #

List of full or partial device names you'd like to send notifications to.

If unset or empty, all devices will receive notifications.

priority: JoinPriority = JoinPriority.normal class-attribute instance-attribute #

Join push notification priority.

Values:

  • silent
  • quiet
  • normal
  • high
  • emergency

Mailgun#

Send media update and health alert emails via the Mailgun delivery service.

type: Literal['mailgun'] = 'mailgun' class-attribute instance-attribute #

Type value associated with this kind of connection.

api_key: Password instance-attribute #

API key to use to authenticate with Mailgun.

use_eu_endpoint: bool = False class-attribute instance-attribute #

Send mail via the EU endpoint instead of the US one.

from_address: NameEmail instance-attribute #

Email address to send the mail as.

RFC-5322 formatted mailbox addresses are also supported, e.g. Sonarr Notifications <sonarr@example.com>.

sender_domain: NonEmptyStr instance-attribute #

The domain from which the mail will be sent.

recipient_addresses: Annotated[List[NameEmail], Field(min_items=1, unique_items=True)] instance-attribute #

The recipient email addresses of the notification mail.

At least one recipient address is required.

Notifiarr#

Send media update and health alert emails via the Notifiarr notification service.

type: Literal['notifiarr'] = 'notifiarr' class-attribute instance-attribute #

Type value associated with this kind of connection.

api_key: Password instance-attribute #

API key to use to authenticate with Notifiarr.

ntfy#

Send media update and health alert emails via the ntfy.sh notification service, or a self-hosted server using the same software.

type: Literal['ntfy'] = 'ntfy' class-attribute instance-attribute #

Type value associated with this kind of connection.

server_url: Optional[AnyHttpUrl] = None class-attribute instance-attribute #

Custom ntfy server URL.

Leave blank, set to null or undefined to use the public server (https://ntfy.sh).

username: Optional[str] = None class-attribute instance-attribute #

Username to use to authenticate, if required.

password: Optional[SecretStr] = None class-attribute instance-attribute #

Password to use to authenticate, if required.

priority: NtfyshPriority = NtfyshPriority.default class-attribute instance-attribute #

Values:

  • min
  • low
  • default
  • high
  • max
topics: Set[NonEmptyStr] = set() class-attribute instance-attribute #

List of Topics to send notifications to.

ntfy_tags: Set[NonEmptyStr] = set() class-attribute instance-attribute #

Optional list of tags or emojis to use.

click_url: Optional[AnyHttpUrl] = None class-attribute instance-attribute #

Optional link for when the user clicks the notification.

Prowl#

Send media update and health alert push notifications to a Prowl client.

type: Literal['prowl'] = 'prowl' class-attribute instance-attribute #

Type value associated with this kind of connection.

api_key: Password instance-attribute #

API key to use when authenticating with Prowl.

priority: ProwlPriority = ProwlPriority.normal class-attribute instance-attribute #

Prowl push notification priority.

Values:

  • verylow
  • low
  • normal
  • high
  • emergency

Pushbullet#

Send media update and health alert push notifications to 1 or more Pushbullet devices.

type: Literal['pushbullet'] = 'pushbullet' class-attribute instance-attribute #

Type value associated with this kind of connection.

api_key: Password instance-attribute #

API key to use when authenticating with Pushbullet.

device_ids: List[NonEmptyStr] = [] class-attribute instance-attribute #

List of device IDs to send notifications to.

If unset or empty, send to all devices.

channel_tags: List[NonEmptyStr] = [] class-attribute instance-attribute #

List of Channel Tags to send notifications to.

sender_id: Optional[str] = None class-attribute instance-attribute #

The device ID to send notifications from (device_iden in the device's URL on pushbullet.com).

Leave unset, blank or set to None to send from yourself.

Pushover#

Send media update and health alert push notifications to 1 or more Pushover devices.

type: Literal['pushover'] = 'pushover' class-attribute instance-attribute #

Type value associated with this kind of connection.

user_key: Password instance-attribute #

User key to use to authenticate with your Pushover account.

api_key: Password instance-attribute #

API key assigned to Prowlarr in Pushover.

devices: Set[NonEmptyStr] = set() class-attribute instance-attribute #

List of device names to send notifications to.

If unset or empty, send to all devices.

priority: PushoverPriority = PushoverPriority.normal class-attribute instance-attribute #

Pushover push notification priority.

Values:

  • silent
  • quiet
  • normal
  • high
  • emergency
retry: Union[Literal[0], PushoverRetry] = 0 class-attribute instance-attribute #

Interval to retry emergency alerts, in seconds.

Minimum 30 seconds. Set to 0 to disable retrying emergency alerts.

expire: int = Field(0, ge=0, le=86400) class-attribute instance-attribute #

Threshold for retrying emergency alerts, in seconds. If retry is set, this should be set to a higher value.

Maximum 86400 seconds (1 day).

sound: Optional[str] = None class-attribute instance-attribute #

Notification sound to use on devices.

Leave unset, blank or set to None to use the default.

SendGrid#

Send media update and health alert emails via the SendGrid delivery service.

type: Literal['sendgrid'] = 'sendgrid' class-attribute instance-attribute #

Type value associated with this kind of connection.

api_key: Password instance-attribute #

API key to use to authenticate with SendGrid.

from_address: NameEmail instance-attribute #

Email address to send the mail as.

RFC-5322 formatted mailbox addresses are also supported, e.g. Prowlarr Notifications <prowlarr@example.com>.

recipient_addresses: Annotated[List[NameEmail], Field(min_items=1, unique_items=True)] instance-attribute #

The recipient email addresses of the notification mail.

At least one recipient address is required.

Slack#

Send media update and health alert messages to a Slack channel.

type: Literal['slack'] = 'slack' class-attribute instance-attribute #

Type value associated with this kind of connection.

webhook_url: AnyHttpUrl instance-attribute #

Webhook URL for the Slack channel to send to.

username: NonEmptyStr instance-attribute #

Username to post as.

icon: Optional[str] = None class-attribute instance-attribute #

The icon that is used for messages from this integration (emoji or URL).

If unset, blank or set to None, use the default for the user.

channel: Optional[str] = None class-attribute instance-attribute #

If set, overrides the default channel in the webhook.

Telegram#

Send media update and health alert messages to a Telegram chat room.

type: Literal['telegram'] = 'telegram' class-attribute instance-attribute #

Type value associated with this kind of connection.

bot_token: Password instance-attribute #

The bot token assigned to the Prowlarr instance.

chat_id: NonEmptyStr instance-attribute #

The ID of the chat room to send messages to.

You must start a conversation with the bot or add it to your group to receive messages.

send_silently: bool = False class-attribute instance-attribute #

Sends the message silently. Users will receive a notification with no sound.

Twitter#

Send media update and health alert messages via Twitter.

Twitter requires you to create an application for their API to generate the necessary keys and secrets. If unsure how to proceed, refer to these guides from Twitter and WikiArr.

Access tokens can be obtained using the prodecure documented here.

type: Literal['twitter'] = 'twitter' class-attribute instance-attribute #

Type value associated with this kind of connection.

consumer_key: Password instance-attribute #

Consumer key from a Twitter application.

consumer_secret: Password instance-attribute #

Consumer key from a Twitter application.

access_token: Password instance-attribute #

Access token for a Twitter user.

access_token_secret: Password instance-attribute #

Access token secret for a Twitter user.

mention: NonEmptyStr instance-attribute #

Mention this user in sent tweets.

direct_message: bool = True class-attribute instance-attribute #

Send a direct message instead of a public message.

Webhook#

Send media update and health alert notifications to a webhook API.

type: Literal['webhook'] = 'webhook' class-attribute instance-attribute #

Type value associated with this kind of connection.

method: WebhookMethod = WebhookMethod.POST class-attribute instance-attribute #

HTTP request method type to use.

Values:

  • POST
  • PUT
username: NonEmptyStr instance-attribute #

Webhook API username.

password: Password instance-attribute #

Webhook API password.