Hướng dẫn

Theo dõi hành động tuỳ chỉnh của khách (Mục tiêu)

Ngoài lượt xem trang, ZenData đo được những hành động quan trọng với doanh nghiệp của bạn — gọi là mục tiêu (goal): đặt lịch tư vấn, tải báo giá, thêm vào giỏ, bắt đầu thanh toán, đăng ký nhận tin…

Mục tiêu giúp bạn

  • Biết khách thực sự làm gì trên website, không chỉ xem trang nào.
  • Thấy tỉ lệ chuyển đổi của từng hành động và nguồn khách (Google, Facebook Ads, Zalo…) mang về hành động đó.
  • Dùng mục tiêu làm bộ lọc cho toàn bộ báo cáo: chỉ xem những khách đã đặt lịch, đã tải báo giá…
Lượt bấm Zalo, gọi điện, Messenger và gửi form đã được ZenData ghi nhận tự động thành Khách tiềm năng — bạn không cần tạo mục tiêu cho chúng.

Có 3 cách gửi mục tiêu:

Cách 1: Theo dõi bằng JavaScript

Gọi hàm zendata() với lệnh 'goal' và tên mục tiêu, ở đúng nơi hành động hoàn tất — ví dụ trên trang cảm ơn sau khi đăng ký, hoặc khi khách bấm một nút.

js
window.zendata?.('goal', 'dat_lich');

Gửi kèm tham số

Thêm một object tham số để xem chi tiết hơn trên dashboard (gói dịch vụ, sản phẩm, chi nhánh…):

js
window.zendata?.('goal', 'tai_bao_gia', {
  san_pham: 'may-loc-nuoc',
  gia: 4990000,
  chi_nhanh: 'ha-noi',
});

Đảm bảo không mất dữ liệu (khuyên dùng)

Thêm đoạn sau vào <head>, trước mã cài đặt ZenData, để các mục tiêu được gọi trước khi mã ZenData tải xong vẫn được ghi nhận:

html
<script>
  window.zendata = window.zendata || function () {
    (window.zendata.q = window.zendata.q || []).push(arguments);
  };
</script>

Cách 2: Theo dõi bằng thuộc tính HTML

Đơn giản nhất cho lượt bấm: thêm thuộc tính data-zd-goal vào bất kỳ nút, liên kết hay phần tử nào. ZenData tự gửi mục tiêu khi khách bấm vào.

html
<button data-zd-goal="dat_lich">Đặt lịch tư vấn</button>

Gửi kèm tham số

Thêm các thuộc tính data-zd-goal-*. Tên tham số được lấy từ phần sau data-zd-goal- và đổi dấu gạch ngang thành gạch dưới:

html
<a href="/bang-gia.pdf"
   data-zd-goal="tai_bao_gia"
   data-zd-goal-san-pham="may-loc-nuoc"
   data-zd-goal-gia="4990000">
  Tải bảng giá
</a>

Ví dụ trên gửi mục tiêu tai_bao_gia với tham số { san_pham: "may-loc-nuoc", gia: "4990000" }.

Bấm hai lần liên tiếp vào cùng một nút chỉ được tính một lượt.

Cách 3: Gửi từ máy chủ (chính xác nhất)

Gửi trực tiếp từ hệ thống của bạn (website, CRM, phần mềm bán hàng). Không bị trình chặn quảng cáo ảnh hưởng, và gửi được cả khi khách đã rời website — ví dụ khi khách ký hợp đồng hay đến cửa hàng.

  1. Lấy API key trong Cài đặt website → mục API đồng bộ Doanh thu tự động.
  2. Gửi yêu cầu POST https://zendata.vn/api/v1/goals mỗi khi khách hoàn thành hành động.
bash
curl -X POST https://zendata.vn/api/v1/goals \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "ky_hop_dong",
    "phone": "0912345678",
    "params": { "goi": "growth" }
  }'

Các trường

