
- Key user events (connect wallet events, conversions, drop off)
- When whales and high-value users visit your app
- Webhooks (including Slack via incoming webhooks)
Webhooks
Webhooks allow you to send alerts to your own server or third-party service. You can set up a webhook URL in the project settings, and when an alert is triggered, a POST request will be sent to that URL with the alert data. When an alert is triggered, Formo batches all matching events into a single webhook call. The generic webhook payload uses thealerts.triggered event type and contains raw analytics events from Tinybird:
hooks.slack.com), Formo sends the same events but formatted as a Slack Block Kit table (Time, Event, User, Country, Device, Browser, OS, Referrer) instead of the raw Tinybird rows.
How to set up your first alert
Get real-time notifications when high-value users interact with your app. This guide walks you through creating alerts for whale detection and key events.Step 1: Navigate to Alerts
- Go to the Formo Dashboard
- Select your project
- Click Settings in the left navigation (gear icon)
- Select the Alerts tab
Step 2: Create a new alert
- Click Create Alert
- Configure your alert:
| Setting | Description |
|---|---|
| Name | Descriptive name (e.g., “Whale Alert”) |
| Event Type | Which event triggers the alert |
| Conditions | Filter conditions (optional) |
| Notification | Webhook (generic HTTP or Slack) |
Step 3: Choose an event type
Select which events should trigger notifications:| Event Type | When it fires |
|---|---|
| connect | User connects their wallet |
| transaction | User submits a transaction |
| page | User visits a specific page |
| custom | Your custom tracked events |
Step 4: Configure notifications
- Webhook
- Slack (via Webhook)
- Select Webhook as the notification type
- Enter your webhook URL (generic HTTPS endpoint or Slack incoming webhook)
- Formo sends a POST request with batched event data
id- Crypto UUID for this alert delivery (e.g.,evt_...)type- Alwaysalerts.triggeredcreated- Unix timestamp (seconds) when the webhook was createddata- Array of raw analytics events (Tinybird rows) that matched your filters
- Automatically detected when the URL host contains
hooks.slack.com - Events are rendered as a Slack Block Kit table (Time, Event, User, Country, Device, Browser, OS, Referrer)
- Up to 50 events are shown per alert, with a truncation note if more were found
- Optional secret: In the alert configuration, you can provide a signing secret used to verify requests on your server.
- Usage: For generic webhooks (non-Slack URLs), Formo uses your secret to compute an HMAC-SHA256 signature over the string
{timestamp}.{body}, where:timestampis the Unix timestamp (seconds) used for the requestbodyis the exact JSON payload string sent in the request
Content-Type:application/jsonUser-Agent:Formo-Alerts/1.0X-Formo-Alert-Id: The alert ID in FormoX-Webhook-Signature: HMAC-SHA256 signature (only for generic webhooks when a secret is set)X-Webhook-Timestamp: Unix timestamp (seconds) used in the signature (only for signed generic webhooks)X-Webhook-Event: Alwaysalerts.triggered(only for signed generic webhooks)
Step 5: Test your alert
- Save your alert configuration
- Trigger a test event:
- Visit your app in a browser
- Connect a wallet
- Perform the action that matches your alert
- Check your Slack channel or webhook endpoint for the notification
Example: Whale detection alert
Here’s a practical alert configuration to notify you when high-value users visit:| Setting | Value |
|---|---|
| Name | Whale Alert |
| Event type | connect |
| Condition | net_worth > 100000 |
| Notification | Slack webhook |
Example: Failed transaction alert
Track when users encounter issues:| Setting | Value |
|---|---|
| Name | Failed TX Alert |
| Event type | transaction |
| Condition | status = failed |
| Notification | Webhook (generic HTTPS or Slack) |