---
title: "Report Funnel Step"
method: POST
path: "/api/v1/requests/funnel"
---

# Report Funnel Step

`POST /api/v1/requests/funnel`

## Request

- Base URL: `https://trovastorage.it` (the document declares no server; this is the origin it was published from)
- URL: `https://trovastorage.it/api/v1/requests/funnel`
- Auth: none declared

A browser says how far a walk through the wizard got (M6, F61). No
login is read and none is needed: the row is tied to no account, no
request and no address (`services/funnel.py`). It changes nothing a person
can see, so it writes no audit event; it is itself the record.

## Request body

- FunnelEventIn: One step of the wizard, reported by a browser (M6). No field of it can hold a name or an address: keys of ours, and a random number.
  - `run_id` string, uuid, required
  - `event` 'step_reached' | 'exit' | 'estimate_shown' | 'code_sent' | 'confirmed', required
  - `step` string, nullable
  - `category` string, nullable
  - `origin` VisitOrigin: What the browser kept from the first page of the visit (M6): that page's `utm_source`, the host that linked to it and its path. Untrusted, all of it: `services/origin.py` decides what it means.
    - `source` string, nullable
    - `referrer` string, nullable
    - `page` string, nullable

## Response `204`

Successful Response

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/trovastorage/apis/stock-your-inventory.md) · [All operations](https://skmtc.dev/trovastorage/apis/stock-your-inventory/llms.txt) · [OpenAPI document](https://skmtc.dev/trovastorage/apis/stock-your-inventory/revisions/c75f591a585c?raw)
