ติดตามพฤติกรรมบนเว็บไซต์ของคุณเอง
วางบีคอนบุคคลที่หนึ่งหนึ่งตัวบนเว็บไซต์การตลาดหรืออีคอมเมิร์ซใดๆ แล้วจำนวนการดูหน้าเว็บจะไหลเข้าสู่ไทม์ไลน์พฤติกรรมสมาชิก เดียวกัน เช่นเดียวกับอีเมล พอร์ทัลความภักดี และแอปของคุณ ไม่ต้องใช้คีย์ ไม่มีการพึ่งพา — เพียงแค่โค้ด JavaScript ไม่กี่บรรทัดที่ส่งไปยังปลายทางสาธารณะ Flash จะแยกวิเคราะห์อุปกรณ์ ตำแหน่งทางภูมิศาสตร์ และการตรวจจับบอทฝั่งเซิร์ฟเวอร์
บรรทัดที่โฮสต์หนึ่งบรรทัด หรือส่วนย่อยที่สมบูรณ์ในตัวเอง
เพิ่มตัวติดตามที่โฮสต์ด้วยแท็กสคริปต์เดียว หรือวางข้อมูลโค้ดในตัวเองหากคุณไม่ต้องการการพึ่งพาภายนอก ไม่ว่าจะสร้างตัวระบุ เคารพสัญญาณความเป็นส่วนตัว และ POSTการดูหน้าเว็บไปยังจุดสิ้นสุดจุดใดจุดหนึ่ง:
คุณส่งบิตไคลเอ็นต์
URL, ชื่อ, ผู้อ้างอิง, รหัส, หน้าจอ, ภาษา, เขตเวลา, UTM แค่นั้นเอง
Flash เสริมประสิทธิภาพฝั่งเซิร์ฟเวอร์
อุปกรณ์ ระบบปฏิบัติการ และเบราว์เซอร์ถูกแยกวิเคราะห์จาก User-Agent ประเทศจาก IP; ตรวจพบบอทและติดธง ลูกค้าไม่จำเป็นต้องได้รับความไว้วางใจสำหรับสิ่งเหล่านี้
มันจะคืนค่า 204 เสมอ
บอท, GPC, มีรูปแบบไม่ถูกต้องหรือได้รับการยอมรับ — ตำแหน่งข้อมูลจะตอบกลับโดยไม่แจ้งให้ทราบ การติดตามไม่เคยทำให้เกิดข้อผิดพลาดในเพจของคุณ
บนโดเมนของคุณเอง พฤติกรรมจะไม่เปิดเผยตัวตน ไม่มีคุกกี้เซสชัน Flash บนไซต์ของคุณ ดังนั้นการดูหน้าเว็บจึงถูกคีย์ไปที่ anonymous_id ที่คุณสร้าง — ไม่ใช่ไปยังสมาชิกที่รู้จัก การระบุแหล่งที่มาของสมาชิกเกิดขึ้นบนแพลตฟอร์มที่ Flash เป็นเจ้าของ (พอร์ทัลสมาชิกและศูนย์สมาชิกในแอป) ซึ่งเซสชันจะแก้ไขปัญหาของสมาชิก ใช้ anonymous_id ที่สอดคล้องกันเพื่อให้พฤติกรรมบนไซต์ของผู้เข้าชมมีความเป็นหนึ่งเดียวกันในเซสชันของตนเองเป็นอย่างน้อย
เข้าได้สองทาง ตั้งค่า YOUR_TEAM_ID แล้วคุณก็ถ่ายทอดสด
ตัวเลือก A · โฮสต์ — หนึ่งบรรทัด
วางแท็กสคริปต์หนึ่งแท็กก่อน </body> ติดตามการเปลี่ยนแปลงเส้นทางแอปหน้าเดียวโดยอัตโนมัติและเปิดเผย window.flashTrack() — ไม่มีอะไรต้องเชื่อมต่ออีกต่อไป
<!-- SocialHub web tracking — one line, before </body> -->
<script src="https://flash.socialhub.ai/sdk/flash-tracker.js"
data-team-id="YOUR_TEAM_ID" defer></script>ตัวเลือก B · อินไลน์ — ไม่มีสคริปต์ภายนอก
ต้องการคำขอจากภายนอกเป็นศูนย์ (CSP ที่เข้มงวดหรือโค้ดภายในบันเดิลของคุณเอง)? วางตัวอย่างข้อมูลที่มีอยู่ในตัวเองนี้แทน มันเปิดเผย window.shTrack() — เรียกมันหลังจากเปลี่ยนเส้นทางแต่ละครั้งในแอปหน้าเดียว:
<!-- SocialHub web tracking — paste before </body> on every page -->
<script>
(function () {
var TEAM_ID = "YOUR_TEAM_ID"; // Settings → API
var ENDPOINT = "https://flash.socialhub.ai/api/v1/tracking/pageview";
// Honor Global Privacy Control / Do Not Track — no signal sent.
if (navigator.globalPrivacyControl === true || navigator.doNotTrack === "1") return;
function uid() {
return (window.crypto && crypto.randomUUID)
? crypto.randomUUID()
: (Date.now() + "-" + Math.random().toString(16).slice(2));
}
function persist(store, key) {
try { var v = store.getItem(key); if (!v) { v = uid(); store.setItem(key, v); } return v; }
catch (e) { return uid(); }
}
function utm() {
var p = new URLSearchParams(location.search), o = {};
["source", "medium", "campaign", "term", "content"].forEach(function (n) {
var val = p.get("utm_" + n); if (val) o[n] = val;
});
return Object.keys(o).length ? o : undefined;
}
function track() {
var body = JSON.stringify({
v: 1,
page_url: location.href,
page_title: document.title,
referrer: document.referrer || undefined,
anonymous_id: persist(localStorage, "sh_anon"), // stable per browser
session_id: persist(sessionStorage, "sh_session"), // resets per tab session
team_id: TEAM_ID,
utm: utm(),
screen: screen.width + "x" + screen.height,
language: navigator.language,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
timestamp: Date.now()
});
try {
if (navigator.sendBeacon) navigator.sendBeacon(ENDPOINT, body);
else fetch(ENDPOINT, { method: "POST", body: body, keepalive: true }).catch(function () {});
} catch (e) { /* never break the page */ }
}
window.shTrack = track; // for SPAs: call window.shTrack() after each route change
track(); // initial page view
})();
</script>// Single-page apps: after each client-side route change
router.afterEach(function () { window.shTrack && window.shTrack(); });ตัวส่งสัญญาณ
ส่ง application/json (หรือสตริงธรรมดาผ่าน sendBeacon) สิ่งใดๆ ที่เกิน 4 KB หรือการตรวจสอบที่ล้มเหลวจะถูกละทิ้งอย่างเงียบๆ
| สนาม | ประเภท | หมายเหตุ |
|---|---|---|
v | number | รุ่นสคีมา เสมอ 1. |
page_url | string | URL แบบเต็มของหน้า (≤ 2048) ที่จำเป็น. |
page_title | string? | ชื่อเอกสาร (≤ 500) |
referrer | string? | document.referrer (≤ 2048) |
anonymous_id | string | รหัสต่อเบราว์เซอร์ที่เสถียรที่คุณสร้าง (≤ 36) ที่จำเป็น. |
session_id | string | รหัสต่อเซสชันที่คุณสร้าง (≤ 36) ที่จำเป็น. |
team_id | string | รหัสทีม SocialHub ของคุณ (≤ 36) — ระบุแบรนด์ ที่จำเป็น. |
utm | object? | { แหล่งที่มา สื่อ แคมเปญ คำศัพท์ เนื้อหา } แยกวิเคราะห์จากแบบสอบถาม string |
screen | string? | "1920x1080" |
language | string? | นาวิเกเตอร์.ภาษา |
timezone | string? | IANA tz เช่น อเมริกา/ลอสแอนเจลิส |
timestamp | number | ยุคลูกค้า นางสาว ที่จำเป็น. |
สร้างขึ้นเพื่อต้านทานการจราจรปลอม
team_id ของคุณอยู่ในแหล่งที่มาของเพจ — เช่นเดียวกับ ID การวิเคราะห์อื่นๆ ที่เป็นสาธารณะ ดังนั้นตำแหน่งข้อมูลจะปกป้องตัวเองฝั่งเซิร์ฟเวอร์โดยไม่มีการแจ้งเตือน (จะตอบ 204 เสมอ ดังนั้นผู้โจมตีจะไม่ได้รับข้อเสนอแนะให้สอบสวน):
การจำกัดอัตราพื้นฐาน · เปิดตลอดเวลา
ทุกทีมได้รับการปกป้องตามค่าเริ่มต้นโดยไม่มีการตั้งค่า: ตำแหน่งข้อมูลจะจำกัดจำนวนบีคอนที่หนึ่งแหล่งสามารถส่งได้ ดังนั้น team_id ที่คัดลอกมาจะไม่ท่วมหรือทำให้การวิเคราะห์ของคุณเสียหาย ไม่สามารถเปิดได้ — การหยุดทำงานชั่วคราวจะไม่ทำให้การรับส่งข้อมูลจริงของคุณลดลง
รายการที่อนุญาตของต้นทาง · ไม่บังคับ
ในการตั้งค่า → การป้องกันการติดตาม คุณสามารถจำกัดบีคอนที่ยอมรับไว้เฉพาะโดเมนของคุณเองได้ พร้อมตัวอย่างการตรวจสอบเพื่อตรวจสอบผลบวกลวงก่อนที่คุณจะบังคับใช้ การดำเนินการนี้จะปิดไซต์อื่น ๆ ที่ใช้ SDK ของคุณในเบราว์เซอร์
ซื่อสัตย์เกี่ยวกับขีดจำกัด
การจำกัดอัตราและรายการที่อนุญาตจะยกระดับและจำกัดความเสียหาย แต่ไม่มีไคลเอ็นต์แบบไม่ใช้คีย์ใดที่สามารถหยุดสคริปต์ที่กำหนดจากการปลอมแปลงคำขอได้อย่างสมบูรณ์ สำหรับการนำเข้าที่มีความไวสูง ให้ส่งแบบเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์ผ่าน API ที่มีการตรวจสอบสิทธิ์แทน
ทำความสะอาดตัวเลขปลายน้ำ
การป้องกันการละเมิดจะดำเนินการก่อนที่จะจัดเก็บสิ่งใดๆ ดังนั้นการรับส่งข้อมูลที่ถูกกรองจะไม่ไปถึงไทม์ไลน์ กลุ่ม หรือแดชบอร์ดของสมาชิกของคุณ และหน้าการป้องกันการติดตามจะแสดงให้คุณเห็นว่าถูกกันไว้มากน้อยเพียงใด
เคารพผู้มาเยือนด้วยการก่อสร้าง
GPC และ Do-Not-Track
ตัวอย่างจะตรวจสอบ navigator.globalPrivacyControl และ navigator.doNotTrack และไม่ส่งอะไรเลยเมื่อมีการตั้งค่าอย่างใดอย่างหนึ่ง รักษายามนั้นไว้
ไม่มี PII ดิบ
ส่งตัวระบุและบริบทของหน้าเท่านั้น ห้ามส่งชื่อ อีเมล หรือเนื้อหาในแบบฟอร์มในบีคอน ข้อมูลระบุตัวตนของสมาชิกได้รับการแก้ไขบนแพลตฟอร์ม Flash ไม่ใช่บนเว็บไซต์ของคุณ
แบนเนอร์ยินยอมของคุณก่อน
หากไซต์ของคุณใช้ตัวจัดการความยินยอม ให้ควบคุมตัวอย่างข้อมูลตามความยินยอม — โทรหาเครื่องมือติดตามเมื่อผู้เยี่ยมชมยอมรับการวิเคราะห์แล้วเท่านั้น
กรองบอทแล้ว
การตรวจจับบอทฝั่งเซิร์ฟเวอร์จะทำเครื่องหมายการรับส่งข้อมูลที่ไม่ใช่ของมนุษย์ ดังนั้นจึงไม่ส่งผลเสียต่อไทม์ไลน์หรือสถิติของสมาชิกของคุณ
บันทึกการเดินทางที่เหลือ
เว็บเป็นหนึ่งในสี่ช่องทาง ดูว่าอีเมล พอร์ทัลสมาชิก และแอปของคุณป้อนข้อมูลให้กับไทม์ไลน์ของสมาชิกเดียวกันได้อย่างไร