nameBắt buộcTên mục tiêu.
visitor_idMột trong haiMã khách truy cập của ZenData — lấy ở trình duyệt bằng zendata('vid').
phoneMột trong haiSố điện thoại khách đã để lại qua form. ZenData tìm đúng khách đó.
paramsKhông bắt buộcTham số tuỳ chỉnh, tối đa 10.
pathKhông bắt buộcTrang liên quan, bắt đầu bằng / (ví dụ /bang-gia).

Lấy visitor_id để gửi về máy chủ

Gửi kèm mã khách trong form, rồi máy chủ chuyển tiếp cho ZenData:

html
<form action="/dang-ky" method="post">
  <input type="hidden" name="zd_vid" id="zd_vid">
  ...
</form>
<script>
  document.getElementById('zd_vid').value = window.zendata?.('vid') || '';
</script>

Kết quả trả về

json
{ "tracked": true, "name": "ky_hop_dong", "visitor_id": "l02p82jxc5", "params": { "goi": "growth" } }

{ "tracked": false, "reason": "visitor_not_found" }   // không tìm thấy khách với visitor_id / phone đã gửi
Mục tiêu gửi từ máy chủ được gắn vào khách đó, nên vẫn biết khách đến từ nguồn nào, thiết bị gì, ở tỉnh/thành nào.

Xem mục tiêu trên dashboard

  1. Mở trang Tổng quan của website, kéo xuống thẻ Mục tiêu chuyển đổi.
  2. Mỗi dòng cho biết số khách hoàn thành và tỉ lệ chuyển đổi (khách hoàn thành ÷ tổng khách truy cập).
  3. Bấm vào một mục tiêu để mở bảng chi tiết: số lượt, nguồn khách, giá trị của từng tham số và các lượt hoàn thành gần nhất.
  4. Bấm Lọc để xem toàn bộ báo cáo chỉ với những khách đã hoàn thành mục tiêu đó.

Ví dụ: với mục tiêu tai_bao_gia có tham số san_pham, mở tham số này để biết bao nhiêu khách tải báo giá máy lọc nước, bao nhiêu khách tải máy lọc không khí.

Quy tắc & giới hạn

  • Tên mục tiêu: chữ thường, số, _ - :, tối đa 64 ký tự. Tiếng Việt có dấu và khoảng trắng được tự chuyển: “Đặt lịch” → dat_lich.
  • Tham số: tối đa 10 mỗi lượt. Tên tham số gồm chữ thường, số, _ - (tối đa 64 ký tự); giá trị là chuỗi, tối đa 255 ký tự.
  • Tên dành riêng: không dùng identify và pageview.
  • Tính phí: mỗi lượt mục tiêu được tính vào hạn mức sự kiện hằng tháng của gói. Chỉ theo dõi những hành động bạn thực sự cần.
  • Dữ liệu cá nhân: không gửi mật khẩu, số thẻ, CCCD trong tham số. Thông tin liên hệ của khách nên gửi qua zendata('identify', …) hoặc form để được bảo vệ đúng cách.

Xử lý sự cố

  • Không thấy mục tiêu: kiểm tra mã cài đặt ZenData đã có trên trang; ZenData bỏ qua lượt truy cập từ localhost và trình duyệt đã gõ localStorage.zd_ignore='1'.
  • Thiếu lượt khi gọi bằng JavaScript: thêm đoạn mã hàng đợi ở Cách 1, hoặc chuyển sang gửi từ máy chủ.
  • API trả về visitor_not_found: visitor_id sai/thuộc website khác, hoặc chưa có khách nào để lại số điện thoại đó.
  • Tên bị đổi: ZenData chuẩn hoá tên theo quy tắc ở trên — hãy dùng sẵn tên dạng dat_lich để dễ nhận biết.

Mở website trong ZenData để xem mục tiêu ở trang Tổng quan, và lấy API key trong Cài đặt.

Mở ZenData