Alerts

Build visual, node-based alert flows. Connect a metric source to a condition, fan out to any number of notification channels, and watch data move in real time.

Pro+

The alert canvas

Alerts in Produl are built visually on a node-based canvas — similar to a flow diagram editor. You connect source nodes (what to watch), condition nodes (when to fire), and action nodes (where to send the notification) with animated glowing edges that show live data flowing through your alert in real time.

You can fan out from a single condition to any number of actions — send the same alert to Slack, email, and a webhook simultaneously. The canvas autosaves the full layout so you can edit it later exactly as you left it.

Node types

Source nodes

A source node defines what Produl watches. There are two types:

  • Metric Source (green) — streams a live site metric into the canvas. The node displays the current value in real time via Server-Sent Events. Available metrics:
    • active_visitors — current live visitor count
    • pageviews_today — total pageviews since midnight UTC
    • bounce_rate — percentage of single-page sessions (0–100)
    • avg_duration — average session duration in seconds
  • Event Source (purple) — fires when a specific custom event is tracked on your site. Enter the event name exactly as it appears in your tracker calls (case-sensitive). You can optionally filter by event properties using a JSON snippet.

Condition nodes

A condition node defines when the alert fires. Connect it to a source node, then choose one of three condition types:

  • Threshold — fires when the metric satisfies a fixed comparison. Operators: gt (greater than), lt (less than), gte, lte. Example: fire when active_visitors > 200.
  • Anomaly Detection— fires when the metric's z-score exceeds 2 standard deviations from its rolling 7-day mean. No threshold value needed — Produl learns your normal baseline automatically and alerts when behaviour is statistically unusual.
  • Event Match — fires when the connected Event Source records a matching event. Use this condition when the trigger is an event rather than a metric crossing a value.

Action nodes

An action node defines where the notification is delivered. Connect as many action nodes as you like to the same condition — they all fire simultaneously. Each action node has a cooldown field: the minimum number of minutes between consecutive deliveries on that channel, preventing notification floods.

  • Email — delivered via Resend to any address
  • Slack — formatted message via an incoming webhook URL
  • Discord — embed posted to a channel via webhook
  • Webhook — HTTP POST to any URL (see payload below)
  • SMS — text message via Twilio

Logic gate nodes

Logic gate nodes let you combine multiple sources before a condition. Drop an AND or ORgate between two source nodes and the condition to express rules like: “fire only when active visitors are high andbounce rate is also high.” Click the gate node to toggle between AND and OR.

Building an alert

  1. 1

    Open the canvas

    Go to Alerts in the sidebar and click New Alert, or open Alerts from within any site. Select the site you want to monitor if prompted.
  2. 2

    Name your alert

    Enter a descriptive name in the toolbar — for example Traffic Spike or Signup Event → Slack.
  3. 3

    Add a source node

    Drag a Metric Source or Event Sourcefrom the left palette onto the canvas. Set the metric or event name in the node's inline fields. The live value starts streaming immediately for metric sources.
  4. 4

    Add and connect a condition node

    Drag a Conditionnode onto the canvas. Drag from the source node's right handle to the condition node's left handle to connect them. Choose your condition type and configure the operator and value.
  5. 5

    Add action nodes

    Drag one or more Actionnodes onto the canvas and connect them from the condition's right handle. Fill in the destination details (webhook URL, email address, etc.) and set a cooldown in minutes.
  6. 6

    Save

    Click Save in the toolbar. The alert is now active and will fire the next time its condition is met. Use Test to send a sample notification immediately.

Right-click any node

Right-clicking a node opens a context menu with options to Duplicate the node, Disconnect all its edges, or Delete it. Nodes can also be deleted by selecting them and pressing Backspace.

Templates

Click Templates in the canvas toolbar to open the template picker. Pre-built templates load a complete, ready-to-save alert canvas — just fill in your destination details and hit Save. Available templates:

  • Traffic Spike — active visitors > 50 → email
  • Traffic Drop — active visitors < 3 → Slack
  • Anomaly Detection — pageviews anomaly → email
  • New Signup — signup event → Slack + email
  • High Bounce Rate — bounce rate > 75% → email
  • Custom Event → Webhook — any event → HTTP endpoint
  • Daily Pageview Goal — pageviews > 1000 → Discord
  • Critical Multi-Channel — visitors > 200 → Slack + email + SMS

Templates pre-fill the name

When you load a template onto an empty canvas with no name set, the alert name is automatically pre-filled from the template. You can change it before saving.

Notification channels

Configure credentials for each channel under Settings → Integrations before adding the corresponding action nodes to your canvas.

Metricbounce_rate = 62%Conditionthreshold > 50%firesAlertbounce_rateSlackEmailWebhook
One alert condition fanning out to multiple notification channels

Webhook payload

When an alert fires, Produl sends a JSON POST to your webhook endpoint. The payload includes the alert metadata, current metric value, and the condition snapshot.

webhook-payload.jsonjson
{
  "alert_id": "alert_01hx9z",
  "alert_name": "Traffic Spike",
  "site_id": "site_abc123",
  "condition": {
    "type": "threshold",
    "metric": "active_visitors",
    "operator": "gt",
    "value": 200
  },
  "current_value": 312,
  "triggered_at": "2025-06-01T14:22:00Z"
}

Test before going live

Use the Test button in the canvas toolbar to fire a sample payload immediately. Test payloads include a "test": true field so your receiver can filter them out.

Cooldown & history

Each action node has a cooldown — the minimum gap in minutes before the same channel fires again for the same alert. Setting a cooldown of 60 means even if the condition stays true, Slack will only receive one message per hour.

Every firing is logged in Alert History, accessible by expanding any alert in the list view. History shows the trigger timestamp, condition snapshot, delivery status (sent / failed), and any retry attempts. Failed deliveries are retried up to 3 times with exponential backoff (1 s → 2 s → 4 s).