@cnv-vn/track 0.3.0-beta.1 → 0.3.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -97,6 +97,31 @@ interface ContextCampaign {
97
97
  */
98
98
  clickIds?: Record<string, string>;
99
99
  }
100
+ /**
101
+ * Nguồn đưa khách tới lần ĐẦU TIÊN, đính vào `context` của event `page` (xem
102
+ * `core/attribution.ts` và `attachFirstTouch` ở `core/runtime.ts` để biết vì sao là `page`). Đây cũng đúng shape của `attribution` trong thân
103
+ * `POST /js/v1/zalo-qr/session` — một hình dạng dùng cho cả hai đường là cố ý: chỉ cần một chỗ ánh xạ
104
+ * (`toAttributionWire`), nên chỉ có một chỗ có thể ánh xạ sai.
105
+ *
106
+ * Vì sao tên field là `utm_*` chứ không theo Segment Spec như {@link ContextCampaign}: đích đến là
107
+ * `ContactEntity.source_info` của CDP, nơi các field tên đúng là `utm_source`/`utm_medium`/…, và cột
108
+ * `utm_*` trong ClickHouse. Giữ nguyên tên đích thì không hop nào phải dịch — chính chỗ dịch
109
+ * `campaign.name` → `utm_name` đang làm mất `utm_campaign` ở luồng event của tracking-api.
110
+ */
111
+ interface ContextFirstTouch {
112
+ utm_source?: string;
113
+ utm_medium?: string;
114
+ utm_campaign?: string;
115
+ utm_term?: string;
116
+ utm_content?: string;
117
+ utm_id?: string;
118
+ /** `fbclid`/`gclid`/… — vắng mặt khi `allowAdTracking: false`. */
119
+ click_ids?: Record<string, string>;
120
+ referrer?: string;
121
+ landing_page?: string;
122
+ /** epoch-ms lúc GHI nguồn (không phải lúc gửi event) — phân biệt nguồn vừa chớm với nguồn 2 năm trước. */
123
+ first_seen_at?: number;
124
+ }
100
125
  interface ContextLibrary {
101
126
  /** Always `@cnv/track`. */
102
127
  name: string;
@@ -118,6 +143,16 @@ interface PayloadContext {
118
143
  userAgent?: string;
119
144
  library?: ContextLibrary;
120
145
  campaign?: ContextCampaign;
146
+ /**
147
+ * CNV extension — nguồn first-touch, CHỈ đính vào event `page`.
148
+ *
149
+ * `campaign` ở trên là UTM của CHÍNH event này (mất ngay ở pageview thứ hai); `firstTouch` là nguồn
150
+ * ban đầu của cả khách, sống qua nhiều phiên và qua nhiều ngày.
151
+ *
152
+ * Vì sao là `page` chứ không phải `identify`/`track`: xem `attachFirstTouch` trong `core/runtime.ts`
153
+ * — collector bỏ hẳn `identify`, còn `track` tên mới bị allowlist drop im lặng.
154
+ */
155
+ firstTouch?: ContextFirstTouch;
121
156
  /**
122
157
  * Pre-consent flag. Gateway may downgrade storage or skip forwarding to
123
158
  * marketing destinations when `marketing === false`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cnv-vn/track",
3
- "version": "0.3.0-beta.1",
3
+ "version": "0.3.0-beta.2",
4
4
  "description": "CNV Tracking SDK — lightweight, async-first web analytics tracker (<30KB gzipped).",
5
5
  "keywords": [
6
6
  "analytics",