Analytics API

Track website analytics including page views, sessions, events, and custom metrics.

📡 Endpoints

Create Analytics Entry

Endpoint: POST /api/analytics

Request Body:

{
  "websiteId": "web_abc123",
  "eventType": "page_view",
  "page": "/projects",
  "referrer": "https://google.com",
  "userAgent": "Mozilla/5.0...",
  "sessionId": "sess_xyz789",
  "metadata": {
    "loadTime": 1234,
    "screenResolution": "1920x1080"
  }
}

Response: 201 Created

{
  "success": true,
  "data": {
    "id": "ana_123",
    "timestamp": "2025-12-18T10:00:00.000Z"
  }
}

Get Analytics

Endpoint: GET /api/analytics

Query Parameters:

?websiteId=web_abc123&startDate=2025-12-01&endDate=2025-12-31

Response:

{
  "success": true,
  "data": {
    "pageViews": 15420,
    "uniqueVisitors": 3821,
    "sessions": 4932,
    "avgSessionDuration": 245,
    "topPages": [
      { "page": "/", "views": 5420 },
      { "page": "/projects", "views": 3821 }
    ],
    "referrers": [
      { "source": "google.com", "count": 1234 },
      { "source": "direct", "count": 987 }
    ]
  }
}

Get Analytics by Website

Endpoint: GET /api/analytics/website/:websiteId


Get Analytics by Date Range

Endpoint: GET /api/analytics/date-range

Query Parameters:

?startDate=2025-12-01&endDate=2025-12-31&websiteId=web_abc123

📊 Analytics Schema

interface AnalyticsEntry {
  id: string;
  websiteId: string;
  eventType: 'page_view' | 'click' | 'form_submit' | 'custom';
  page: string;
  referrer?: string;
  userAgent: string;
  sessionId: string;
  userId?: string;
  metadata?: Record<string, any>;
  createdAt: Date;
}

📈 Metrics Tracked

  • Page Views: Total views per page
  • Unique Visitors: De-duplicated visitors
  • Sessions: User sessions with duration
  • Bounce Rate: Single-page sessions
  • Referrers: Traffic sources
  • Device Types: Desktop, mobile, tablet
  • Load Times: Page performance metrics

On this page