content/shared/influxdb3-plugins/plugins-library/official/notifier.md
The Notifier Plugin provides multi-channel notification capabilities for {{% product-name %}}, 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.
This HTTP plugin receives all configuration via the request body. No trigger arguments are required.
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.
Send these parameters as JSON in the HTTP POST request body:
| Parameter | Type | Default | Description |
|---|---|---|---|
notification_text | string | required | Text content of the notification message |
senders_config | object | required | Configuration for each notification channel |
The senders_config object accepts channel configurations where keys are sender names and values contain channel-specific settings:
| Parameter | Type | Default | Description |
|---|---|---|---|
slack_webhook_url | string | required | Slack webhook URL |
slack_headers | string | none | Base64-encoded JSON headers |
| Parameter | Type | Default | Description |
|---|---|---|---|
discord_webhook_url | string | required | Discord webhook URL |
discord_headers | string | none | Base64-encoded JSON headers |
| Parameter | Type | Default | Description |
|---|---|---|---|
http_webhook_url | string | required | Custom webhook URL for HTTP POST |
http_headers | string | none | Base64-encoded JSON headers |
| Parameter | Type | Default | Description |
|---|---|---|---|
twilio_sid | string | required | Twilio Account SID (or use TWILIO_SID env var) |
twilio_token | string | required | Twilio Auth Token (or use TWILIO_TOKEN env var) |
twilio_from_number | string | required | Sender phone number in E.164 format |
twilio_to_number | string | required | Recipient phone number in E.164 format |
| Parameter | Type | Default | Description |
|---|---|---|---|
twilio_sid | string | required | Twilio Account SID (or use TWILIO_SID env var) |
twilio_token | string | required | Twilio Auth Token (or use TWILIO_TOKEN env var) |
twilio_from_number | string | required | Sender WhatsApp number in E.164 format |
twilio_to_number | string | required | Recipient WhatsApp number in E.164 format |
httpx (for HTTP requests)twilio (for SMS/WhatsApp notifications)Start {{% product-name %}} with the Processing Engine enabled (--plugin-dir /path/to/plugins):
influxdb3 serve \
--node-id node0 \
--object-store file \
--data-dir ~/.influxdb3 \
--plugin-dir ~/.plugins
Install required Python packages:
influxdb3 install package httpx
influxdb3 install package twilio
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.
influxdb3 enable trigger --database mydb notification_trigger
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"
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.
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.
notifier_plugin.py: The main plugin code containing the HTTP handler for notification dispatchLogs 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'"
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:
notification_text and senders_configSolution: Verify webhook URLs are correct and accessible. Check Twilio credentials and phone number formats. Review logs for specific error messages.
Solution: Ensure Twilio credentials are set via environment variables or request parameters. Verify webhook URLs have proper authentication if required.
Solution: Plugin includes built-in retry logic with exponential backoff. Consider implementing client-side rate limiting for high-frequency notifications.
For security, set Twilio credentials as environment variables:
export TWILIO_SID=your_account_sid
export TWILIO_TOKEN=your_auth_token
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"
For plugin issues, see the Plugins repository issues page.
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.