---
title: "Funnel"
method: GET
path: "/v1/ops/onboarding-funnel"
tags: ["ops onboarding funnel"]
---

# Funnel

`GET /v1/ops/onboarding-funnel`

The onboarding funnel: steps, dwell, churn, and the split by source.

`environment` defaults to production so an engineer's phone on the
srvc.page tunnel (which reports `development`) does not read as a stranger
who left; `all` shows both. `unit=people` folds a device's visits into one
walk; `our_emails` names the staff whose walks are held back until
`ours=true` (`include_ours=true` is the same switch under the name every
other readout uses). Ours by `runtime/ours.py` — internal devices,
personas, rehearsals, bench origins, `@stormy.ai`, localhost — are held
back whatever list the console passes.

## Query parameters

- `days` integer
- `environment` string
- `unit` string
- `ours` boolean
- `include_ours` boolean
- `our_emails` string — comma-separated staff emails; walks by these are held back unless ours=true
- `refresh` boolean

## Headers

- `authorization` string, nullable
- `x-darwin-token` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

## Changes

> 33 revisions in range; 1 not diffed.

- **2026-09-06** `64fe5b3625c6` — 1 info
  - added the new optional `query` request parameter `include_ours`
- **2026-09-03** `6d3f916b4d87` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/ops/onboarding-funnel/get.md)

---

[API](https://skmtc.dev/stormy/apis/stormy-control-plane.md) · [All operations](https://skmtc.dev/stormy/apis/stormy-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/stormy/apis/stormy-control-plane/revisions/b09e3c4ee2af?raw)
