Quick start
Event counts
Count all events or filter to a specific event name:Top events
See which events happen most often:Property breakdowns
Break down a specific event by its properties to understand the distribution:device_type, country). For custom properties stored in the JSON properties column, prefix with properties. (e.g., properties.plan, properties.amount).
Custom aggregations
Run sum, average, min, max, or count on numeric event properties:sum, avg, min, max, count.
First-time events
Count users who did an event for the first time within a period. This answers questions like “how many users signed up for the first time this week?” — distinct from total event counts, which include repeat actions.First-time vs first-match
Two modes control how filter conditions interact with the historical scan:| Mode | match_mode | Behavior |
|---|---|---|
| first_time | false (default) | Finds user’s first occurrence of the event, regardless of conditions. Conditions only filter the output range. |
| first_match | true | Finds user’s first occurrence that matches ALL conditions. A user who did purchase before but never with amount > 100 counts as first-time for that condition. |
Lookback window
By default, Tell scans the entire event history to find true first occurrences. For large datasets, limit the scan withlookback_days:
argMin.
See the first-time events API reference for full endpoint documentation.
Per-actor metrics
Regular event counts tell you totals. Per-actor metrics tell you about user behavior — how many events does a typical user trigger? What does the 90th percentile look like? Tell computes this with a two-level aggregation: first per user, then across users.page_view events per user for that day — not the total count, but the per-user average.
Aggregation functions
| Function | Description |
|---|---|
avg | Average per user (default) |
median / p50 | Median per user (robust to outliers) |
p75 | 75th percentile |
p90 | 90th percentile — identifies power users |
p95 | 95th percentile |
p99 | 99th percentile — extreme behavior |
min | Minimum per-user value |
max | Maximum per-user value |
Property aggregation
By default, per-actor counts events. Addproperty to aggregate a numeric property instead:
property: inner aggregation is COUNT(*) per user (event count).
With property: inner aggregation is SUM(property) per user (property total).
The outer function (avg, p90, etc.) then operates on those per-user values.
How it differs from other metrics
- Event counts — total events across all users. “50,000 purchases happened.”
- Per-actor metrics — distribution across users. “The average user made 2.3 purchases. The p90 user made 8.”
- Custom aggregations — single-level property aggregation. “Average purchase amount is $42.” (not per-user)
- Grouped metrics — per-actor logic applied per group for treemap visualization
Drill-down
Inspect raw event data when you need to see individual records:timestamp, event_name, device_id, and session_id. Add filter conditions to narrow down the results.
Formulas
Combine multiple metric series with math. Define series A, B, C (up to 26), then write an expression:B / A * 100 gives a percentage.
Series references
Each series maps to a letter: the first isA, the second is B, and so on up to Z. Reference them in your formula by letter.
Available series metrics: dau, wau, mau, events, event:<name>, sessions, users, logs.
Operators
| Operator | Description | Example |
|---|---|---|
+ | Add | A + B |
- | Subtract | A - B |
* | Multiply | A * B |
/ | Divide | A / B |
% | Modulo | A % B |
** | Power | A ** 2 |
- (unary) | Negate | -A |
(A + B) / C.
Division by zero returns 0 instead of an error.
Evaluation modes
Formulas evaluate in two modes depending on context:- Time series — per-bucket evaluation, used for charts. Missing values default to
0. - Total — evaluates on aggregate totals, used for KPI number blocks on boards.
Formulas on boards
Add formulas to any metric block on a board. Define your series, write the expression, and the board evaluates it on every refresh. Use this for computed metrics like conversion rates, ratios, or derived KPIs. See the formula API reference for full endpoint documentation.Grouped metrics
Grouped metrics show proportional composition — which countries, events, or plans make up your traffic, and how engaged each group is. The result powers treemap visualizations on boards. Each group has two values:- Size — determines area (event count, unique users, or sum of a property)
- Intensity — determines color (average events per user, percentile, or average of a property)
Size metrics
| Type | Description |
|---|---|
count | Total event count per group |
unique_actors | Distinct users per group |
sum | Sum of a numeric property (requires property field, e.g., properties.revenue) |
Intensity metrics
| Type | Description |
|---|---|
avg_per_actor | Average events per user |
percentile_per_actor | Percentile of events per user (default: p90, set percentile to override) |
unique_actors | Distinct users (useful when size is count) |
avg | Average of a numeric property (requires property field) |
Options
| Field | Default | Description |
|---|---|---|
group_by | (required) | Field to group by: country, event_name, device_type, or any properties.* field |
event | (all events) | Filter to a specific event |
max_groups | 20 | Maximum number of groups returned |
range | 30d | Time range |
Lifecycle
The lifecycle metric tracks how your active user base evolves over time. Each period, Tell classifies every active user into one of three states:| State | Meaning |
|---|---|
| new | First ever activity falls within this period |
| returning | Active in both this period and the previous one |
| resurrected | Was inactive in the previous period, came back |
weekly. Supports daily, monthly, and all other granularity levels. Add compare=previous for period-over-period comparison.
This is different from lifecycle segments. The lifecycle metric is a time series — it classifies users per period with relative lookback. Segments are a snapshot — they classify all users right now using fixed 7/30-day windows and include
dormant and churned states.