Skip to content

Query Language Overview

WireLog queries use a pipe-composed DSL. A source selects the data; stages transform it.

source | stage | stage | ...

Every query starts with a source (what data), then zero or more stages separated by | (how to filter, aggregate, sort).

Sources

SourceSyntaxDescription
Event<event_name>Filter by event_type
All events*All event types (leading | also works)
Funnelfunnel a -> b -> cMulti-step conversion analysis
Retentionretention <event>Cohort retention over time
Pathspaths from <event>User flow analysis
SessionssessionsSession-level analytics
User timelineuser "<id>"Single user’s events (quoted)
Users directoryusersQuery user profiles table
Formulaformula count(a) / count(b)Computed metrics across event types

See Sources for full reference.

Stages

StageSyntaxDescription
Filter| where field = "value"Filter rows by condition
Time range| last 7d, | from ... to ..., | today, | this monthRestrict time window
Count| count, | count by dayCount events, optionally grouped
Unique| unique distinct_idCount unique values
Sum / Avg| sum event_properties.amountNumeric aggregations
Min / Max| min field, | max fieldExtremes
Median / Percentiles| median field, | p90 field, | p95 field, | p99 fieldDistribution
Group by| count by day, fieldGroup aggregation by time or field
List| listReturn raw event rows
Sort| sort field descOrder results
Limit / Top| limit 100, | top 20Cap result count

See Stages for full reference.

Request format

Send queries via POST /query with a secret key (sk_) or access token (aat_ with query scope):

{
"q": "signup | last 7d | count by day",
"format": "llm",
"limit": 100,
"offset": 0
}
FieldRequiredDefaultDescription
qYesQuery DSL string
formatNollmOutput format: llm (Markdown), json, csv
limitNo100Max rows returned (max 10,000)
offsetNo0Pagination offset

Auth header: X-API-Key: sk_... or X-API-Key: aat_...

Quick examples

# Daily signups this week
signup | last 7d | count by day
# Conversion funnel
funnel signup -> activate -> purchase | last 30d
# Weekly retention cohorts
retention signup | last 90d
# All events from a specific company
* | where user.email_domain = "acme.org" | last 30d | count by event_type
# Single user timeline
user "alice@acme.org" | last 90d | list
# Conversion rate as a ratio
formula count(purchase) / count(signup) | last 30d

Output formats

llm (default) — Markdown table. Designed for LLM consumption. Includes column headers and aligned rows.

json — Array of objects. Each row is a JSON object with column names as keys.

csv — Comma-separated values with header row.

Next

  • Sources — event, funnel, retention, paths, sessions, user, users, formula
  • Stages — where, time ranges, aggregations, sort, limit
  • Fields — core, system, properties, profile fields, identity
  • Examples — 15+ annotated real-world queries