Files
shorturl-analytics/app/api/events/track/readme.md
2025-04-09 19:20:40 +08:00

5.7 KiB
Raw Blame History

事件跟踪接口说明

概述

该接口用于跟踪用户交互事件并将数据存储到 ClickHouse 数据库中。支持记录各种类型的事件,并可包含与链接、用户、团队、项目等相关的详细信息。

接口信息

  • URL: /api/events/track
  • 方法: POST
  • Content-Type: application/json

请求参数

必填字段

参数 类型 描述
event_type string 事件类型,如 'click', 'view', 'conversion'

核心事件字段

参数 类型 必填 描述
event_id string 事件唯一标识符不提供时自动生成UUID
event_time string/Date 事件发生时间格式为ISO日期字符串默认为当前时间
event_attributes object/string 事件相关的其他属性可以是JSON对象或JSON字符串

链接信息

参数 类型 必填 描述
link_id string 短链接的唯一ID
link_slug string 短链接的slug部分
link_label string 短链接的显示名称
link_title string 短链接的标题
link_original_url string 原始目标URL
link_attributes object/string 链接相关的额外属性
link_created_at string/Date 链接创建时间
link_expires_at string/Date 链接过期时间
link_tags array/string 链接标签可以是数组或JSON字符串

用户信息

参数 类型 必填 描述
user_id string 用户ID
user_name string 用户名称
user_email string 用户邮箱
user_attributes object/string 用户相关的其他属性

团队和项目信息

参数 类型 必填 描述
team_id string 团队ID
team_name string 团队名称
team_attributes object/string 团队相关的其他属性
project_id string 项目ID
project_name string 项目名称
project_attributes object/string 项目相关的其他属性

二维码信息

参数 类型 必填 描述
qr_code_id string 二维码ID
qr_code_name string 二维码名称
qr_code_attributes object/string 二维码相关的其他属性

访问者信息

参数 类型 必填 描述
visitor_id string 访问者唯一标识符,不提供时自动生成
session_id string 会话ID不提供时自动生成
ip_address string 访问者IP地址默认从请求头获取
country string 访问者所在国家
city string 访问者所在城市
device_type string 设备类型 (如 desktop, mobile, tablet)
browser string 浏览器名称
os string 操作系统
user_agent string 用户代理字符串,默认从请求头获取

引荐来源信息

参数 类型 必填 描述
referrer string 引荐URL默认从请求头获取
utm_source string UTM来源参数
utm_medium string UTM媒介参数
utm_campaign string UTM活动参数
utm_term string UTM术语参数
utm_content string UTM内容参数

交互信息

参数 类型 必填 描述
time_spent_sec number 用户在页面上停留的时间默认0
is_bounce boolean 是否是跳出只访问一个页面默认true
is_qr_scan boolean 是否来自二维码扫描默认false
conversion_type string 转化类型
conversion_value number 转化价值默认0

响应格式

成功响应 (201 Created)

{
  "success": true,
  "message": "Event tracked successfully",
  "event_id": "uuid-of-tracked-event"
}

错误响应

缺少必填字段 (400 Bad Request)

{
  "error": "Missing required field: event_type"
}

服务器错误 (500 Internal Server Error)

{
  "error": "Failed to track event",
  "details": "具体错误信息"
}

使用示例

基本事件跟踪请求

fetch('/api/events/track', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    event_type: 'click',
    link_id: 'abc123',
    link_slug: 'promo-summer',
    link_original_url: 'https://example.com/summer-promotion'
  })
})

详细事件跟踪请求

fetch('/api/events/track', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    event_type: 'conversion',
    link_id: 'abc123',
    link_slug: 'promo-summer',
    link_original_url: 'https://example.com/summer-promotion',
    event_attributes: {
      page: '/checkout',
      product_id: 'xyz789'
    },
    user_id: 'user123',
    team_id: 'team456',
    project_id: 'proj789',
    visitor_id: 'vis987',
    is_bounce: false,
    time_spent_sec: 120,
    conversion_type: 'purchase',
    conversion_value: 99.99,
    utm_source: 'email',
    utm_campaign: 'summer_sale'
  })
})

注意事项

  • 所有对象类型的字段(如 event_attributes可以作为对象或预先格式化的JSON字符串传递
  • 如果不提供 event_idvisitor_idsession_id,系统将自动生成
  • 时间戳字段接受ISO格式的日期字符串并会被转换为ClickHouse兼容的格式