Skip to main content
Manage the funnels defined on one of the current team’s sites. A funnel is an ordered sequence of 2–8 inline steps — each step is its own match definition (match_type + match_value/scroll_threshold), the same shape a goal uses, but stored on the funnel itself rather than referencing a saved goal. Deleting or editing a goal never affects a funnel, and duplicate steps are allowed since they aren’t shared records. A site is addressed by {siteKey} (UUID or domain). All endpoints require Authorization: Bearer {token}.

List funnels

List a site’s funnels, ordered by name, each with its step count. Not paginated — flat JSON array. Path parameters Response — flat JSON array of: Status: 200 OK.

Create a funnel

Create a funnel from an ordered list of 2–8 inline steps. Array position is the step order (1-indexed). Body parameters Each step object: A step’s match operator is not settable through this endpoint — it always uses the type-dependent default (is for an event step, matches_pattern for every other type), same as an unset goal match_operator. The CreateFunnel Action enforces the 2–8 step bound, that each step’s value satisfies its type’s rules, and funnel-name uniqueness — each violation returns 422. Unlike goal ids, duplicate step definitions within the same funnel are allowed. Response — the created funnel, including its ordered steps: Status: 201 Created.

Update a funnel

Update a funnel. In practice this is a full replace, not a partial patchname and steps are re-validated the same way as create (a missing/empty name and a steps array outside 2–8 both return 422), and strict_order is not merged with the current value: any request that omits it resets it to false. Always send the funnel’s complete definition — name, all steps, and the intended strict_order — on every update, not just the field you changed. Path parameters Body parameters Response — the updated funnel (with steps). Status: 200 OK.

Evaluate a funnel definition

Evaluate an ad hoc, unsaved funnel definition over a date range — the live preview the funnel builder uses while you’re still editing steps. Never persists a Funnel row; read-only. Body parameters Dashboard filter dimensions (country, path, utm_source, etc. — see Conventions) are read from the query string, not the body. A goal or prop_key/prop_value filter is accepted but ignored: a funnel is already its own set of match conditions, so goal/property filtering on top of it is dropped before evaluation. Response — computed, not persisted: Each steps[] entry: Status: 200 OK.

Funnel conversion (saved funnel)

Compute the conversion breakdown for a saved funnel over a date range — the same numbers the dashboard’s funnel report shows. The funnel is resolved through the team’s site, so a foreign/unknown funnel id returns 404. Where Evaluate runs an unsaved definition from the body, this reads a persisted Funnel by id. Path parameters Query parameters — the shared date range (range, or from/to) and dashboard filters, see Conventions and filters. As with evaluate, a goal or prop_key/prop_value filter is accepted but ignored. Response — identical shape to Evaluate a funnel definition (the steps[] breakdown plus the entering/never-entering visitor totals). Status: 200 OK.

Delete a funnel

Delete a funnel and its steps. Cannot be undone. A foreign/unknown funnel id returns 404. Status: 204 No Content.