---
title: "Get a page-entry session funnel"
method: GET
path: "/v3/web-analytics/entity-funnel"
tags: ["Web Analytics"]
---

# Get a page-entry session funnel

`GET /v3/web-analytics/entity-funnel`

Requires entity_type, legacy page_id, or page_path; entity_id is optional. Follows sessions whose first page view matches the focus, with paid_sessions reported separately from navigation steps. Requires web_analytics:read. The authenticated credential determines the business; no business_id override is accepted. Reporting and scope-option calls share a 600-request/hour limit per API key or OAuth installation, in addition to the normal burst and hourly limits. Responses contain recorded analytics, which may be lower than actual traffic because of consent choices, self-traffic exclusion, blockers, and unavailable attribution.

## Query parameters

- `from` string, date, required
- `to` string, date, required
- `timezone` string
- `store_id` integer
- `entity_type` 'landing_page' | 'product' | 'bundle_price_option' | 'store_home' | 'cart' | 'checkout' | 'payment_link' | 'order_detail' | 'order_success' | 'order_invoice' — Customer-facing page surface. The owner is a landing page, product, bundle price option, store, or protected payment-link scope; order surfaces use the store owner, never an order ID.
- `entity_id` string
- `entity_path` string
- `page_id` integer
- `page_host` string
- `page_path` string
- `ad_click` 'paid' | 'organic' | 'meta' | 'google' | 'tiktok'
- `limit` integer
- `max_steps` integer

## Response `200`

Success

- WebAnalyticsEntityFunnel — Follows sessions that start on the focus surface. Payment is a separate outcome, not a funnel step. Sessions leaving the site simply have no later step. Returned step rows are subject to limit.
  - `sessions` integer, required — Sessions whose first recorded page view matches the focus.
  - `paid_sessions` integer, required — Cohort sessions linked to an observed paid order.
  - `steps` WebAnalyticsFunnelStep[], required
    - `step` integer, required — One-based step after consecutive duplicate nodes are collapsed.
    - `node` string, required — Entity-type:owner key or sanitized path.
    - `path` string, required — Representative sanitized path.
    - `sessions` integer, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `429` — Too Many Requests. Storefront public requests using `X-Scalev-Storefront-Api-Key` or `X-Scalev-Guest-Token` are rate-limited as direct client/browser requests. Machine-authenticated business requests are rate-limited per API key or OAuth installation. Rate-limit responses may be plain text instead of the normal JSON error shape.

## Changes

- **2026-09-20** `af4231e0cad9` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/scalev/apis/nexus-commerce-api/changes/v3/web-analytics/entity-funnel/get.md)

---

[API](https://skmtc.dev/scalev/apis/nexus-commerce-api.md) · [All operations](https://skmtc.dev/scalev/apis/nexus-commerce-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scalev/apis/nexus-commerce-api/revisions/215156c4eee0?raw)
