Liên kết tài khoản nối phần định danh ở cấp thiết bị của TRACIO với khái niệm người dùng của riêng bạn. Bằng cách truyền ID tài khoản nội bộ dưới dạng linkedId, bạn cho TRACIO biết những visitor ID nào thuộc về cùng một người đã xác thực — trên nhiều trình duyệt, thiết bị và phiên.
Mọi khách truy cập mà TRACIO nhìn thấy đều nhận được một định danh ở cấp thiết bị (xem Định danh). Bản thân định danh đó không biết gì về người dùng của bạn — nó chỉ nhận ra những thiết bị quay lại.
linkedId lấp khoảng trống này: đó là accountId của người dùng đang được xác thực, gửi kèm yêu cầu định danh thông thường. Khi hai hoặc nhiều visitor ID cùng chia sẻ một linkedId, TRACIO liên kết chúng thành một tài khoản, qua đó vận hành trang Connections trên bảng điều khiển, danh tính đa thiết bị và phát hiện lệch chuẩn khi tài khoản bị chiếm đoạt (ATO) — xem Bạn nhận được gì.
Không có linkedId, TRACIO chỉ thấy các thiết bị ẩn danh và không có cách nào gom chúng theo tài khoản.
Liên kết tài khoản là một tham số bổ sung trên phần tích hợp bạn đã có. Không cần mã phía backend.
Thêm lid vào thẻ script hiện có, bên cạnh khóa công khai của bạn:
<!-- trước --><script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>
<!-- sau (chỉ khi người dùng đã xác thực) --><script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY&lid=ACCOUNT_ID" async></script>Nếu dùng @tracio/sdk, hãy truyền linkedId trong cấu hình:
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...", linkedId: user.id,})linkedId chỉ được đọc một lần, ngay lúc agent tải. Nếu thẻ script hoặc lệnh gọi Tracio.init() chạy trước khi đăng nhập, bạn cần bảo đảm linkedId được đưa vào ngay khi biết trạng thái xác thực:
lid=ACCOUNT_ID.Tracio.init() với cùng publicKey sẽ trả về thực thể sẵn có và bỏ qua cấu hình mới — nó không nhận linkedId. Hãy gọi tracio.destroy() trước, rồi Tracio.init({ publicKey, linkedId: user.id }). Hoặc hoãn lệnh gọi Tracio.init() đầu tiên cho đến khi biết trạng thái xác thực của người dùng.linkedId sau một lần đăng nhập thật sự. Đừng bao giờ gửi cho khách vãng lai hay người dùng ẩn danh, và đừng bao giờ dùng giá trị thay thế như "guest" hoặc "anonymous" — một giá trị dùng chung sẽ gộp những người không liên quan vào cùng một tài khoản.linkedId bị cắt ở 256 byte. ID thông thường ngắn hơn nhiều; đừng truyền token lớn (ví dụ JWT đầy đủ).linkedId được lưu cùng dữ liệu sự kiện khác của không gian làm việc và hiển thị lại cho bạn trên bảng điều khiển như định danh tài khoản ở trang Connections — giá trị này không băm hay ẩn danh khi hiển thị, vì bạn cần nhận ra tài khoản.
Bên trong, cơ chế đối sánh đa thiết bị của TRACIO (phát hiện fanout, đường cơ sở hành vi ATO) dùng một hàm băm một chiều riêng, giới hạn theo môi trường, tính trên linkedId — không bao giờ dùng giá trị gốc. Nhờ vậy, logic đối sánh không phụ thuộc vào giá trị dạng rõ và cũng không để lộ nó ra ngoài bảng điều khiển và webhook của chính bạn.
Đó là lý do linkedId nên là một ID nội bộ vô nghĩa thay vì địa chỉ email hay tên (xem Quy tắc): bạn nhìn thấy nó như định danh tài khoản của mình, nên nó không nên mang nhiều thông tin cá nhân hơn những gì bạn đã có.
s.js (hoặc yêu cầu định danh của agent) có cả tham số k= lẫn lid=.linkedId chưa được tích hợp, trang hiển thị thông báo thiết lập; thông báo đó biến mất trong vài phút sau yêu cầu đầu tiên có lid=.Khi linkedId đã chảy về, TRACIO mở khóa: