Skip to main content
POST
The SDK and submit.js call this automatically — a view when the form loads, start on the first field interaction, and submit after a successful submission (carrying the same session/visitor identity so the resulting analytics row correlates back to the same visit). You only need this directly if you’re building fully custom analytics or a headless integration that skips the SDK.
string
required
The form’s public ID.
string
required
One of view, start, submit.
string
Client-generated session identifier (typically from sessionStorage) — ties a view/start/submit sequence together as one visit.
string
Client-generated, longer-lived visitor identifier (typically from localStorage) — distinguishes a repeat visitor from a new one across sessions.
Device type and browser are derived server-side from the User-Agent header — never trust or accept a client-supplied value for either. This endpoint always responds 200 immediately and never blocks on the underlying write — analytics tracking is fire-and-forget by design, so a slow or failed write here can never make a form feel unresponsive.