Documentation

Notifier plugin

The Notifier Plugin provides multi-channel notification capabilities for InfluxDB 3 Core, enabling real-time alert delivery through various communication channels. Send notifications via Slack, Discord, HTTP webhooks, SMS, or WhatsApp based on incoming HTTP requests. Acts as a centralized notification dispatcher that receives data from other plugins or external systems and routes notifications to the appropriate channels.

Configuration

This HTTP plugin receives all configuration via the request body. No trigger arguments are required.

Plugin metadata

This plugin includes a JSON metadata schema in its docstring that defines supported trigger types and configuration parameters. This metadata enables the InfluxDB 3 Explorer UI to display and configure the plugin.

Request body parameters

Send these parameters as JSON in the HTTP POST request body:

ParameterTypeDefaultDescription
notification_textstringrequiredText content of the notification message
senders_configobjectrequiredConfiguration for each notification channel

Sender-specific configuration (in request body)

The senders_config object accepts channel configurations where keys are sender names and values contain channel-specific settings:

Slack notifications

ParameterTypeDefaultDescription
slack_webhook_urlstringrequiredSlack webhook URL
slack_headersstringnoneBase64-encoded JSON headers

Discord notifications

ParameterTypeDefaultDescription
discord_webhook_urlstringrequiredDiscord webhook URL
discord_headersstringnoneBase64-encoded JSON headers

HTTP webhook notifications

ParameterTypeDefaultDescription
http_webhook_urlstringrequiredCustom webhook URL for HTTP POST
http_headersstringnoneBase64-encoded JSON headers

SMS notifications (via Twilio)

ParameterTypeDefaultDescription
twilio_sidstringrequiredTwilio Account SID (or use TWILIO_SID env var)
twilio_tokenstringrequiredTwilio Auth Token (or use TWILIO_TOKEN env var)
twilio_from_numberstringrequiredSender phone number in E.164 format
twilio_to_numberstringrequiredRecipient phone number in E.164 format

WhatsApp notifications (via Twilio)

ParameterTypeDefaultDescription
twilio_sidstringrequiredTwilio Account SID (or use TWILIO_SID env var)
twilio_tokenstringrequiredTwilio Auth Token (or use TWILIO_TOKEN env var)
twilio_from_numberstringrequiredSender WhatsApp number in E.164 format
twilio_to_numberstringrequiredRecipient WhatsApp number in E.164 format

Software Requirements

  • InfluxDB 3 Core: with the Processing Engine enabled.
  • Python packages:
    • httpx (for HTTP requests)
    • twilio (for SMS/WhatsApp notifications)

Installation steps

  1. Start InfluxDB 3 Core with the Processing Engine enabled (--plugin-dir /path/to/plugins):

    influxdb3 serve \
      --node-id node0 \
      --object-store file \
      --data-dir ~/.influxdb3 \
      --plugin-dir ~/.plugins
  2. Install required Python packages:

    influxdb3 install package httpx
    influxdb3 install package twilio

Trigger setup

HTTP trigger

Create an HTTP trigger to handle notification requests:

influxdb3 create trigger \
  --database mydb \
  --path "gh:influxdata/notifier/notifier_plugin.py" \
  --trigger-spec "request:notify" \
  notification_trigger

This registers an HTTP endpoint at /api/v3/engine/notify.

Enable trigger

influxdb3 enable trigger --database mydb notification_trigger

Example usage

Example 1: Slack notification

Send a notification to Slack:

curl -X POST http://localhost:8181/api/v3/engine/notify \
  -H "Authorization: Bearer $INFLUXDB3_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "notification_text": "Alert: High CPU usage detected on server1",
    "senders_config": {
      "slack": {
        "slack_webhook_url": "'"$SLACK_WEBHOOK_URL"'"
      }
    }
  }'

Set INFLUXDB3_AUTH_TOKEN and SLACK_WEBHOOK_URL to your credentials.

Expected output

Notification sent to Slack channel with message: “Alert: High CPU usage detected on server1”

Example 2: SMS notification

