# analytics

- browser: collect
- object store: keep
- clickhouse: query
- and nothing else.

## what it is

web analytics as a pipe. events go in, raw batches stay recoverable, bounded queries come out through one public api.

- [open an account](/sign-in)
- [read the api](https://staging.sigdrip.com/openapi)

## collect

```text
Set up staging.sigdrip.com on my site.
```

your agent asks for three permissions. you approve them once from an email link; that link is also your account.

or read the setup protocol.

```bash
curl -fsS https://staging.sigdrip.com/agents.txt
```

these urls say the same thing to a machine.

- https://staging.sigdrip.com/openapi
- https://staging.sigdrip.com/.well-known/agent-configuration
- https://staging.sigdrip.com/install
- https://staging.sigdrip.com/agents.txt
- [/llms.txt](/llms.txt)

or add the script tag by hand.

```html
<script async
  src="https://collect.staging.sigdrip.com/tracker.js"
  data-token="ct1_…"
  data-collector="https://collect.staging.sigdrip.com"></script>
```

- site ct1_: in the script tag. not a secret.
- write wk1_: server batches. shown once.

## keep

raw batches, recoverable. the price is per event kept; cap-crossing batches wait for an upgrade and are never billed while held.

- hobby: 100 000 events / month — free. past the cap, whole batches are held for 30 days and replayed after an upgrade.
- metered: ∞ with your own cap — pay per event kept.

## query

- timeseries: Exact event counts over calendar buckets in an explicit time range.
- event_counts: Per-event counts and distinct observed session keys; keys are not people.
- top_paths: Most-viewed paths, with the pageview filter expressed in the query.
- recent_events: Selected event columns from the last 24 hours, newest first.

```bash
curl https://staging.sigdrip.com/v2/query \
  -H 'authorization: Bearer ak_…' \
  -d '{
        "kind": "aggregate",
        "range": {
          "from": "2026-09-06T00:00:00Z",
          "to": "2026-09-07T00:00:00Z"
        },
        "time": {
          "interval": "hour",
          "timezone": "UTC",
          "fill": "zero"
        },
        "metrics": [
          {
            "as": "count",
            "op": "count"
          }
        ]
      }'
```

then it is your data:

```bash
curl https://staging.sigdrip.com/v2/query -H 'authorization: Bearer ak_…' -d '{ "kind": "aggregate", "range": { "from": "2026-09-06T00:00:00Z", "to": "2026-09-07T00:00:00Z" }, "time": { "interval": "hour", "timezone": "UTC", "fill": "zero" }, "metrics": [ { "as": "count", "op": "count" } ] }' | jq '.data[]'
```

- read ak_: query and catalog. shown once.
- revoke: any key, any time, from the console.

## nothing else — none of these exist

- ~~dashboards~~
- ~~saved insights~~
- ~~funnels~~
- ~~a query builder~~
- ~~a viz layer~~
- ~~surprise bills~~
