Files
shorturl-analytics/app/api/events/track/readme.md
2025-04-10 11:44:03 +08:00

7.5 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兼容的格式

UTM 测试示例。1. 电子邮件营销链接 https://short.domain.com/summer?utm_source=newsletter&utm_medium=email&utm_campaign=summer_promo&utm_term=discount&utm_content=header 说明: 用于电子邮件营销活动,跟踪用户从邮件头部横幅点击的流量。

  1. 社交媒体广告链接 https://short.domain.com/product?utm_source=instagram&utm_medium=social&utm_campaign=fall_collection&utm_content=story 说明: 用于 Instagram Story 广告,跟踪用户从社交媒体故事广告点击的情况。

  2. 搜索引擎广告链接 https://short.domain.com/service?utm_source=google&utm_medium=cpc&utm_campaign=brand_terms&utm_term=service+name 说明: 用于 Google Ads 广告,跟踪用户从搜索引擎付费广告点击的流量,特别是针对特定搜索词。

  3. QR 码链接 https://short.domain.com/event?utm_source=flyer&utm_medium=print&utm_campaign=local_event&utm_content=qr_code&source=qr 说明: 用于打印材料上的 QR 码,跟踪用户扫描实体宣传资料的情况。

  4. 合作伙伴引荐链接 https://short.domain.com/partner?utm_source=affiliate&utm_medium=referral&utm_campaign=partner_program&utm_content=banner 说明: 用于合作伙伴网站上的推广横幅,跟踪来自联盟营销的转化率。

https://upj.to/5seaii?utm_source=newsletter&utm_medium=email&utm_campaign=summer_promo&utm_term=discount&utm_content=header

https://upj.to/5seaii?utm_source=instagram&utm_medium=social&utm_campaign=fall_collection&utm_content=story

https://upj.to/5seaii?utm_source=google&utm_medium=cpc&utm_campaign=brand_terms&utm_term=service+name

https://upj.to/5seaii?utm_source=flyer&utm_medium=print&utm_campaign=local_event&utm_content=qr_code&source=qr

https://upj.to/5seaii?utm_source=affiliate&utm_medium=referral&utm_campaign=partner_program&utm_content=banner