@subiz/widget-v4 4.1.203 → 4.1.205
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.
- package/api.md +646 -706
- package/compiled_src/chatbox/Widget.js +5 -1
- package/compiled_src/chatbox/main.js +11 -1
- package/compiled_src/lib.js +12 -13
- package/compiled_src/plugin.js +4 -1
- package/compiled_src/store/store.js +20 -4
- package/compiled_src/util/event.test.js +38 -0
- package/dist/{19df158c2ea.27.js → 1a046b44d1d.27.js} +1 -1
- package/dist/{19df158c2ea.339.js → 1a046b44d1d.339.js} +1 -1
- package/dist/{19df158c2ea.459.js → 1a046b44d1d.459.js} +1 -1
- package/dist/1a046b44d1d.app.js +1 -0
- package/dist/{19df158c2ea.chat.html → 1a046b44d1d.chat.html} +1 -1
- package/dist/1a046b44d1d.chat.js +1 -0
- package/dist/{19df158c2ea.form.html → 1a046b44d1d.form.html} +1 -1
- package/dist/1a046b44d1d.form.js +1 -0
- package/dist/{19df158c2ea.index.html → 1a046b44d1d.index.html} +1 -1
- package/dist/{19df158c2ea.library.html → 1a046b44d1d.library.html} +1 -1
- package/dist/1a046b44d1d.library.js +1 -0
- package/dist/{19df158c2ea.preview.html → 1a046b44d1d.preview.html} +1 -1
- package/dist/1a046b44d1d.preview.js +1 -0
- package/dist/1a046b44d1d.webview.js +1 -0
- package/dist/27.js +1 -1
- package/dist/459.js +1 -1
- package/dist/HASH +1 -1
- package/dist/screenshoot.js +94 -9
- package/package.json +4 -4
- package/src/chatbox/Widget.js +5 -1
- package/src/chatbox/main.js +13 -1
- package/src/lib.js +12 -13
- package/src/plugin.js +5 -1
- package/src/store/store.js +28 -19
- package/src/util/event.test.js +31 -0
- package/dist/19df158c2ea.app.js +0 -1
- package/dist/19df158c2ea.chat.js +0 -1
- package/dist/19df158c2ea.form.js +0 -1
- package/dist/19df158c2ea.library.js +0 -1
- package/dist/19df158c2ea.preview.js +0 -1
- package/dist/19df158c2ea.webview.js +0 -1
- /package/dist/{19df158c2ea.127.js → 1a046b44d1d.127.js} +0 -0
- /package/dist/{19df158c2ea.132.js → 1a046b44d1d.132.js} +0 -0
- /package/dist/{19df158c2ea.185.js → 1a046b44d1d.185.js} +0 -0
- /package/dist/{19df158c2ea.278.js → 1a046b44d1d.278.js} +0 -0
- /package/dist/{19df158c2ea.490.js → 1a046b44d1d.490.js} +0 -0
- /package/dist/{19df158c2ea.74.js → 1a046b44d1d.74.js} +0 -0
- /package/dist/{19df158c2ea.997.js → 1a046b44d1d.997.js} +0 -0
package/api.md
CHANGED
|
@@ -7,30 +7,24 @@ Tài liệu này hướng dẫn website gửi sự kiện người dùng về Su
|
|
|
7
7
|
API chính để gửi sự kiện là:
|
|
8
8
|
|
|
9
9
|
```js
|
|
10
|
-
subiz('event', {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
price: 1500000,
|
|
17
|
-
currency: 'VND',
|
|
18
|
-
},
|
|
10
|
+
subiz('event', 'product_viewed', {
|
|
11
|
+
product_id: 'pd2345',
|
|
12
|
+
sku: 's5345',
|
|
13
|
+
name: 'Bàn phím cơ không dây',
|
|
14
|
+
price: 1500000,
|
|
15
|
+
currency: 'VND',
|
|
19
16
|
})
|
|
20
17
|
```
|
|
21
18
|
|
|
22
19
|
`subiz('event', ...)` trả về `Promise`.
|
|
23
20
|
|
|
24
21
|
```js
|
|
25
|
-
subiz('event', {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
price: 1500000,
|
|
32
|
-
currency: 'VND',
|
|
33
|
-
},
|
|
22
|
+
subiz('event', 'add_to_cart', {
|
|
23
|
+
product_id: 'pd2345',
|
|
24
|
+
sku: 's5345',
|
|
25
|
+
quantity: 1,
|
|
26
|
+
price: 1500000,
|
|
27
|
+
currency: 'VND',
|
|
34
28
|
}).then(function (result) {
|
|
35
29
|
console.log('Đã gửi event', result)
|
|
36
30
|
}).catch(function (error) {
|
|
@@ -41,32 +35,78 @@ subiz('event', {
|
|
|
41
35
|
## Cấu trúc event
|
|
42
36
|
|
|
43
37
|
```js
|
|
44
|
-
subiz('event', {
|
|
45
|
-
type: 'event_name',
|
|
46
|
-
event_source_id: 'evt_1234',
|
|
47
|
-
payload: {},
|
|
48
|
-
})
|
|
38
|
+
subiz('event', 'event_name', {}, {event_source_id: 'evt_1234'})
|
|
49
39
|
```
|
|
50
40
|
|
|
51
|
-
|
|
41
|
+
Chữ ký:
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
subiz('event', type, payload, options)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
| Tham số | Bắt buộc | Mô tả |
|
|
52
48
|
| --- | --- | --- |
|
|
53
49
|
| `type` | Có | Tên sự kiện. Dùng `snake_case`, chỉ gồm chữ thường, số và `_`, tối đa 64 ký tự. |
|
|
54
50
|
| `payload` | Không | Dữ liệu chi tiết của event. Giá trị là object JSON. |
|
|
55
|
-
| `event_source_id` | Không | ID duy nhất của event ở hệ thống của website, dùng để chống gửi trùng. |
|
|
51
|
+
| `options.event_source_id` | Không | ID duy nhất của event ở hệ thống của website, dùng để chống gửi trùng. |
|
|
52
|
+
| `options.event_time` | Không | Thời điểm event thực sự xảy ra. Dùng ISO 8601 có timezone, ví dụ `2026-05-23T10:30:00+07:00` hoặc `2026-05-23T03:30:00Z`. Nếu không gửi, Subiz dùng thời điểm nhận event. |
|
|
56
53
|
|
|
57
54
|
Ví dụ chống trùng event:
|
|
58
55
|
|
|
59
56
|
```js
|
|
60
|
-
subiz('event', {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
subiz('event', 'content_viewed', {
|
|
58
|
+
url: 'https://example.com/products/pd2345',
|
|
59
|
+
title: 'Bàn phím cơ không dây',
|
|
60
|
+
}, {event_source_id: 'evt_1234'})
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Ví dụ gửi event xảy ra trước thời điểm gửi:
|
|
64
|
+
|
|
65
|
+
```js
|
|
66
|
+
subiz('event', 'order_completed', {
|
|
67
|
+
order_id: 'ord_99482',
|
|
68
|
+
total: 3000000,
|
|
69
|
+
currency: 'VND',
|
|
70
|
+
}, {
|
|
71
|
+
event_source_id: 'order_completed_ord_99482',
|
|
72
|
+
event_time: '2026-05-23T10:30:00+07:00',
|
|
67
73
|
})
|
|
68
74
|
```
|
|
69
75
|
|
|
76
|
+
## Chuẩn dữ liệu payload
|
|
77
|
+
|
|
78
|
+
`payload` phải là object JSON và chỉ nên chứa dữ liệu cần thiết để phân tích, chăm sóc khách hàng hoặc cá nhân hóa trải nghiệm.
|
|
79
|
+
|
|
80
|
+
Quy ước kiểu dữ liệu:
|
|
81
|
+
|
|
82
|
+
| Kiểu dữ liệu | Quy ước |
|
|
83
|
+
| --- | --- |
|
|
84
|
+
| String | Dùng UTF-8. Tránh gửi string quá dài; với nội dung tự do như message/comment, chỉ gửi khi thực sự cần cho nghiệp vụ. |
|
|
85
|
+
| Number | Dùng number JSON, không gửi số dưới dạng string nếu cần tính toán hoặc lọc theo khoảng. |
|
|
86
|
+
| Boolean | Dùng `true` hoặc `false`. |
|
|
87
|
+
| Date | Dùng chuỗi ngày ISO 8601 dạng `YYYY-MM-DD`, ví dụ `2026-05-23`. |
|
|
88
|
+
| Date-time | Dùng ISO 8601 có timezone, ví dụ `2026-05-23T10:30:00+07:00` hoặc `2026-05-23T03:30:00Z`. Nên ưu tiên UTC (`Z`) nếu hệ thống nguồn có thể xuất UTC. |
|
|
89
|
+
| Currency | Dùng mã tiền tệ ISO 4217 viết hoa, ví dụ `VND`, `USD`, `EUR`, `JPY`. |
|
|
90
|
+
| Amount | Dùng số theo đơn vị tiền thực tế, không dùng minor unit. Ví dụ `1500000` cho 1.500.000 VND và `19.99` cho 19.99 USD. |
|
|
91
|
+
| Object | Có thể lồng object, nhưng nên giữ cấu trúc nông và ổn định. Không gửi DOM node, class instance, function hoặc object có vòng lặp tham chiếu. |
|
|
92
|
+
| Array | Dùng cho danh sách cùng kiểu dữ liệu, ví dụ `items`. Mỗi item nên có schema ổn định giữa các lần gửi. |
|
|
93
|
+
| `null` | Chỉ dùng khi muốn thể hiện field có chủ đích nhưng chưa có giá trị. Nếu field không liên quan hoặc không có dữ liệu, nên bỏ field đó khỏi `payload`. |
|
|
94
|
+
|
|
95
|
+
Giới hạn khuyến nghị:
|
|
96
|
+
|
|
97
|
+
- `payload` nên nhỏ hơn 32 KB sau khi JSON stringify.
|
|
98
|
+
- Một event không nên gửi quá 100 item trong array. Với đơn hàng lớn, gửi các field tổng hợp trên event chính và đồng bộ chi tiết bằng luồng backend riêng nếu cần.
|
|
99
|
+
- Object lồng nhau không nên sâu quá 5 cấp.
|
|
100
|
+
- Tên field nên dùng `snake_case`, chỉ gồm chữ thường, số và `_`.
|
|
101
|
+
- Không dùng field có kiểu dữ liệu thay đổi giữa các event cùng loại, ví dụ lúc là string, lúc là object.
|
|
102
|
+
|
|
103
|
+
Xử lý dữ liệu cá nhân:
|
|
104
|
+
|
|
105
|
+
- Không gửi mật khẩu, OTP, token đăng nhập, refresh token, cookie, số thẻ thanh toán, CVV hoặc dữ liệu nhạy cảm không cần thiết.
|
|
106
|
+
- Nếu cần gửi email hoặc số điện thoại để định danh, chỉ gửi khi website đã có quyền sử dụng dữ liệu đó.
|
|
107
|
+
- Nếu chỉ cần phân tích mà không cần định danh trực tiếp, nên hash hoặc mask dữ liệu trước khi gửi. Ví dụ gửi `email_hash` thay vì `email`, hoặc `phone_masked: '******8935'` thay vì số điện thoại đầy đủ.
|
|
108
|
+
- Không gửi toàn bộ địa chỉ nếu chỉ cần phân tích theo vùng; ưu tiên các field ít nhạy cảm hơn như `province`, `city`, `country`.
|
|
109
|
+
|
|
70
110
|
## Quy ước đặt tên
|
|
71
111
|
|
|
72
112
|
Tên event nên mô tả hành động đã xảy ra, ở dạng quá khứ hoặc trạng thái hoàn tất.
|
|
@@ -112,14 +152,11 @@ Các field thường dùng:
|
|
|
112
152
|
Ví dụ:
|
|
113
153
|
|
|
114
154
|
```js
|
|
115
|
-
subiz('event', {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
url: 'https://example.com/products/pd2345',
|
|
121
|
-
utm_campaign: 'summer_2026',
|
|
122
|
-
},
|
|
155
|
+
subiz('event', 'product_viewed', {
|
|
156
|
+
product_id: 'pd2345',
|
|
157
|
+
name: 'Bàn phím cơ không dây',
|
|
158
|
+
url: 'https://example.com/products/pd2345',
|
|
159
|
+
utm_campaign: 'summer_2026',
|
|
123
160
|
})
|
|
124
161
|
```
|
|
125
162
|
|
|
@@ -160,530 +197,478 @@ function onRouteChange(route) {
|
|
|
160
197
|
## Cập nhật thông tin khách hàng
|
|
161
198
|
|
|
162
199
|
```js
|
|
163
|
-
subiz('event', {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
phone: '85345345535',
|
|
168
|
-
fullname: 'Thanh',
|
|
169
|
-
},
|
|
200
|
+
subiz('event', 'user_updated', {
|
|
201
|
+
email: 'alice@example.com',
|
|
202
|
+
phone: '85345345535',
|
|
203
|
+
fullname: 'Thanh',
|
|
170
204
|
})
|
|
171
205
|
```
|
|
172
206
|
|
|
173
207
|
## Thương mại điện tử
|
|
174
208
|
|
|
175
|
-
Các event bên dưới là ví dụ khuyến nghị. Website có thể gửi thêm custom event bằng cùng cấu trúc `subiz('event',
|
|
209
|
+
Các event bên dưới là ví dụ khuyến nghị. Website có thể gửi thêm custom event bằng cùng cấu trúc `subiz('event', type, payload)`.
|
|
176
210
|
|
|
177
211
|
Các field trong ví dụ không bắt buộc toàn bộ. Website nên gửi những field mình có và giữ tên field ổn định giữa các lần gửi. Giá trị tiền tệ dùng số theo đơn vị tiền thực tế, ví dụ `{price: 1500000, currency: 'VND'}`.
|
|
178
212
|
|
|
213
|
+
Quy ước ID:
|
|
214
|
+
|
|
215
|
+
| Trường | Mô tả |
|
|
216
|
+
| --- | --- |
|
|
217
|
+
| `product_id` | ID sản phẩm. Dùng cho event xảy ra trực tiếp trên một sản phẩm và trong từng item của giỏ hàng/đơn hàng. |
|
|
218
|
+
| `sku` | Mã SKU/biến thể sản phẩm nếu có. |
|
|
219
|
+
| `category_id` | ID danh mục sản phẩm. Không dùng `id` để đại diện cho danh mục. |
|
|
220
|
+
| `category_name` | Tên hiển thị của danh mục sản phẩm. |
|
|
221
|
+
| `cart_id` | ID giỏ hàng. Không dùng `id` để đại diện cho giỏ hàng. |
|
|
222
|
+
| `checkout_id` | ID phiên checkout. |
|
|
223
|
+
| `order_id` | ID đơn hàng. Không dùng `id` để đại diện cho đơn hàng. |
|
|
224
|
+
| `return_id` | ID yêu cầu đổi trả. |
|
|
225
|
+
| `refund_id` | ID giao dịch hoàn tiền. |
|
|
226
|
+
|
|
227
|
+
Quy ước tiền tệ:
|
|
228
|
+
|
|
229
|
+
| Trường | Mô tả |
|
|
230
|
+
| --- | --- |
|
|
231
|
+
| `price` | Đơn giá của một sản phẩm hoặc item. |
|
|
232
|
+
| `current_price` | Giá hiện tại của sản phẩm tại thời điểm event xảy ra. |
|
|
233
|
+
| `target_price` | Giá mong muốn khi user đăng ký nhận thông báo giảm giá. |
|
|
234
|
+
| `total` | Tổng tiền của giỏ hàng, checkout, đơn hàng, thanh toán hoặc hóa đơn. |
|
|
235
|
+
| `discount_amount` | Số tiền giảm giá. |
|
|
236
|
+
| `shipping_fee` | Phí vận chuyển. |
|
|
237
|
+
| `refund_amount` | Số tiền hoàn lại. |
|
|
238
|
+
| `estimated_value` | Giá trị ước tính của deal/cơ hội bán hàng. |
|
|
239
|
+
| `renewal_value` | Giá trị hợp đồng khi gia hạn. |
|
|
240
|
+
| `mrr_delta` | Chênh lệch doanh thu định kỳ hàng tháng sau khi nâng/hạ cấp hoặc thêm seat. |
|
|
241
|
+
|
|
179
242
|
Nên ưu tiên các event có thể dùng trực tiếp cho marketing segmentation, funnel và recommendation:
|
|
180
243
|
|
|
181
244
|
| Câu hỏi marketing | Event nên dùng |
|
|
182
245
|
| --- | --- |
|
|
183
246
|
| Sản phẩm nào đang hot trend? | `product_viewed`, `product_searched`, `add_to_wishlist`, `add_to_cart`, `order_completed` |
|
|
184
247
|
| User quan tâm sản phẩm nào nhưng chưa mua? | `product_viewed`, `add_to_wishlist`, `add_to_cart`, `checkout_started`, `order_completed` |
|
|
185
|
-
| User bỏ giỏ hàng? | `add_to_cart`, `checkout_started
|
|
248
|
+
| User bỏ giỏ hàng? | `add_to_cart`, `checkout_started`; loại trừ user đã có `payment_completed` hoặc `order_completed` cùng `cart_id`/`checkout_id` |
|
|
186
249
|
| Sản phẩm nào có nhu cầu cao nhưng chuyển đổi thấp? | `product_viewed`, `product_inquired`, `add_to_cart`, `order_completed` |
|
|
187
250
|
| Sản phẩm nào đang thiếu hàng nhưng vẫn có nhu cầu? | `back_in_stock_subscribed`, `product_inquired`, `product_viewed` |
|
|
188
251
|
| User nào nhạy cảm với giá? | `price_drop_subscribed`, `coupon_applied`, `add_to_wishlist` |
|
|
189
252
|
| Campaign/coupon nào tạo doanh thu? | `coupon_applied`, `order_completed` |
|
|
190
253
|
| Sản phẩm nào hay bị trả/hủy? | `order_cancelled`, `order_refunded`, `return_requested` |
|
|
191
254
|
|
|
192
|
-
Để query marketing dễ hơn, các event liên quan đến một sản phẩm nên gửi ổn định các field `
|
|
255
|
+
Để query marketing dễ hơn, các event liên quan đến một sản phẩm nên gửi ổn định các field `product_id`, `sku`, `name`, `category`, `brand` trong `payload`. Với `order_completed`, luôn gửi danh sách `items` và mỗi item nên có `product_id`, `sku`, `name`, `category`, `quantity`, `price`.
|
|
193
256
|
|
|
194
257
|
### Xem sản phẩm
|
|
195
258
|
|
|
196
259
|
```js
|
|
197
|
-
subiz('event', {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
price: 1500000,
|
|
206
|
-
currency: 'VND',
|
|
207
|
-
},
|
|
260
|
+
subiz('event', 'product_viewed', {
|
|
261
|
+
product_id: 'pd2345',
|
|
262
|
+
sku: 's5345',
|
|
263
|
+
name: 'Bàn phím cơ không dây',
|
|
264
|
+
category: 'electronics',
|
|
265
|
+
brand: 'Keychron',
|
|
266
|
+
price: 1500000,
|
|
267
|
+
currency: 'VND',
|
|
208
268
|
})
|
|
209
269
|
```
|
|
210
270
|
|
|
211
271
|
### Xem danh mục sản phẩm
|
|
212
272
|
|
|
213
273
|
```js
|
|
214
|
-
subiz('event', {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
name: 'Electronics',
|
|
219
|
-
url: 'https://example.com/categories/electronics',
|
|
220
|
-
},
|
|
274
|
+
subiz('event', 'product_category_viewed', {
|
|
275
|
+
category_id: 'cat_electronics',
|
|
276
|
+
category_name: 'Electronics',
|
|
277
|
+
url: 'https://example.com/categories/electronics',
|
|
221
278
|
})
|
|
222
279
|
```
|
|
223
280
|
|
|
224
281
|
### Xem danh sách sản phẩm
|
|
225
282
|
|
|
226
283
|
```js
|
|
227
|
-
subiz('event', {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
category: 'electronics',
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
],
|
|
237
|
-
currency: 'VND',
|
|
238
|
-
},
|
|
284
|
+
subiz('event', 'product_list_viewed', {
|
|
285
|
+
list_id: 'homepage_featured',
|
|
286
|
+
list_name: 'Sản phẩm nổi bật',
|
|
287
|
+
category: 'electronics',
|
|
288
|
+
items: [
|
|
289
|
+
{product_id: 'pd2345', sku: 's5345', name: 'Bàn phím cơ không dây', category: 'electronics', position: 1, price: 1500000},
|
|
290
|
+
{product_id: 'pd9876', sku: 's1234', name: 'Chuột không dây', category: 'electronics', position: 2, price: 450000},
|
|
291
|
+
],
|
|
292
|
+
currency: 'VND',
|
|
239
293
|
})
|
|
240
294
|
```
|
|
241
295
|
|
|
242
296
|
### Tìm kiếm sản phẩm
|
|
243
297
|
|
|
244
298
|
```js
|
|
245
|
-
subiz('event', {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
category_filter: 'electronics',
|
|
250
|
-
sort_by: 'price_asc',
|
|
251
|
-
},
|
|
299
|
+
subiz('event', 'product_searched', {
|
|
300
|
+
keyword: 'bàn phím cơ không dây',
|
|
301
|
+
category_filter: 'electronics',
|
|
302
|
+
sort_by: 'price_asc',
|
|
252
303
|
})
|
|
253
304
|
```
|
|
254
305
|
|
|
255
306
|
### Lọc hoặc sắp xếp sản phẩm
|
|
256
307
|
|
|
257
308
|
```js
|
|
258
|
-
subiz('event', {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
price_min: 500000,
|
|
265
|
-
price_max: 2000000,
|
|
266
|
-
},
|
|
267
|
-
sort_by: 'price_asc',
|
|
268
|
-
result_count: 24,
|
|
309
|
+
subiz('event', 'product_list_filtered', {
|
|
310
|
+
category: 'electronics',
|
|
311
|
+
filters: {
|
|
312
|
+
brand: ['logitech', 'keychron'],
|
|
313
|
+
price_min: 500000,
|
|
314
|
+
price_max: 2000000,
|
|
269
315
|
},
|
|
316
|
+
sort_by: 'price_asc',
|
|
317
|
+
result_count: 24,
|
|
270
318
|
})
|
|
271
319
|
```
|
|
272
320
|
|
|
273
321
|
### Hỏi về sản phẩm
|
|
274
322
|
|
|
275
323
|
```js
|
|
276
|
-
subiz('event', {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
324
|
+
subiz('event', 'product_inquired', {
|
|
325
|
+
product_id: 'pd2345',
|
|
326
|
+
sku: 's5345',
|
|
327
|
+
name: 'Bàn phím cơ không dây',
|
|
328
|
+
category: 'electronics',
|
|
329
|
+
brand: 'Keychron',
|
|
330
|
+
channel: 'zalo_oa',
|
|
331
|
+
inquiry_type: 'stock_check',
|
|
332
|
+
message: 'Bàn phím này còn sẵn hàng ở kho không shop?',
|
|
333
|
+
has_agent_replied: false,
|
|
334
|
+
agent_id: null,
|
|
287
335
|
})
|
|
288
336
|
```
|
|
289
337
|
|
|
290
338
|
### Đăng ký nhận thông báo còn hàng
|
|
291
339
|
|
|
292
340
|
```js
|
|
293
|
-
subiz('event', {
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
price: 1500000,
|
|
302
|
-
currency: 'VND',
|
|
303
|
-
},
|
|
341
|
+
subiz('event', 'back_in_stock_subscribed', {
|
|
342
|
+
product_id: 'pd2345',
|
|
343
|
+
sku: 's5345',
|
|
344
|
+
name: 'Bàn phím cơ không dây',
|
|
345
|
+
category: 'electronics',
|
|
346
|
+
brand: 'Keychron',
|
|
347
|
+
price: 1500000,
|
|
348
|
+
currency: 'VND',
|
|
304
349
|
})
|
|
305
350
|
```
|
|
306
351
|
|
|
307
352
|
### Đăng ký nhận thông báo giảm giá
|
|
308
353
|
|
|
309
354
|
```js
|
|
310
|
-
subiz('event', {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
target_price: 1200000,
|
|
320
|
-
currency: 'VND',
|
|
321
|
-
},
|
|
355
|
+
subiz('event', 'price_drop_subscribed', {
|
|
356
|
+
product_id: 'pd2345',
|
|
357
|
+
sku: 's5345',
|
|
358
|
+
name: 'Bàn phím cơ không dây',
|
|
359
|
+
category: 'electronics',
|
|
360
|
+
brand: 'Keychron',
|
|
361
|
+
current_price: 1500000,
|
|
362
|
+
target_price: 1200000,
|
|
363
|
+
currency: 'VND',
|
|
322
364
|
})
|
|
323
365
|
```
|
|
324
366
|
|
|
325
367
|
### Thêm vào giỏ hàng
|
|
326
368
|
|
|
327
369
|
```js
|
|
328
|
-
subiz('event', {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
brand: 'Keychron',
|
|
339
|
-
},
|
|
370
|
+
subiz('event', 'add_to_cart', {
|
|
371
|
+
cart_id: 'cart_12345',
|
|
372
|
+
product_id: 'pd2345',
|
|
373
|
+
sku: 's5345',
|
|
374
|
+
name: 'Bàn phím cơ không dây',
|
|
375
|
+
price: 1500000,
|
|
376
|
+
currency: 'VND',
|
|
377
|
+
quantity: 1,
|
|
378
|
+
category: 'electronics',
|
|
379
|
+
brand: 'Keychron',
|
|
340
380
|
})
|
|
341
381
|
```
|
|
342
382
|
|
|
343
383
|
### Xem giỏ hàng
|
|
344
384
|
|
|
345
385
|
```js
|
|
346
|
-
subiz('event', {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
{id: 'pd9876', sku: 's1234', name: 'Chuột không dây', category: 'electronics', quantity: 1, price: 1500000},
|
|
356
|
-
],
|
|
357
|
-
},
|
|
386
|
+
subiz('event', 'cart_viewed', {
|
|
387
|
+
cart_id: 'cart_12345',
|
|
388
|
+
total: 3000000,
|
|
389
|
+
currency: 'VND',
|
|
390
|
+
cart_size: 2,
|
|
391
|
+
items: [
|
|
392
|
+
{product_id: 'pd2345', sku: 's5345', name: 'Bàn phím cơ không dây', category: 'electronics', quantity: 1, price: 1500000},
|
|
393
|
+
{product_id: 'pd9876', sku: 's1234', name: 'Chuột không dây', category: 'electronics', quantity: 1, price: 1500000},
|
|
394
|
+
],
|
|
358
395
|
})
|
|
359
396
|
```
|
|
360
397
|
|
|
361
398
|
### Xóa khỏi giỏ hàng
|
|
362
399
|
|
|
363
400
|
```js
|
|
364
|
-
subiz('event', {
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
},
|
|
401
|
+
subiz('event', 'remove_from_cart', {
|
|
402
|
+
cart_id: 'cart_12345',
|
|
403
|
+
product_id: 'pd2345',
|
|
404
|
+
sku: 's5345',
|
|
405
|
+
name: 'Bàn phím cơ không dây',
|
|
406
|
+
price: 1500000,
|
|
407
|
+
currency: 'VND',
|
|
408
|
+
quantity: 1,
|
|
409
|
+
category: 'electronics',
|
|
410
|
+
brand: 'Keychron',
|
|
375
411
|
})
|
|
376
412
|
```
|
|
377
413
|
|
|
378
414
|
### Thêm vào danh sách yêu thích
|
|
379
415
|
|
|
380
416
|
```js
|
|
381
|
-
subiz('event', {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
quantity: 1,
|
|
390
|
-
category: 'electronics',
|
|
391
|
-
brand: 'Keychron',
|
|
392
|
-
},
|
|
417
|
+
subiz('event', 'add_to_wishlist', {
|
|
418
|
+
product_id: 'pd2345',
|
|
419
|
+
sku: 's5345',
|
|
420
|
+
name: 'Bàn phím cơ không dây',
|
|
421
|
+
price: 1500000,
|
|
422
|
+
currency: 'VND',
|
|
423
|
+
category: 'electronics',
|
|
424
|
+
brand: 'Keychron',
|
|
393
425
|
})
|
|
394
426
|
```
|
|
395
427
|
|
|
396
428
|
### Xóa khỏi danh sách yêu thích
|
|
397
429
|
|
|
398
430
|
```js
|
|
399
|
-
subiz('event', {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
category: 'electronics',
|
|
408
|
-
},
|
|
431
|
+
subiz('event', 'remove_from_wishlist', {
|
|
432
|
+
product_id: 'pd2345',
|
|
433
|
+
sku: 's5345',
|
|
434
|
+
name: 'Bàn phím cơ không dây',
|
|
435
|
+
price: 1500000,
|
|
436
|
+
currency: 'VND',
|
|
437
|
+
category: 'electronics',
|
|
438
|
+
brand: 'Keychron',
|
|
409
439
|
})
|
|
410
440
|
```
|
|
411
441
|
|
|
412
442
|
### Áp dụng mã giảm giá
|
|
413
443
|
|
|
414
444
|
```js
|
|
415
|
-
subiz('event', {
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
currency: 'VND',
|
|
421
|
-
cart_id: 'cart_12345',
|
|
422
|
-
},
|
|
445
|
+
subiz('event', 'coupon_applied', {
|
|
446
|
+
coupon_code: 'SUMMER2026',
|
|
447
|
+
discount_amount: 150000,
|
|
448
|
+
currency: 'VND',
|
|
449
|
+
cart_id: 'cart_12345',
|
|
423
450
|
})
|
|
424
451
|
```
|
|
425
452
|
|
|
426
453
|
### Xóa mã giảm giá
|
|
427
454
|
|
|
428
455
|
```js
|
|
429
|
-
subiz('event', {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
coupon_code: 'SUMMER2026',
|
|
433
|
-
cart_id: 'cart_12345',
|
|
434
|
-
},
|
|
456
|
+
subiz('event', 'coupon_removed', {
|
|
457
|
+
coupon_code: 'SUMMER2026',
|
|
458
|
+
cart_id: 'cart_12345',
|
|
435
459
|
})
|
|
436
460
|
```
|
|
437
461
|
|
|
438
462
|
### Bắt đầu thanh toán
|
|
439
463
|
|
|
440
464
|
```js
|
|
441
|
-
subiz('event', {
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
cart_size: 2,
|
|
448
|
-
},
|
|
465
|
+
subiz('event', 'checkout_started', {
|
|
466
|
+
checkout_id: 'chk_556677',
|
|
467
|
+
cart_id: 'cart_12345',
|
|
468
|
+
total: 3000000,
|
|
469
|
+
currency: 'VND',
|
|
470
|
+
cart_size: 2,
|
|
449
471
|
})
|
|
450
472
|
```
|
|
451
473
|
|
|
452
474
|
### Thêm thông tin giao hàng
|
|
453
475
|
|
|
454
476
|
```js
|
|
455
|
-
subiz('event', {
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
shipping_fee: 30000,
|
|
461
|
-
currency: 'VND',
|
|
462
|
-
},
|
|
477
|
+
subiz('event', 'shipping_info_added', {
|
|
478
|
+
checkout_id: 'chk_556677',
|
|
479
|
+
shipping_method: 'standard',
|
|
480
|
+
shipping_fee: 30000,
|
|
481
|
+
currency: 'VND',
|
|
463
482
|
})
|
|
464
483
|
```
|
|
465
484
|
|
|
466
485
|
### Thêm thông tin thanh toán
|
|
467
486
|
|
|
468
487
|
```js
|
|
469
|
-
subiz('event', {
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
total_value: 3000000,
|
|
475
|
-
currency: 'VND',
|
|
476
|
-
},
|
|
488
|
+
subiz('event', 'payment_info_added', {
|
|
489
|
+
checkout_id: 'chk_556677',
|
|
490
|
+
payment_method: 'credit_card',
|
|
491
|
+
total: 3000000,
|
|
492
|
+
currency: 'VND',
|
|
477
493
|
})
|
|
478
494
|
```
|
|
479
495
|
|
|
480
496
|
### Khởi tạo thanh toán
|
|
481
497
|
|
|
482
498
|
```js
|
|
483
|
-
subiz('event', {
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
currency: 'VND',
|
|
490
|
-
},
|
|
499
|
+
subiz('event', 'payment_initiated', {
|
|
500
|
+
transaction_id: 'txn_12345',
|
|
501
|
+
checkout_id: 'chk_556677',
|
|
502
|
+
cart_id: 'cart_12345',
|
|
503
|
+
total: 3000000,
|
|
504
|
+
currency: 'VND',
|
|
491
505
|
})
|
|
492
506
|
```
|
|
493
507
|
|
|
508
|
+
Nếu hệ thống đã tạo đơn trước bước thanh toán, có thể gửi thêm `order_id`. Nếu hệ thống chỉ tạo đơn sau khi thanh toán thành công, gửi `checkout_id` và `cart_id` trước, sau đó bổ sung `order_id` ở `payment_completed` hoặc `order_completed`.
|
|
509
|
+
|
|
494
510
|
### Thanh toán thất bại
|
|
495
511
|
|
|
496
512
|
```js
|
|
497
|
-
subiz('event', {
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
},
|
|
513
|
+
subiz('event', 'payment_failed', {
|
|
514
|
+
transaction_id: 'txn_12345',
|
|
515
|
+
checkout_id: 'chk_556677',
|
|
516
|
+
cart_id: 'cart_12345',
|
|
517
|
+
order_id: 'ord_99482',
|
|
518
|
+
total: 3000000,
|
|
519
|
+
currency: 'VND',
|
|
520
|
+
error_code: 'card_declined',
|
|
521
|
+
error_message: 'Thẻ bị từ chối',
|
|
507
522
|
})
|
|
508
523
|
```
|
|
509
524
|
|
|
510
525
|
### Hoàn tất thanh toán
|
|
511
526
|
|
|
512
527
|
```js
|
|
513
|
-
subiz('event', {
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
},
|
|
528
|
+
subiz('event', 'payment_completed', {
|
|
529
|
+
transaction_id: 'txn_12345',
|
|
530
|
+
checkout_id: 'chk_556677',
|
|
531
|
+
cart_id: 'cart_12345',
|
|
532
|
+
order_id: 'ord_99482',
|
|
533
|
+
total: 3000000,
|
|
534
|
+
currency: 'VND',
|
|
535
|
+
status: 'success',
|
|
522
536
|
})
|
|
523
537
|
```
|
|
524
538
|
|
|
525
539
|
### Hoàn tất đơn hàng
|
|
526
540
|
|
|
527
541
|
```js
|
|
528
|
-
subiz('event', {
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
},
|
|
543
|
-
})
|
|
542
|
+
subiz('event', 'order_completed', {
|
|
543
|
+
order_id: 'ord_99482',
|
|
544
|
+
checkout_id: 'chk_556677',
|
|
545
|
+
cart_id: 'cart_12345',
|
|
546
|
+
total: 3000000,
|
|
547
|
+
shipping_fee: 30000,
|
|
548
|
+
discount_amount: 0,
|
|
549
|
+
currency: 'VND',
|
|
550
|
+
payment_method: 'credit_card',
|
|
551
|
+
items: [
|
|
552
|
+
{product_id: 'pd2345', sku: 's5345', name: 'Bàn phím cơ không dây', category: 'electronics', quantity: 1, price: 1500000},
|
|
553
|
+
{product_id: 'pd9876', sku: 's1234', name: 'Chuột không dây', category: 'electronics', quantity: 1, price: 1500000},
|
|
554
|
+
],
|
|
555
|
+
}, {event_source_id: 'order_completed_ord_99482'})
|
|
544
556
|
```
|
|
545
557
|
|
|
546
558
|
### Đặt hàng thất bại
|
|
547
559
|
|
|
548
560
|
```js
|
|
549
|
-
subiz('event', {
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
total_value: 3000000,
|
|
556
|
-
currency: 'VND',
|
|
557
|
-
},
|
|
561
|
+
subiz('event', 'order_failed', {
|
|
562
|
+
checkout_id: 'chk_556677',
|
|
563
|
+
error_code: 'out_of_stock',
|
|
564
|
+
error_message: 'Một sản phẩm trong giỏ hàng đã hết hàng',
|
|
565
|
+
total: 3000000,
|
|
566
|
+
currency: 'VND',
|
|
558
567
|
})
|
|
559
568
|
```
|
|
560
569
|
|
|
561
570
|
### Xác nhận đơn hàng
|
|
562
571
|
|
|
563
572
|
```js
|
|
564
|
-
subiz('event', {
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
expected_delivery_date: '2026-05-15',
|
|
569
|
-
status: 'confirmed',
|
|
570
|
-
},
|
|
573
|
+
subiz('event', 'order_confirmed', {
|
|
574
|
+
order_id: 'ord_99482',
|
|
575
|
+
expected_delivery_date: '2026-05-15',
|
|
576
|
+
status: 'confirmed',
|
|
571
577
|
})
|
|
572
578
|
```
|
|
573
579
|
|
|
574
580
|
### Hủy đơn hàng
|
|
575
581
|
|
|
576
582
|
```js
|
|
577
|
-
subiz('event', {
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
id: 'ord_99482',
|
|
581
|
-
cancel_reason: 'customer_changed_mind',
|
|
582
|
-
},
|
|
583
|
+
subiz('event', 'order_cancelled', {
|
|
584
|
+
order_id: 'ord_99482',
|
|
585
|
+
cancel_reason: 'customer_changed_mind',
|
|
583
586
|
})
|
|
584
587
|
```
|
|
585
588
|
|
|
586
589
|
### Hoàn tiền đơn hàng
|
|
587
590
|
|
|
588
591
|
```js
|
|
589
|
-
subiz('event', {
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
reason: 'customer_returned_items',
|
|
597
|
-
currency: 'VND',
|
|
598
|
-
},
|
|
599
|
-
})
|
|
592
|
+
subiz('event', 'order_refunded', {
|
|
593
|
+
order_id: 'ord_99482',
|
|
594
|
+
refund_id: 'rf_12345',
|
|
595
|
+
refund_amount: 3000000,
|
|
596
|
+
reason: 'customer_returned_items',
|
|
597
|
+
currency: 'VND',
|
|
598
|
+
}, {event_source_id: 'order_refunded_rf_12345'})
|
|
600
599
|
```
|
|
601
600
|
|
|
602
601
|
### Yêu cầu đổi trả
|
|
603
602
|
|
|
604
603
|
```js
|
|
605
|
-
subiz('event', {
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
],
|
|
614
|
-
currency: 'VND',
|
|
615
|
-
},
|
|
604
|
+
subiz('event', 'return_requested', {
|
|
605
|
+
order_id: 'ord_99482',
|
|
606
|
+
return_id: 'ret_12345',
|
|
607
|
+
reason: 'wrong_size',
|
|
608
|
+
items: [
|
|
609
|
+
{product_id: 'pd2345', sku: 's5345', name: 'Bàn phím cơ không dây', category: 'electronics', quantity: 1, price: 1500000},
|
|
610
|
+
],
|
|
611
|
+
currency: 'VND',
|
|
616
612
|
})
|
|
617
613
|
```
|
|
618
614
|
|
|
619
615
|
### Hoàn tất đổi trả
|
|
620
616
|
|
|
621
617
|
```js
|
|
622
|
-
subiz('event', {
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
refund_amount: 1500000,
|
|
628
|
-
currency: 'VND',
|
|
629
|
-
},
|
|
618
|
+
subiz('event', 'return_completed', {
|
|
619
|
+
order_id: 'ord_99482',
|
|
620
|
+
return_id: 'ret_12345',
|
|
621
|
+
refund_amount: 1500000,
|
|
622
|
+
currency: 'VND',
|
|
630
623
|
})
|
|
631
624
|
```
|
|
632
625
|
|
|
633
626
|
### Bắt đầu giao hàng
|
|
634
627
|
|
|
635
628
|
```js
|
|
636
|
-
subiz('event', {
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
tracking_code: 'VNPOST_88374',
|
|
642
|
-
estimated_delivery_date: '2026-05-15',
|
|
643
|
-
},
|
|
629
|
+
subiz('event', 'order_shipped', {
|
|
630
|
+
order_id: 'ord_99482',
|
|
631
|
+
shipping_method: 'standard',
|
|
632
|
+
tracking_code: 'VNPOST_88374',
|
|
633
|
+
estimated_delivery_date: '2026-05-15',
|
|
644
634
|
})
|
|
645
635
|
```
|
|
646
636
|
|
|
647
637
|
### Giao hàng thành công
|
|
648
638
|
|
|
649
639
|
```js
|
|
650
|
-
subiz('event', {
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
id: 'ord_99482',
|
|
654
|
-
tracking_code: 'VNPOST_88374',
|
|
655
|
-
},
|
|
640
|
+
subiz('event', 'order_delivered', {
|
|
641
|
+
order_id: 'ord_99482',
|
|
642
|
+
tracking_code: 'VNPOST_88374',
|
|
656
643
|
})
|
|
657
644
|
```
|
|
658
645
|
|
|
659
646
|
### Đánh giá sản phẩm
|
|
660
647
|
|
|
661
648
|
```js
|
|
662
|
-
subiz('event', {
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
},
|
|
649
|
+
subiz('event', 'product_reviewed', {
|
|
650
|
+
product_id: 'pd2345',
|
|
651
|
+
sku: 's5345',
|
|
652
|
+
name: 'Bàn phím cơ không dây',
|
|
653
|
+
category: 'electronics',
|
|
654
|
+
brand: 'Keychron',
|
|
655
|
+
rating: 5,
|
|
656
|
+
review_id: 'rv_12345',
|
|
657
|
+
has_comment: true,
|
|
672
658
|
})
|
|
673
659
|
```
|
|
674
660
|
|
|
675
661
|
### Chia sẻ sản phẩm
|
|
676
662
|
|
|
677
663
|
```js
|
|
678
|
-
subiz('event', {
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
},
|
|
664
|
+
subiz('event', 'product_shared', {
|
|
665
|
+
product_id: 'pd2345',
|
|
666
|
+
sku: 's5345',
|
|
667
|
+
name: 'Bàn phím cơ không dây',
|
|
668
|
+
category: 'electronics',
|
|
669
|
+
brand: 'Keychron',
|
|
670
|
+
channel: 'facebook',
|
|
671
|
+
url: 'https://example.com/products/pd2345',
|
|
687
672
|
})
|
|
688
673
|
```
|
|
689
674
|
|
|
@@ -692,78 +677,121 @@ subiz('event', {
|
|
|
692
677
|
### Đặt lịch dịch vụ
|
|
693
678
|
|
|
694
679
|
```js
|
|
695
|
-
subiz('event', {
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
service_id: 'srv_massage_01',
|
|
700
|
-
scheduled_time: '2026-05-20T14:00:00Z',
|
|
701
|
-
},
|
|
680
|
+
subiz('event', 'service_booked', {
|
|
681
|
+
booking_id: 'bk_77362',
|
|
682
|
+
service_id: 'srv_massage_01',
|
|
683
|
+
scheduled_time: '2026-05-20T14:00:00Z',
|
|
702
684
|
})
|
|
703
685
|
```
|
|
704
686
|
|
|
705
687
|
### Hoàn thành dịch vụ
|
|
706
688
|
|
|
707
689
|
```js
|
|
708
|
-
subiz('event', {
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
service_id: 'srv_massage_01',
|
|
713
|
-
actual_duration_minutes: 65,
|
|
714
|
-
},
|
|
690
|
+
subiz('event', 'service_completed', {
|
|
691
|
+
booking_id: 'bk_77362',
|
|
692
|
+
service_id: 'srv_massage_01',
|
|
693
|
+
actual_duration_minutes: 65,
|
|
715
694
|
})
|
|
716
695
|
```
|
|
717
696
|
|
|
718
697
|
## Tương tác
|
|
719
698
|
|
|
720
|
-
###
|
|
699
|
+
### Reaction
|
|
700
|
+
|
|
701
|
+
Dùng `reacted` khi người dùng thả hoặc gỡ reaction trên bất kỳ đối tượng nào: sản phẩm trên website, bài post, comment, tin nhắn, video, reel, story hoặc nội dung khác trên các kênh như Facebook, Instagram, WhatsApp, TikTok, Telegram.
|
|
702
|
+
|
|
703
|
+
| Trường | Bắt buộc | Mô tả |
|
|
704
|
+
| --- | --- | --- |
|
|
705
|
+
| `target_type` | Có | Loại đối tượng được reaction, ví dụ `product`, `post`, `comment`, `message`, `video`, `reel`, `story`. |
|
|
706
|
+
| `reaction` | Có | Loại reaction: `like`, `love`, `wow`, `haha`, `sorry`, `angry`, emoji như `👍`, `❤️`, hoặc giá trị reaction khác tùy nền tảng. |
|
|
707
|
+
| `action` | Không | Hành động với reaction: `add` (default) khi thả reaction, `remove` khi gỡ reaction. Nên dùng `action: 'remove'` thay vì `reaction: 'unlike'` nếu biết reaction cũ là gì. |
|
|
708
|
+
| `channel` | Không | Kênh xảy ra reaction, ví dụ `website`, `facebook`, `instagram`, `whatsapp`, `tiktok`, `telegram`. |
|
|
709
|
+
|
|
710
|
+
Ví dụ khách like sản phẩm trên website:
|
|
721
711
|
|
|
722
712
|
```js
|
|
723
|
-
subiz('event', {
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
713
|
+
subiz('event', 'reacted', {
|
|
714
|
+
target_type: 'product',
|
|
715
|
+
reaction: 'like',
|
|
716
|
+
action: 'add',
|
|
717
|
+
channel: 'website',
|
|
718
|
+
product_id: 'pd2345',
|
|
719
|
+
sku: 's5345',
|
|
730
720
|
})
|
|
731
721
|
```
|
|
732
722
|
|
|
733
|
-
|
|
723
|
+
Ví dụ khách gỡ like sản phẩm:
|
|
724
|
+
|
|
725
|
+
```js
|
|
726
|
+
subiz('event', 'reacted', {
|
|
727
|
+
target_type: 'product',
|
|
728
|
+
reaction: 'like',
|
|
729
|
+
action: 'remove',
|
|
730
|
+
channel: 'website',
|
|
731
|
+
product_id: 'pd2345',
|
|
732
|
+
sku: 's5345',
|
|
733
|
+
})
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
Ví dụ reaction trên post Facebook:
|
|
737
|
+
|
|
738
|
+
```js
|
|
739
|
+
subiz('event', 'reacted', {
|
|
740
|
+
target_type: 'facebook_post',
|
|
741
|
+
reaction: 'love',
|
|
742
|
+
action: 'add',
|
|
743
|
+
channel: 'facebook',
|
|
744
|
+
post_id: '102345678901234',
|
|
745
|
+
page_id: '987654321012345',
|
|
746
|
+
})
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
Ví dụ reaction trên tin nhắn Telegram:
|
|
734
750
|
|
|
735
751
|
```js
|
|
736
|
-
subiz('event', {
|
|
737
|
-
|
|
752
|
+
subiz('event', 'reacted', {
|
|
753
|
+
target_type: 'message',
|
|
754
|
+
reaction: 'like',
|
|
755
|
+
action: 'add',
|
|
756
|
+
channel: 'telegram',
|
|
757
|
+
message_id: 'msg_778899',
|
|
738
758
|
})
|
|
759
|
+
```
|
|
739
760
|
|
|
740
|
-
|
|
741
|
-
|
|
761
|
+
### Gửi form
|
|
762
|
+
|
|
763
|
+
```js
|
|
764
|
+
subiz('event', 'form_submitted', {
|
|
765
|
+
form_id: 'frm_newsletter_01',
|
|
766
|
+
form_name: 'Đăng ký nhận bản tin',
|
|
767
|
+
campaign_id: 'camp_summer_2026',
|
|
742
768
|
})
|
|
743
769
|
```
|
|
744
770
|
|
|
771
|
+
### Đăng nhập và đăng xuất
|
|
772
|
+
|
|
773
|
+
```js
|
|
774
|
+
subiz('event', 'login')
|
|
775
|
+
|
|
776
|
+
subiz('event', 'logout')
|
|
777
|
+
```
|
|
778
|
+
|
|
745
779
|
### Giới thiệu khách hàng mới
|
|
746
780
|
|
|
747
781
|
```js
|
|
748
|
-
subiz('event', {
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
referral_code: 'THANH2026',
|
|
752
|
-
referred_user_id: 'usr_new_999',
|
|
753
|
-
},
|
|
782
|
+
subiz('event', 'customer_referred', {
|
|
783
|
+
referral_code: 'THANH2026',
|
|
784
|
+
referred_user_id: 'usr_new_999',
|
|
754
785
|
})
|
|
755
786
|
```
|
|
756
787
|
|
|
757
788
|
### Cập nhật khách hàng thân thiết
|
|
758
789
|
|
|
759
790
|
```js
|
|
760
|
-
subiz('event', {
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
points: 500,
|
|
765
|
-
current_tier: 'platinum',
|
|
766
|
-
},
|
|
791
|
+
subiz('event', 'customer_loyalty_updated', {
|
|
792
|
+
action: 'earn',
|
|
793
|
+
points: 500,
|
|
794
|
+
current_tier: 'platinum',
|
|
767
795
|
})
|
|
768
796
|
```
|
|
769
797
|
|
|
@@ -787,441 +815,363 @@ Nên giữ ổn định các field định danh như `company_id`, `company_name
|
|
|
787
815
|
### Tạo lead
|
|
788
816
|
|
|
789
817
|
```js
|
|
790
|
-
subiz('event', {
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
industry: 'software',
|
|
802
|
-
company_size: '51-200',
|
|
803
|
-
},
|
|
818
|
+
subiz('event', 'lead_created', {
|
|
819
|
+
lead_id: 'lead_10293',
|
|
820
|
+
contact_id: 'ct_10293',
|
|
821
|
+
company_id: 'com_9981',
|
|
822
|
+
company_name: 'Tech Corp VN',
|
|
823
|
+
email: 'alice@techcorp.vn',
|
|
824
|
+
phone: '0987654321',
|
|
825
|
+
source: 'landing_page_summer',
|
|
826
|
+
campaign_id: 'camp_summer_2026',
|
|
827
|
+
industry: 'software',
|
|
828
|
+
company_size: '51-200',
|
|
804
829
|
})
|
|
805
830
|
```
|
|
806
831
|
|
|
807
832
|
### Đăng ký tài khoản
|
|
808
833
|
|
|
809
834
|
```js
|
|
810
|
-
subiz('event', {
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
source: 'landing_page_summer',
|
|
818
|
-
is_verified: false,
|
|
819
|
-
},
|
|
835
|
+
subiz('event', 'customer_registered', {
|
|
836
|
+
customer_id: 'usr_new_10293',
|
|
837
|
+
company_id: 'com_9981',
|
|
838
|
+
company_name: 'Tech Corp VN',
|
|
839
|
+
registration_method: 'google',
|
|
840
|
+
source: 'landing_page_summer',
|
|
841
|
+
is_verified: false,
|
|
820
842
|
})
|
|
821
843
|
```
|
|
822
844
|
|
|
823
845
|
### Xem trang giá
|
|
824
846
|
|
|
825
847
|
```js
|
|
826
|
-
subiz('event', {
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
billing_cycle: 'annual',
|
|
833
|
-
url: 'https://example.com/pricing',
|
|
834
|
-
},
|
|
848
|
+
subiz('event', 'pricing_viewed', {
|
|
849
|
+
company_id: 'com_9981',
|
|
850
|
+
company_name: 'Tech Corp VN',
|
|
851
|
+
plan: 'business',
|
|
852
|
+
billing_cycle: 'annual',
|
|
853
|
+
url: 'https://example.com/pricing',
|
|
835
854
|
})
|
|
836
855
|
```
|
|
837
856
|
|
|
838
857
|
### Bắt đầu dùng thử
|
|
839
858
|
|
|
840
859
|
```js
|
|
841
|
-
subiz('event', {
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
end_date: '2026-05-26',
|
|
850
|
-
source: 'pricing_page',
|
|
851
|
-
},
|
|
860
|
+
subiz('event', 'trial_started', {
|
|
861
|
+
trial_id: 'trial_12345',
|
|
862
|
+
company_id: 'com_9981',
|
|
863
|
+
company_name: 'Tech Corp VN',
|
|
864
|
+
plan: 'business',
|
|
865
|
+
start_date: '2026-05-12',
|
|
866
|
+
end_date: '2026-05-26',
|
|
867
|
+
source: 'pricing_page',
|
|
852
868
|
})
|
|
853
869
|
```
|
|
854
870
|
|
|
855
871
|
### Yêu cầu demo
|
|
856
872
|
|
|
857
873
|
```js
|
|
858
|
-
subiz('event', {
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
estimated_users: 50,
|
|
867
|
-
preferred_time: '2026-05-20T14:00:00Z',
|
|
868
|
-
},
|
|
874
|
+
subiz('event', 'demo_requested', {
|
|
875
|
+
demo_id: 'demo_12345',
|
|
876
|
+
contact_id: 'ct_10293',
|
|
877
|
+
company_id: 'com_9981',
|
|
878
|
+
company_name: 'Tech Corp VN',
|
|
879
|
+
plan_interest: 'business',
|
|
880
|
+
estimated_users: 50,
|
|
881
|
+
preferred_time: '2026-05-20T14:00:00Z',
|
|
869
882
|
})
|
|
870
883
|
```
|
|
871
884
|
|
|
872
885
|
### Đặt lịch họp
|
|
873
886
|
|
|
874
887
|
```js
|
|
875
|
-
subiz('event', {
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
scheduled_time: '2026-05-20T14:00:00Z',
|
|
884
|
-
owner_id: 'sale_001',
|
|
885
|
-
},
|
|
888
|
+
subiz('event', 'meeting_booked', {
|
|
889
|
+
meeting_id: 'mt_12345',
|
|
890
|
+
contact_id: 'ct_10293',
|
|
891
|
+
company_id: 'com_9981',
|
|
892
|
+
company_name: 'Tech Corp VN',
|
|
893
|
+
meeting_type: 'sales_demo',
|
|
894
|
+
scheduled_time: '2026-05-20T14:00:00Z',
|
|
895
|
+
owner_id: 'sale_001',
|
|
886
896
|
})
|
|
887
897
|
```
|
|
888
898
|
|
|
889
899
|
### Hoàn thành cuộc họp
|
|
890
900
|
|
|
891
901
|
```js
|
|
892
|
-
subiz('event', {
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
outcome: 'qualified',
|
|
901
|
-
next_step: 'send_proposal',
|
|
902
|
-
},
|
|
902
|
+
subiz('event', 'meeting_completed', {
|
|
903
|
+
meeting_id: 'mt_12345',
|
|
904
|
+
contact_id: 'ct_10293',
|
|
905
|
+
company_id: 'com_9981',
|
|
906
|
+
company_name: 'Tech Corp VN',
|
|
907
|
+
meeting_type: 'sales_demo',
|
|
908
|
+
outcome: 'qualified',
|
|
909
|
+
next_step: 'send_proposal',
|
|
903
910
|
})
|
|
904
911
|
```
|
|
905
912
|
|
|
906
913
|
### Tạo deal
|
|
907
914
|
|
|
908
915
|
```js
|
|
909
|
-
subiz('event', {
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
owner_id: 'sale_001',
|
|
919
|
-
source: 'demo_requested',
|
|
920
|
-
},
|
|
916
|
+
subiz('event', 'deal_created', {
|
|
917
|
+
deal_id: 'deal_556677',
|
|
918
|
+
company_id: 'com_9981',
|
|
919
|
+
company_name: 'Tech Corp VN',
|
|
920
|
+
stage: 'qualified',
|
|
921
|
+
estimated_value: 50000000,
|
|
922
|
+
currency: 'VND',
|
|
923
|
+
owner_id: 'sale_001',
|
|
924
|
+
source: 'demo_requested',
|
|
921
925
|
})
|
|
922
926
|
```
|
|
923
927
|
|
|
924
928
|
### Đổi trạng thái deal
|
|
925
929
|
|
|
926
930
|
```js
|
|
927
|
-
subiz('event', {
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
currency: 'VND',
|
|
937
|
-
owner_id: 'sale_001',
|
|
938
|
-
},
|
|
931
|
+
subiz('event', 'deal_stage_changed', {
|
|
932
|
+
deal_id: 'deal_556677',
|
|
933
|
+
company_id: 'com_9981',
|
|
934
|
+
company_name: 'Tech Corp VN',
|
|
935
|
+
from_stage: 'qualified',
|
|
936
|
+
to_stage: 'proposal_sent',
|
|
937
|
+
estimated_value: 50000000,
|
|
938
|
+
currency: 'VND',
|
|
939
|
+
owner_id: 'sale_001',
|
|
939
940
|
})
|
|
940
941
|
```
|
|
941
942
|
|
|
942
943
|
### Gửi proposal
|
|
943
944
|
|
|
944
945
|
```js
|
|
945
|
-
subiz('event', {
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
currency: 'VND',
|
|
954
|
-
valid_until: '2026-06-01',
|
|
955
|
-
},
|
|
946
|
+
subiz('event', 'proposal_sent', {
|
|
947
|
+
proposal_id: 'pr_2026_05_01',
|
|
948
|
+
deal_id: 'deal_556677',
|
|
949
|
+
company_id: 'com_9981',
|
|
950
|
+
company_name: 'Tech Corp VN',
|
|
951
|
+
total: 48000000,
|
|
952
|
+
currency: 'VND',
|
|
953
|
+
valid_until: '2026-06-01',
|
|
956
954
|
})
|
|
957
955
|
```
|
|
958
956
|
|
|
959
957
|
### Yêu cầu báo giá
|
|
960
958
|
|
|
961
959
|
```js
|
|
962
|
-
subiz('event', {
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
estimated_budget: 50000000,
|
|
970
|
-
currency: 'VND',
|
|
971
|
-
},
|
|
960
|
+
subiz('event', 'quote_requested', {
|
|
961
|
+
quote_id: 'qt_2026_05_01',
|
|
962
|
+
deal_id: 'deal_556677',
|
|
963
|
+
company_id: 'com_9981',
|
|
964
|
+
company_name: 'Tech Corp VN',
|
|
965
|
+
estimated_budget: 50000000,
|
|
966
|
+
currency: 'VND',
|
|
972
967
|
})
|
|
973
968
|
```
|
|
974
969
|
|
|
975
970
|
### Chấp nhận báo giá
|
|
976
971
|
|
|
977
972
|
```js
|
|
978
|
-
subiz('event', {
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
total_value: 48000000,
|
|
986
|
-
currency: 'VND',
|
|
987
|
-
},
|
|
973
|
+
subiz('event', 'quote_accepted', {
|
|
974
|
+
quote_id: 'qt_2026_05_01',
|
|
975
|
+
deal_id: 'deal_556677',
|
|
976
|
+
company_id: 'com_9981',
|
|
977
|
+
company_name: 'Tech Corp VN',
|
|
978
|
+
total: 48000000,
|
|
979
|
+
currency: 'VND',
|
|
988
980
|
})
|
|
989
981
|
```
|
|
990
982
|
|
|
991
983
|
### Từ chối báo giá
|
|
992
984
|
|
|
993
985
|
```js
|
|
994
|
-
subiz('event', {
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
total_value: 48000000,
|
|
1003
|
-
currency: 'VND',
|
|
1004
|
-
},
|
|
986
|
+
subiz('event', 'quote_rejected', {
|
|
987
|
+
quote_id: 'qt_2026_05_01',
|
|
988
|
+
deal_id: 'deal_556677',
|
|
989
|
+
company_id: 'com_9981',
|
|
990
|
+
company_name: 'Tech Corp VN',
|
|
991
|
+
reason: 'price_too_high',
|
|
992
|
+
total: 48000000,
|
|
993
|
+
currency: 'VND',
|
|
1005
994
|
})
|
|
1006
995
|
```
|
|
1007
996
|
|
|
1008
997
|
### Ký hợp đồng
|
|
1009
998
|
|
|
1010
999
|
```js
|
|
1011
|
-
subiz('event', {
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
end_date: '2027-05-31',
|
|
1025
|
-
currency: 'VND',
|
|
1026
|
-
},
|
|
1027
|
-
})
|
|
1000
|
+
subiz('event', 'contract_signed', {
|
|
1001
|
+
contract_id: 'ctr_09876',
|
|
1002
|
+
deal_id: 'deal_556677',
|
|
1003
|
+
quote_id: 'qt_2026_05_01',
|
|
1004
|
+
company_id: 'com_9981',
|
|
1005
|
+
company_name: 'Tech Corp VN',
|
|
1006
|
+
total: 48000000,
|
|
1007
|
+
plan: 'business',
|
|
1008
|
+
billing_cycle: 'annual',
|
|
1009
|
+
start_date: '2026-06-01',
|
|
1010
|
+
end_date: '2027-05-31',
|
|
1011
|
+
currency: 'VND',
|
|
1012
|
+
}, {event_source_id: 'contract_signed_ctr_09876'})
|
|
1028
1013
|
```
|
|
1029
1014
|
|
|
1030
1015
|
### Hủy hợp đồng
|
|
1031
1016
|
|
|
1032
1017
|
```js
|
|
1033
|
-
subiz('event', {
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
remaining_value: 24000000,
|
|
1042
|
-
currency: 'VND',
|
|
1043
|
-
},
|
|
1018
|
+
subiz('event', 'contract_cancelled', {
|
|
1019
|
+
contract_id: 'ctr_09876',
|
|
1020
|
+
company_id: 'com_9981',
|
|
1021
|
+
company_name: 'Tech Corp VN',
|
|
1022
|
+
cancel_reason: 'budget_cut',
|
|
1023
|
+
cancelled_at: '2026-10-01',
|
|
1024
|
+
remaining_value: 24000000,
|
|
1025
|
+
currency: 'VND',
|
|
1044
1026
|
})
|
|
1045
1027
|
```
|
|
1046
1028
|
|
|
1047
1029
|
### Mất deal
|
|
1048
1030
|
|
|
1049
1031
|
```js
|
|
1050
|
-
subiz('event', {
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
estimated_value: 50000000,
|
|
1058
|
-
currency: 'VND',
|
|
1059
|
-
},
|
|
1032
|
+
subiz('event', 'deal_lost', {
|
|
1033
|
+
deal_id: 'deal_556677',
|
|
1034
|
+
company_id: 'com_9981',
|
|
1035
|
+
company_name: 'Tech Corp VN',
|
|
1036
|
+
lost_reason: 'chose_competitor',
|
|
1037
|
+
estimated_value: 50000000,
|
|
1038
|
+
currency: 'VND',
|
|
1060
1039
|
})
|
|
1061
1040
|
```
|
|
1062
1041
|
|
|
1063
1042
|
### Hoàn thành onboarding
|
|
1064
1043
|
|
|
1065
1044
|
```js
|
|
1066
|
-
subiz('event', {
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
onboarding_duration_days: 14,
|
|
1073
|
-
owner_id: 'cs_001',
|
|
1074
|
-
},
|
|
1045
|
+
subiz('event', 'onboarding_completed', {
|
|
1046
|
+
company_id: 'com_9981',
|
|
1047
|
+
company_name: 'Tech Corp VN',
|
|
1048
|
+
plan: 'business',
|
|
1049
|
+
onboarding_duration_days: 14,
|
|
1050
|
+
owner_id: 'cs_001',
|
|
1075
1051
|
})
|
|
1076
1052
|
```
|
|
1077
1053
|
|
|
1078
1054
|
### Kích hoạt tính năng quan trọng
|
|
1079
1055
|
|
|
1080
1056
|
```js
|
|
1081
|
-
subiz('event', {
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
plan: 'business',
|
|
1088
|
-
activated_by: 'usr_10293',
|
|
1089
|
-
},
|
|
1057
|
+
subiz('event', 'feature_activated', {
|
|
1058
|
+
company_id: 'com_9981',
|
|
1059
|
+
company_name: 'Tech Corp VN',
|
|
1060
|
+
feature_key: 'automation_workflow',
|
|
1061
|
+
plan: 'business',
|
|
1062
|
+
activated_by: 'usr_10293',
|
|
1090
1063
|
})
|
|
1091
1064
|
```
|
|
1092
1065
|
|
|
1093
1066
|
### Nâng cấp gói
|
|
1094
1067
|
|
|
1095
1068
|
```js
|
|
1096
|
-
subiz('event', {
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
mrr_delta: 3000000,
|
|
1105
|
-
currency: 'VND',
|
|
1106
|
-
},
|
|
1069
|
+
subiz('event', 'subscription_upgraded', {
|
|
1070
|
+
subscription_id: 'sub_12345',
|
|
1071
|
+
company_id: 'com_9981',
|
|
1072
|
+
company_name: 'Tech Corp VN',
|
|
1073
|
+
from_plan: 'starter',
|
|
1074
|
+
to_plan: 'business',
|
|
1075
|
+
mrr_delta: 3000000,
|
|
1076
|
+
currency: 'VND',
|
|
1107
1077
|
})
|
|
1108
1078
|
```
|
|
1109
1079
|
|
|
1110
1080
|
### Hạ cấp gói
|
|
1111
1081
|
|
|
1112
1082
|
```js
|
|
1113
|
-
subiz('event', {
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
reason: 'budget_cut',
|
|
1123
|
-
currency: 'VND',
|
|
1124
|
-
},
|
|
1083
|
+
subiz('event', 'subscription_downgraded', {
|
|
1084
|
+
subscription_id: 'sub_12345',
|
|
1085
|
+
company_id: 'com_9981',
|
|
1086
|
+
company_name: 'Tech Corp VN',
|
|
1087
|
+
from_plan: 'business',
|
|
1088
|
+
to_plan: 'starter',
|
|
1089
|
+
mrr_delta: -3000000,
|
|
1090
|
+
reason: 'budget_cut',
|
|
1091
|
+
currency: 'VND',
|
|
1125
1092
|
})
|
|
1126
1093
|
```
|
|
1127
1094
|
|
|
1128
1095
|
### Thêm người dùng vào tài khoản
|
|
1129
1096
|
|
|
1130
1097
|
```js
|
|
1131
|
-
subiz('event', {
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
currency: 'VND',
|
|
1140
|
-
},
|
|
1098
|
+
subiz('event', 'seat_added', {
|
|
1099
|
+
subscription_id: 'sub_12345',
|
|
1100
|
+
company_id: 'com_9981',
|
|
1101
|
+
company_name: 'Tech Corp VN',
|
|
1102
|
+
seat_delta: 5,
|
|
1103
|
+
total_seats: 25,
|
|
1104
|
+
mrr_delta: 1500000,
|
|
1105
|
+
currency: 'VND',
|
|
1141
1106
|
})
|
|
1142
1107
|
```
|
|
1143
1108
|
|
|
1109
|
+
Trong đó `seat_delta` là số seat được thêm ở lần thay đổi này, còn `total_seats` là tổng số seat sau thay đổi.
|
|
1110
|
+
|
|
1144
1111
|
### Bắt đầu gia hạn
|
|
1145
1112
|
|
|
1146
1113
|
```js
|
|
1147
|
-
subiz('event', {
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
current_value: 48000000,
|
|
1155
|
-
currency: 'VND',
|
|
1156
|
-
},
|
|
1114
|
+
subiz('event', 'renewal_started', {
|
|
1115
|
+
contract_id: 'ctr_09876',
|
|
1116
|
+
company_id: 'com_9981',
|
|
1117
|
+
company_name: 'Tech Corp VN',
|
|
1118
|
+
renewal_date: '2027-05-31',
|
|
1119
|
+
current_value: 48000000,
|
|
1120
|
+
currency: 'VND',
|
|
1157
1121
|
})
|
|
1158
1122
|
```
|
|
1159
1123
|
|
|
1160
1124
|
### Gia hạn thành công
|
|
1161
1125
|
|
|
1162
1126
|
```js
|
|
1163
|
-
subiz('event', {
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
end_date: '2028-05-31',
|
|
1173
|
-
currency: 'VND',
|
|
1174
|
-
},
|
|
1175
|
-
})
|
|
1127
|
+
subiz('event', 'renewal_completed', {
|
|
1128
|
+
contract_id: 'ctr_09876',
|
|
1129
|
+
company_id: 'com_9981',
|
|
1130
|
+
company_name: 'Tech Corp VN',
|
|
1131
|
+
renewal_value: 60000000,
|
|
1132
|
+
start_date: '2027-06-01',
|
|
1133
|
+
end_date: '2028-05-31',
|
|
1134
|
+
currency: 'VND',
|
|
1135
|
+
}, {event_source_id: 'renewal_completed_ctr_09876_2027'})
|
|
1176
1136
|
```
|
|
1177
1137
|
|
|
1178
1138
|
### Thanh toán hóa đơn thành công
|
|
1179
1139
|
|
|
1180
1140
|
```js
|
|
1181
|
-
subiz('event', {
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
billing_cycle: 'annual',
|
|
1190
|
-
currency: 'VND',
|
|
1191
|
-
},
|
|
1192
|
-
})
|
|
1141
|
+
subiz('event', 'invoice_paid', {
|
|
1142
|
+
invoice_id: 'inv_12345',
|
|
1143
|
+
company_id: 'com_9981',
|
|
1144
|
+
company_name: 'Tech Corp VN',
|
|
1145
|
+
total: 48000000,
|
|
1146
|
+
billing_cycle: 'annual',
|
|
1147
|
+
currency: 'VND',
|
|
1148
|
+
}, {event_source_id: 'invoice_paid_inv_12345'})
|
|
1193
1149
|
```
|
|
1194
1150
|
|
|
1195
1151
|
### Thanh toán hóa đơn thất bại
|
|
1196
1152
|
|
|
1197
1153
|
```js
|
|
1198
|
-
subiz('event', {
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
error_code: 'card_declined',
|
|
1206
|
-
currency: 'VND',
|
|
1207
|
-
},
|
|
1154
|
+
subiz('event', 'invoice_failed', {
|
|
1155
|
+
invoice_id: 'inv_12345',
|
|
1156
|
+
company_id: 'com_9981',
|
|
1157
|
+
company_name: 'Tech Corp VN',
|
|
1158
|
+
total: 48000000,
|
|
1159
|
+
error_code: 'card_declined',
|
|
1160
|
+
currency: 'VND',
|
|
1208
1161
|
})
|
|
1209
1162
|
```
|
|
1210
1163
|
|
|
1211
1164
|
### Rời bỏ dịch vụ
|
|
1212
1165
|
|
|
1213
1166
|
```js
|
|
1214
|
-
subiz('event', {
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
lifetime_value: 25000000,
|
|
1223
|
-
currency: 'VND',
|
|
1224
|
-
},
|
|
1167
|
+
subiz('event', 'customer_churned', {
|
|
1168
|
+
company_id: 'com_9981',
|
|
1169
|
+
company_name: 'Tech Corp VN',
|
|
1170
|
+
churn_type: 'voluntary',
|
|
1171
|
+
reason: 'switched_to_competitor',
|
|
1172
|
+
lifetime_days: 345,
|
|
1173
|
+
lifetime_value: 25000000,
|
|
1174
|
+
currency: 'VND',
|
|
1225
1175
|
})
|
|
1226
1176
|
```
|
|
1227
1177
|
|
|
@@ -1230,13 +1180,10 @@ subiz('event', {
|
|
|
1230
1180
|
Website có thể gửi event riêng ngoài các ví dụ phía trên.
|
|
1231
1181
|
|
|
1232
1182
|
```js
|
|
1233
|
-
subiz('event', {
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
campaign_id: 'camp_summer_2026',
|
|
1238
|
-
location: 'product_detail',
|
|
1239
|
-
},
|
|
1183
|
+
subiz('event', 'coupon_copied', {
|
|
1184
|
+
coupon_code: 'SUMMER2026',
|
|
1185
|
+
campaign_id: 'camp_summer_2026',
|
|
1186
|
+
location: 'product_detail',
|
|
1240
1187
|
})
|
|
1241
1188
|
```
|
|
1242
1189
|
|
|
@@ -1255,16 +1202,12 @@ Vì `subiz('event', ...)` trả về `Promise`, website có thể dùng `await`
|
|
|
1255
1202
|
```js
|
|
1256
1203
|
async function sendOrderCompleted(order) {
|
|
1257
1204
|
try {
|
|
1258
|
-
await subiz('event', {
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
currency: order.currency,
|
|
1265
|
-
items: order.items,
|
|
1266
|
-
},
|
|
1267
|
-
})
|
|
1205
|
+
await subiz('event', 'order_completed', {
|
|
1206
|
+
order_id: order.id,
|
|
1207
|
+
total: order.total,
|
|
1208
|
+
currency: order.currency,
|
|
1209
|
+
items: order.items,
|
|
1210
|
+
}, {event_source_id: 'order_completed_' + order.id})
|
|
1268
1211
|
} catch (error) {
|
|
1269
1212
|
console.error('Không gửi được order_completed', error)
|
|
1270
1213
|
}
|
|
@@ -1274,11 +1217,8 @@ async function sendOrderCompleted(order) {
|
|
|
1274
1217
|
Với event không quan trọng, website có thể gửi theo kiểu fire-and-forget:
|
|
1275
1218
|
|
|
1276
1219
|
```js
|
|
1277
|
-
subiz('event', {
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
id: 'pd2345',
|
|
1281
|
-
name: 'Bàn phím cơ không dây',
|
|
1282
|
-
},
|
|
1220
|
+
subiz('event', 'product_viewed', {
|
|
1221
|
+
product_id: 'pd2345',
|
|
1222
|
+
name: 'Bàn phím cơ không dây',
|
|
1283
1223
|
})
|
|
1284
1224
|
```
|