Checkout stages per bucket, by hit time
Visitors who reached each checkout stage, per bucket, at the time they reached it.
The trend and the tile the analytics page draws beside its pageview
numbers, from both sources: the URL-derived checkout_stage on a pageview
and the Shopify pixel's events. events_read says whether the second half
was counted.
NOT the funnel's timeseries.reached_by_stage. That one counts an entry
COHORT over a window widened by 24h, so a purchase at 14:00 by a visitor
who entered at 09:00 lands in the 09:00 bucket and the window edges move as
soon as events are read. Here the requested range applies to the row's own time, and the
window totals are distinct visitors over the window rather than the column
sums of the series.
bearerAuthAuthentifizierungBearer <token>API token generated from the fastmon dashboard (Account → API Token) or at organization level (fmo_…, one that outlives its creator). Send as Authorization: Bearer fm_... or paste the full token (including its prefix) into the Authorize dialog.
org_id*Org Iduuidapplication/json- body
Request for the checkout stage series, bucketed by the hit itself.
time_range*Time range for the query
filters?Optional filters
identity?|Identifier to count distinct visitors by: 'stitch' or 'session'. Null -> the application's default (stitch preferred), same resolution as /visitors. 'session' answers from pageviews alone, because a pixel event carries no session id (see events_read).
granularity?GranularityRequestBucket size of the series: 'minute' (windows up to 6h), 'hour', 'day', or 'auto' (default; <=48h windows give hourly, longer daily). The comparison window is bucketed at the resolved size too, so both series sit on one grid.
"auto""auto""minute""hour""day"compare_to?|Also report the same numbers for an earlier window: previous_period, previous_day, previous_week or previous_month. The window is the one /analytics/query derives for the same mode, so a tile here and a tile there compare against the same days.
Successful Response
application/json- response
Visitors per checkout stage per bucket, counted at the time of the hit.
Deliberately not the funnel's timeseries.reached. That one buckets a
visitor by their funnel ENTRY over a window widened by 24h, so it answers
"what did the cohort that entered on Monday do". This one applies the
requested range to the row's own time: a hit inside the window counts in the
window, whatever the run's entry, and the window edges do not move when the
events are read.
meta*Facts about the result
request*The request as the server resolved it
events_read*Events ReadWhether checkout events were counted. The stages come from events alone where a site in scope derives stage events from its pageviews, and from the pageview stages plus the pixel's events otherwise. False for identity 'session' (an event carries no session id), for a filter with no column on events (URL, page type, campaign, a metric threshold), and where the events table is not installed. False therefore means the pageview answer alone, which is 0 for success on a shop whose checkout runs off-site.
totals*Stage name -> distinct visitors who reached it anywhere in the window. NOT the column sum of series: a visitor who reached the checkout on three days is one visitor here and three bucket entries there. Approximate above ~65k visitors (HLL, ~0.5% relative error). On the pageview fallback each visitor is counted per stored rate and scaled by it, as the visitors metric of /analytics/query is.
series*array<>One point per bucket that had at least one stage hit. A bucket with none is absent rather than zero-filled, as in /analytics/query.
comparison?Absent unless compare_to was set (per response_model_exclude_none). The compared window can predate the checkout events: the table fills from the day the Shopify pixel is installed, so an earlier window holds the pageview stages alone although events_read is true for both. success then rises from 0 for a shop whose checkout runs off-site, and that rise is the installation, not the shop.
curl -X POST 'https://api.fastmon.eu/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/analytics/funnels/checkout/stages' \ -H 'Content-Type: application/json' \ -d '{ "time_range": { "from": "2019-08-24T14:15:22Z", "to": "2019-08-24T14:15:22Z" }}'{ "meta": { "execution_time_ms": 0, "total": 0, "limit": 0, "offset": 0, "has_more": true, "next_cursor": "string", "sampling": { "sampling_rate": 0, "is_sampled": true, "estimated_metrics": [ "string" ] }, "is_identity_mixed": true }, "request": { "time_range": { "from": "2019-08-24T14:15:22Z", "to": "2019-08-24T14:15:22Z" }, "comparison_time_range": { "from": "2019-08-24T14:15:22Z", "to": "2019-08-24T14:15:22Z" }, "granularity": "minute", "identity": "stitch", "window_seconds": 0, "filters": {} }, "events_read": true, "totals": { "property1": 0, "property2": 0 }, "series": [ { "timestamp": "2019-08-24T14:15:22Z", "reached_by_stage": { "property1": 0, "property2": 0 } } ], "comparison": { "time_range": { "from": "2019-08-24T14:15:22Z", "to": "2019-08-24T14:15:22Z" }, "totals": { "property1": 0, "property2": 0 }, "series": [ { "timestamp": "2019-08-24T14:15:22Z", "reached_by_stage": { "property1": 0, "property2": 0 } } ] }}