Skip to content

POST /track/event

Records a single tracking event (click, scroll, page view, etc.) for an active session.

Request Body

json
{
  "session_id": "550e8400-e29b-41d4-a716-446655440000",
  "visitor_id": "a1b2c3d4e5f6...",
  "event_type": "click",
  "page": "https://example.com/home",
  "x": 150,
  "y": 300,
  "scroll_percent": 0,
  "element": "BUTTON#cta.primary",
  "timestamp": 1740000000000
}
FieldRequiredDescription
session_idYesSession ID from /track/session/start
event_typeYesOne of: page_view, scroll, click, mousemove, navigation, visibility_change
visitor_idNoVisitor ID
pageNoCurrent page URL
x, yNoMouse/click coordinates (default 0)
scroll_percentNoScroll depth 0-100 (default 0)
elementNoCSS selector of interacted element
timestampNoClient timestamp (defaults to Date.now())

Response (200)

json
{
  "event_id": "550e8400-e29b-41d4-a716-446655440001",
  "timestamp": 1740000000000
}

Background Processing

  1. Store event to D1 events table
  2. Update session last_seen and exit_page
  3. Append event to R2 session archive

Errors

StatusCondition
400Invalid JSON body
400Missing session_id or event_type