One visitor's page visits
Get all page visits for one visitor, ordered chronologically.
Returns one row per page view with URL, start and end time, navigation type, and performance metrics.
Needs a per-visitor identifier: identity=session or identity=stitch
(whichever the site collects - the caller passes the same identity the
visitor list used). A site collecting neither (the minimal posture) simply
has no visitors to drill into. Any other identity value is rejected with 422.
events carries the visitor's checkout events beside the pages, for the
client to interleave by time. Absent when they were not consulted, see the
field description and docs/analytics/analytics.md. nel_reports does
the same for the visitor's Network Error Logging reports, and
csp_reports for their Content Security Policy reports.
Under identity=stitch an id that is not 32 hex, or is the all-zero
stitch, answers an empty detail. The same answer an unknown visitor gets,
because that is what it is.
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 visitor detail (all page visits).
time_range*Time range for the query
filters?Optional filters
identity?|Identifier kind for visitor_id: 'session' or 'stitch'. Null resolves the same way the visitor list does (site's preferred/available identity).
visitor_id*Visitor IdVisitor ID to retrieve (session_id or stitch)
1 <= lengthSuccessful Response
application/json- response
Response for visitor detail query.
meta*Facts about the result
request*The request as the server resolved it
visitor_id*Visitor IdVisitor identifier (stitch hex or session_id)
pages*array<>Chronological page visits
events?array<>Checkout events of this visitor, oldest first, in the REQUESTED time range and not merged into pages: interleave the two by time to draw the journey. An event before the first page of the range sorts first and is correct, the run began earlier than the range holds. ABSENT (per response_model_exclude_none) when events were not consulted for this request: identity is session (a pixel event carries no session id), a filter has no column on the events table (a URL or page type, in which case the branch is left out whole rather than applied in part), or the table is not installed. [] means they were consulted and this visitor has none, the same distinction payment_submitted_visitors makes on the checkout funnel. A visitor id that is not 32 lowercase hex also answers [], and so do the pages beside it. Two order_placed seconds apart are two facts, not a bug: the checkout re-sends an in-flight event on pagehide, and where the client clock was too far off to trust, the server timed each copy on its own. Identical copies are collapsed.
nel_reports?array<>NEL reports of this visitor, the Network Error Logging reports its browser sent, oldest first, in the REQUESTED time range and not merged into pages: interleave them by timestamp. Each is a row of POST /analytics/nel/reports without visitor_id. At most the latest 100 reports of the window per visitor. POST /analytics/nel/reports with filters.stitch pages through all of them. ABSENT (per response_model_exclude_none) when reports were not consulted: identity is session, a filter has no column on the nel_reports table, or the table is not installed. [] means they were consulted and this visitor has none. A visitor id that is not 32 lowercase hex also answers []. A report joins its visitor over the stitch, which has limits. Only sites with store_stitch carry one, and the zero stitch never joins. The edge rotates the stitch salt 24 hours after its process started and on every restart. A report may upload up to 48 hours after the failure and then carries the stitch of the upload, so a failure before a rotation that uploads after it belongs to no visitor. Only Chromium browsers report.
csp_reports?array<>CSP reports of this visitor, the Content Security Policy violations its browser reported, oldest first, in the REQUESTED time range and not merged into pages: interleave them by timestamp. Each is a row of POST /analytics/csp/reports without visitor_id and original_policy, and one row stands for report_count identical reports. At most the latest 100 rows of the window per visitor. POST /analytics/csp/reports with filters.stitch pages through all of them. ABSENT (per response_model_exclude_none) when reports were not consulted: identity is session, a filter has no column on the csp_reports table, or the table is not installed. [] means they were consulted and this visitor has none. A visitor id that is not 32 lowercase hex also answers []. A CSP report joins its visitor over the stitch, as a NEL report does. Only sites with store_stitch carry one, and the zero stitch never joins. The edge rotates the stitch salt 24 hours after its process started and on every restart. A report-to report may upload up to 48 hours after the violation and then carries the stitch of the upload, while a report-uri report is sent at once. Practically every browser reports.
curl -X POST 'https://api.fastmon.eu/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/analytics/visitors/detail' \ -H 'Content-Type: application/json' \ -d '{ "time_range": { "from": "2019-08-24T14:15:22Z", "to": "2019-08-24T14:15:22Z" }, "visitor_id": "string"}'{ "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": {} }, "visitor_id": "string", "pages": [ { "url": "string", "started_at": "2019-08-24T14:15:22Z", "ended_at": "2019-08-24T14:15:22Z", "nav_type": "string", "lcp": 0, "fcp": 0, "cls": 0, "inp": 0, "ttfb": 0, "ttfb_final": 0, "page_load_time": 0, "cdn_cache_status": "string", "origin_cache_status": "string", "page_type": "string", "origin_host": "string", "logged_in": "string", "cdn_age": 0, "origin_age": 0, "cdn_ttl": 0, "origin_ttl": 0, "checkout_stage": "cart", "cart_interactions": 0, "cart_interaction_errors": 0, "cart_interaction_kinds": { "property1": 0, "property2": 0 }, "country": "string", "asn": 0, "isp": "string", "browser": "string", "browser_version": "string", "device_type": "string", "os": "string", "datacenter": "string", "bot_name": "string", "bot_type": "string", "is_datacenter": false, "is_bot": false, "ua_anomaly": "string", "bot_class": "bot", "lcp_ttfb": 0, "lcp_load_delay": 0, "lcp_load_duration": 0, "lcp_render_delay": 0, "lcp_target": "string", "cls_target": "string", "inp_input_delay": 0, "inp_processing": 0, "inp_presentation": 0, "inp_interaction_type": "string", "inp_target": "string", "error_count": 0, "errors": [ { "fingerprint": "string", "error_type": "string", "ownership": "first_party", "count": 0, "sample_message": "string", "frames": [ { "host": "string", "path": "", "line": 0, "column": 0 } ], "error_class": "" } ] } ], "events": [ { "name": "view_cart", "stage": "cart", "source": "shopify_pixel", "timestamp": "2019-08-24T14:15:22Z" } ], "nel_reports": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "timestamp": "2019-08-24T14:15:22Z", "host": "string", "path": "string", "server_ip": "string", "page_url": "string", "request_url": "string", "error_type": "string", "nel_class": "http_error", "phase": "string", "status_code": 0, "elapsed_ms": 0, "method": "string", "protocol": "string", "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811", "visitor_id": "string", "failure_sampling_rate": 0, "country": "string", "asn": 0, "isp": "string", "device_type": "string", "browser": "string", "browser_version": "string", "os": "string", "bot_name": "string", "bot_type": "string", "datacenter": "string", "ua_anomaly": "string", "bot_class": "bot" } ], "csp_reports": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "timestamp": "2019-08-24T14:15:22Z", "disposition": "enforce", "effective_directive": "string", "blocked_url": "string", "page_url": "string", "source_url": "string", "line": 0, "column": 0, "status_code": 0, "referrer_url": "string", "original_policy": "string", "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811", "visitor_id": "string", "report_count": 0, "country": "string", "asn": 0, "isp": "string", "device_type": "string", "browser": "string", "browser_version": "string", "os": "string", "bot_name": "string", "bot_type": "string", "datacenter": "string", "ua_anomaly": "string", "bot_class": "bot" } ]}