
Alerts
- Key user events (connect wallet, transactions, conversions, drop off)
- When whales and high-value users visit your app
- Webhooks (including Slack via incoming webhooks)
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:
Step 3: Choose a trigger type
Formo supports two trigger types: Event alerts, which fire on individual matching events, and User alerts, which fire when a user profile matches your filters.- Events
- Users
Triggers when a new event matches your filters. Formo checks for matching events every 5 minutes; each matching event since the last check is sent to your webhook.
You can add conditions to filter on the event’s top-level fields:
type, event, address, user_id, anonymous_id, location, device, browser, os, and referrer. Conditions support exact match, contains, starts with, ends with, and not-equals (e.g., browser = Chrome, referrer contains twitter). They can’t filter on values nested in properties (like chain_id or a transaction’s status) or use numeric comparisons (>, <) - use a User alert if you need to filter on a number.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 data
- Optional secret: In the alert configuration, you can provide a signing secret used to verify requests on your server.
- 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
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
Alert payloads
Event alerts
When an event alert is triggered, Formo batches all matching events into a single webhook call.Webhook payload
The webhook payload uses thealert.event.triggered event type and contains raw analytics events:
Top-level properties:
Each event in
data:
Sample payload:
Slack payload
For Slack incoming webhooks (hooks.slack.com), Formo formats each event as an individual Slack Block Kit card message.
Each message includes:
- A header with the alert name
- A user link (clickable link to Formo profile, if available)
- Event properties (key-value pairs from the event)
- Metadata fields: Country, Device, Browser, OS, Referrer, Referral, UTM Source, UTM Medium, UTM Campaign, UTM Term, UTM Content - only shown when non-empty
User alerts
When a user alert is triggered, Formo sends matching user profiles to your webhook.Webhook payload
The webhook payload uses thealert.user.triggered event type:
Top-level properties:
Each user in
data contains the full wallet profile. All fields from the profile are included - key properties:
Wallet identity:
Socials (included when available):
discord, telegram, website, github, twitter, linkedin, email, instagram, facebook, tiktok, youtube, reddit, linea
Project-level engagement:
Attribution (first-touch and last-touch):
Last activity:
Sample payload:
Slack payload
For Slack incoming webhooks, Formo formats user profiles as a rich card layout:- A header with the alert name
- Per user: a clickable address header with avatar image (if available), a field grid with key profile data, and a View Profile button
- Up to 25 users per batch, with an overflow summary if more were found
Sample Slack Block Kit payload:
Examples
Whale detection alert
Notify when high-value users visit:
Every time a wallet with over $100k net worth is active, you’ll get a Slack message with their profile.
Failed transaction alert
Track when users encounter issues:status lives in the event’s properties object, not a filterable top-level field, so this condition sends every transaction event. Filter for properties.status = "failed" on your webhook receiver to isolate failures.