Skip to content

Notifications ​

In the config.yaml under the notifications section you can configure the following notification services:

yaml
notifications:
  ntfy: ...
  apprise: ...
  webhook: ...

You can also set all three notification services at the same time.

In this section only yaml configuration is shown. Environment variables are also supported and can be found here.

INFO

All notification settings can also be applied individually per container or per keyword/regex pattern (see containers section).

ntfy ​

ntfy is a simple, self-hostable notification service.

See full configuration example below

Configuration Options ​

NameRequiredDescription
Connection Settings
url✅The URL of your ntfy instance
topic✅The topic name for ntfy
Authentication
token❌Token for ntfy authentication
username❌Username for ntfy authentication (requires password)
password❌Password for ntfy authentication (requires username)
Message Options
priority❌Message priority from 1 (low) to 5 (high), defaults to 3
tags❌Comma-separated tags/emojis for the notification (e.g., warning,fire)
icon❌Icon URL to display with the notification (defaults to LoggiFly logo)
click❌URL to open when the notification is clicked
markdown❌Enable markdown formatting in message (true/false), defaults to false
Advanced
actions❌List of action buttons to add to the notification (see section below)
headers❌Custom HTTP headers as key-value pairs (see section below)

ntfy actions ​

You can add up to 3 interactive action buttons to your notifications using ntfy actions.

Details

Supported Action Types:

Action TypeDescription
viewOpens a URL when clicked
httpSends an HTTP request when clicked
broadcastSends an Android broadcast intent (Android only)

Here is how to configure each action type:

yaml
ntfy:
  actions:
    - action: "view"                      # required
      label: "View Container"             # required
      url: "https://example.com/view"     # required
      clear: false                        # optional, defaults to false
yaml
ntfy:
  actions:
    - action: "http"                      # required
      label: "Restart Service"            # required
      url: "https://example.com/restart"  # required
      method: "POST"                      # optional, defaults to POST
      headers:                            # optional
        Authorization: "Bearer token"
        X-Custom-Header: "value"
      body: "{\"service\": \"web\"}"      # optional
      clear: false                        # optional, defaults to false
yaml
ntfy:
  actions:
    - action: "broadcast"                     # required
      label: "Take Action"                    # required
      intent: "io.heckel.ntfy.USER_ACTION"    # optional, defaults to io.heckel.ntfy.USER_ACTION
      extras:                                 # optional
        action: "custom_action"
        value: "123"
      clear: false                            # optional, defaults to false

Custom ntfy headers ​

You can also set custom headers to send with the request.

Example ntfy headers
yaml
headers:
  At: "tomorrow, 10am" # ntfy delay feature. send the notification at 10am tomorrow
  X-Custom-Header: "Test123" # custom header

Full example ​

yaml
notifications:                       
  ntfy:
    url: http://your-ntfy-server    # Required. The URL of your ntfy instance
    topic: loggifly                 # Required. the topic for ntfy
    # authentication options
    token: ntfy-token               # ntfy token in case you need authentication 
    username: john                  # ntfy Username + Password in case you need authentication 
    password: password              # ntfy Username + Password in case you need authentication 
    # optional settings
    priority: 3                     # ntfy priority (1-5)
    tags: kite,mag                  # ntfy tags/emojis 
    icon: https://example.com/icon.png # ntfy icon
    click: https://example.com/click # ntfy click
    markdown: true                  # ntfy markdown
    actions:                        # ntfy actions
      - action: "view"
        label: "View"
        url: "https://example.com/view"
    headers:                        # add headers if needed
      Authorization: "Bearer token"
      X-Custom-Header: "Test123"

Message length

Set settings.max_message_length to control message length (default: 20,000 characters; 0 disables this limit). ntfy itself also has a message limit, that when exceeded will send the message as an attachment. To avoid the message being lost when LoggiFly attaches a log file (due to attach_logfile: true), the accompanying text is additionally limited to 1,000 characters. The log file itself is not shortened.

Apprise ​

Apprise allows you to send notifications to a wide variety of services using a simple URL-based configuration.

See which services are supported here.

Configuration Options ​

NameRequiredDescription
url✅Any Apprise-compatible URL (e.g., discord://webhook-url, mailto://user:pass@gmail.com, slack://token)

Example ​

yaml
notifications:
  apprise:
    url: "discord://webhook-url"

Multiple destinations

Separate multiple Apprise URLs with commas in the same url string. Notifications are sent to all configured destinations. The same syntax works with APPRISE_URL.

yaml
notifications:
  apprise:
    url: "discord://WEBHOOK_ID/WEBHOOK_TOKEN,tgram://BOT_TOKEN/CHAT_ID"

Message length and overflow ​

LoggiFly applies the global settings.max_message_length limit before calling Apprise. Destination limits, formatting and splitting are handled by Apprise.

To control oversized messages, configure overflow in each destination URL:

URL optionBehavior
overflow=splitSplit long text into multiple messages according to the destination's limits. Recommended when retaining more content is important.
overflow=truncateShorten text to the destination's limit.
overflow=upstreamLeave destination overflow handling to the provider; it may accept, shorten or reject the message.
yaml
notifications:
  apprise:
    url: "discord://WEBHOOK_ID/WEBHOOK_TOKEN?overflow=split"

If a URL already contains query parameters, append &overflow=split instead of ?overflow=split. These options do not undo shortening already performed by the global LoggiFly limit.

Apprise's base default is upstream; individual notification services may differ.

Custom Webhooks ​

Send notification data to your own custom endpoint for integration into custom workflows. LoggiFly will send all data in JSON format.

Configuration Options ​

NameRequiredDescription
url✅The URL of your custom webhook endpoint
headers❌Custom HTTP headers as key-value pairs (e.g., for authentication)

Example ​

yaml
notifications:
  webhook:
    url: https://custom.endpoint.com/post
    headers:
      Authorization: "Bearer token"
      X-Custom-Header: "Test123"

INFO

The webhook always sends title and message in the JSON payload. For non-system notifications, it also sends info_fields which are these always available template fields and log_fields.json which is just the whole json log entry if the log is in json format (see json templating) and log_fields.regex (see regex templating).

WARNING

The webhook feature may be expanded on in the future and can be subject to change.