Send an SMS via Twilio:

curl -X POST http://localhost:8181/api/v3/engine/notify \
  -H "Authorization: Bearer $INFLUXDB3_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "notification_text": "Critical alert: System down",
    "senders_config": {
      "sms": {
        "twilio_from_number": "'"$TWILIO_FROM_NUMBER"'",
        "twilio_to_number": "'"$TWILIO_TO_NUMBER"'"
      }
    }
  }'

Set TWILIO_FROM_NUMBER and TWILIO_TO_NUMBER to your phone numbers. Twilio credentials can be set via TWILIO_SID and TWILIO_TOKEN environment variables.

Example 3: Multi-channel notification

Send notifications via multiple channels simultaneously:

curl -X POST http://localhost:8181/api/v3/engine/notify \
  -H "Authorization: Bearer $INFLUXDB3_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "notification_text": "Performance warning: Memory usage above threshold",
    "senders_config": {
      "slack": {
        "slack_webhook_url": "'"$SLACK_WEBHOOK_URL"'"
      },
      "discord": {
        "discord_webhook_url": "'"$DISCORD_WEBHOOK_URL"'"
      }
    }
  }'

Set SLACK_WEBHOOK_URL and DISCORD_WEBHOOK_URL to your webhook URLs.

Code overview

Files

  • notifier_plugin.py: The main plugin code containing the HTTP handler for notification dispatch

Logging

Logs are stored in the trigger’s database in the system.processing_engine_logs table. To view logs:

influxdb3 query --database YOUR_DATABASE "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'notification_trigger'"

Main functions

process_http_request(influxdb3_local, request_body, args)

Handles incoming HTTP notification requests. Parses the request body, extracts notification text and sender configurations, and dispatches notifications to configured channels.

Key operations:

  1. Validates request body for required notification_text and senders_config
  2. Iterates through sender configurations (Slack, Discord, HTTP, SMS, WhatsApp)
  3. Dispatches notifications with built-in retry logic and error handling
  4. Returns success/failure status for each channel

Troubleshooting

Common issues

Issue: Notification not delivered

Solution: Verify webhook URLs are correct and accessible. Check Twilio credentials and phone number formats. Review logs for specific error messages.

Issue: Authentication errors

Solution: Ensure Twilio credentials are set via environment variables or request parameters. Verify webhook URLs have proper authentication if required.

Issue: Rate limiting

Solution: Plugin includes built-in retry logic with exponential backoff. Consider implementing client-side rate limiting for high-frequency notifications.

Environment variables

For security, set Twilio credentials as environment variables:

export TWILIO_SID=your_account_sid
export TWILIO_TOKEN=your_auth_token

Viewing logs

Check processing logs in the InfluxDB system tables:

influxdb3 query --database YOUR_DATABASE "SELECT * FROM system.processing_engine_logs WHERE log_text LIKE '%notifier%' ORDER BY event_time DESC LIMIT 10"

Report an issue

For plugin issues, see the Plugins repository issues page.

Find support for InfluxDB 3 Core

The InfluxDB Discord server is the best place to find support for InfluxDB 3 Core and InfluxDB 3 Enterprise. For other InfluxDB versions, see the Support and feedback options.


Was this page helpful?

Thank you for your feedback!


New in InfluxDB 3.8

Key enhancements in InfluxDB 3.8 and the InfluxDB 3 Explorer 1.6.

See the Blog Post

InfluxDB 3.8 is now available for both Core and Enterprise, alongside the 1.6 release of the InfluxDB 3 Explorer UI. This release is focused on operational maturity and making InfluxDB easier to deploy, manage, and run reliably in production.

For more information, check out:

InfluxDB Docker latest tag changing to InfluxDB 3 Core

On April 7, 2026, the latest tag for InfluxDB Docker images will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments.

If using Docker to install and run InfluxDB, the latest tag will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments. For example, if using Docker to run InfluxDB v2, replace the latest version tag with a specific version tag in your Docker pull command–for example:

docker pull influxdb:2