SocialHub.AI
ศูนย์นักพัฒนา · การติดตามเว็บ

ติดตามพฤติกรรมบนเว็บไซต์ของคุณเอง

วางบีคอนบุคคลที่หนึ่งหนึ่งตัวบนเว็บไซต์การตลาดหรืออีคอมเมิร์ซใดๆ แล้วจำนวนการดูหน้าเว็บจะไหลเข้าสู่ไทม์ไลน์พฤติกรรมสมาชิก เดียวกัน เช่นเดียวกับอีเมล พอร์ทัลความภักดี และแอปของคุณ ไม่ต้องใช้คีย์ ไม่มีการพึ่งพา — เพียงแค่โค้ด JavaScript ไม่กี่บรรทัดที่ส่งไปยังปลายทางสาธารณะ Flash จะแยกวิเคราะห์อุปกรณ์ ตำแหน่งทางภูมิศาสตร์ และการตรวจจับบอทฝั่งเซิร์ฟเวอร์

01 — มันทำงานอย่างไร

บรรทัดที่โฮสต์หนึ่งบรรทัด หรือส่วนย่อยที่สมบูรณ์ในตัวเอง

เพิ่มตัวติดตามที่โฮสต์ด้วยแท็กสคริปต์เดียว หรือวางข้อมูลโค้ดในตัวเองหากคุณไม่ต้องการการพึ่งพาภายนอก ไม่ว่าจะสร้างตัวระบุ เคารพสัญญาณความเป็นส่วนตัว และ POSTการดูหน้าเว็บไปยังจุดสิ้นสุดจุดใดจุดหนึ่ง:

POST https://flash.socialhub.ai/api/v1/tracking/pageview

คุณส่งบิตไคลเอ็นต์

URL, ชื่อ, ผู้อ้างอิง, รหัส, หน้าจอ, ภาษา, เขตเวลา, UTM แค่นั้นเอง

Flash เสริมประสิทธิภาพฝั่งเซิร์ฟเวอร์

อุปกรณ์ ระบบปฏิบัติการ และเบราว์เซอร์ถูกแยกวิเคราะห์จาก User-Agent ประเทศจาก IP; ตรวจพบบอทและติดธง ลูกค้าไม่จำเป็นต้องได้รับความไว้วางใจสำหรับสิ่งเหล่านี้

มันจะคืนค่า 204 เสมอ

บอท, GPC, มีรูปแบบไม่ถูกต้องหรือได้รับการยอมรับ — ตำแหน่งข้อมูลจะตอบกลับโดยไม่แจ้งให้ทราบ การติดตามไม่เคยทำให้เกิดข้อผิดพลาดในเพจของคุณ

บนโดเมนของคุณเอง พฤติกรรมจะไม่เปิดเผยตัวตน ไม่มีคุกกี้เซสชัน Flash บนไซต์ของคุณ ดังนั้นการดูหน้าเว็บจึงถูกคีย์ไปที่ anonymous_id ที่คุณสร้าง — ไม่ใช่ไปยังสมาชิกที่รู้จัก การระบุแหล่งที่มาของสมาชิกเกิดขึ้นบนแพลตฟอร์มที่ Flash เป็นเจ้าของ (พอร์ทัลสมาชิกและศูนย์สมาชิกในแอป) ซึ่งเซสชันจะแก้ไขปัญหาของสมาชิก ใช้ anonymous_id ที่สอดคล้องกันเพื่อให้พฤติกรรมบนไซต์ของผู้เข้าชมมีความเป็นหนึ่งเดียวกันในเซสชันของตนเองเป็นอย่างน้อย

02 — ติดตั้ง

เข้าได้สองทาง ตั้งค่า YOUR_TEAM_ID แล้วคุณก็ถ่ายทอดสด

ที่แนะนำ

ตัวเลือก A · โฮสต์ — หนึ่งบรรทัด

วางแท็กสคริปต์หนึ่งแท็กก่อน </body> ติดตามการเปลี่ยนแปลงเส้นทางแอปหน้าเดียวโดยอัตโนมัติและเปิดเผย window.flashTrack() — ไม่มีอะไรต้องเชื่อมต่ออีกต่อไป

index.html
<!-- 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>
↓ ดาวน์โหลด flash-tracker.jsดูซอร์สโค้ด ↗ไม่มีการพึ่งพา · โฮสต์เองจากแหล่งกำเนิดของคุณเอง หากคุณต้องการ

ตัวเลือก B · อินไลน์ — ไม่มีสคริปต์ภายนอก

ต้องการคำขอจากภายนอกเป็นศูนย์ (CSP ที่เข้มงวดหรือโค้ดภายในบันเดิลของคุณเอง)? วางตัวอย่างข้อมูลที่มีอยู่ในตัวเองนี้แทน มันเปิดเผย window.shTrack() — เรียกมันหลังจากเปลี่ยนเส้นทางแต่ละครั้งในแอปหน้าเดียว:

index.html
<!-- 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>
spa-router.js
// Single-page apps: after each client-side route change
router.afterEach(function () { window.shTrack && window.shTrack(); });
03 — สัญญาเพย์โหลด

ตัวส่งสัญญาณ

ส่ง application/json (หรือสตริงธรรมดาผ่าน sendBeacon) สิ่งใดๆ ที่เกิน 4 KB หรือการตรวจสอบที่ล้มเหลวจะถูกละทิ้งอย่างเงียบๆ

สนามประเภทหมายเหตุ
vnumberรุ่นสคีมา เสมอ 1.
page_urlstringURL แบบเต็มของหน้า (≤ 2048) ที่จำเป็น.
page_titlestring?ชื่อเอกสาร (≤ 500)
referrerstring?document.referrer (≤ 2048)
anonymous_idstringรหัสต่อเบราว์เซอร์ที่เสถียรที่คุณสร้าง (≤ 36) ที่จำเป็น.
session_idstringรหัสต่อเซสชันที่คุณสร้าง (≤ 36) ที่จำเป็น.
team_idstringรหัสทีม SocialHub ของคุณ (≤ 36) — ระบุแบรนด์ ที่จำเป็น.
utmobject?{ แหล่งที่มา สื่อ แคมเปญ คำศัพท์ เนื้อหา } แยกวิเคราะห์จากแบบสอบถาม string
screenstring?"1920x1080"
languagestring?นาวิเกเตอร์.ภาษา
timezonestring?IANA tz เช่น อเมริกา/ลอสแอนเจลิส
timestampnumberยุคลูกค้า นางสาว ที่จำเป็น.
04 — การป้องกัน

สร้างขึ้นเพื่อต้านทานการจราจรปลอม

team_id ของคุณอยู่ในแหล่งที่มาของเพจ — เช่นเดียวกับ ID การวิเคราะห์อื่นๆ ที่เป็นสาธารณะ ดังนั้นตำแหน่งข้อมูลจะปกป้องตัวเองฝั่งเซิร์ฟเวอร์โดยไม่มีการแจ้งเตือน (จะตอบ 204 เสมอ ดังนั้นผู้โจมตีจะไม่ได้รับข้อเสนอแนะให้สอบสวน):

การจำกัดอัตราพื้นฐาน · เปิดตลอดเวลา

ทุกทีมได้รับการปกป้องตามค่าเริ่มต้นโดยไม่มีการตั้งค่า: ตำแหน่งข้อมูลจะจำกัดจำนวนบีคอนที่หนึ่งแหล่งสามารถส่งได้ ดังนั้น team_id ที่คัดลอกมาจะไม่ท่วมหรือทำให้การวิเคราะห์ของคุณเสียหาย ไม่สามารถเปิดได้ — การหยุดทำงานชั่วคราวจะไม่ทำให้การรับส่งข้อมูลจริงของคุณลดลง

รายการที่อนุญาตของต้นทาง · ไม่บังคับ

ในการตั้งค่า → การป้องกันการติดตาม คุณสามารถจำกัดบีคอนที่ยอมรับไว้เฉพาะโดเมนของคุณเองได้ พร้อมตัวอย่างการตรวจสอบเพื่อตรวจสอบผลบวกลวงก่อนที่คุณจะบังคับใช้ การดำเนินการนี้จะปิดไซต์อื่น ๆ ที่ใช้ SDK ของคุณในเบราว์เซอร์

ซื่อสัตย์เกี่ยวกับขีดจำกัด

การจำกัดอัตราและรายการที่อนุญาตจะยกระดับและจำกัดความเสียหาย แต่ไม่มีไคลเอ็นต์แบบไม่ใช้คีย์ใดที่สามารถหยุดสคริปต์ที่กำหนดจากการปลอมแปลงคำขอได้อย่างสมบูรณ์ สำหรับการนำเข้าที่มีความไวสูง ให้ส่งแบบเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์ผ่าน API ที่มีการตรวจสอบสิทธิ์แทน

ทำความสะอาดตัวเลขปลายน้ำ

การป้องกันการละเมิดจะดำเนินการก่อนที่จะจัดเก็บสิ่งใดๆ ดังนั้นการรับส่งข้อมูลที่ถูกกรองจะไม่ไปถึงไทม์ไลน์ กลุ่ม หรือแดชบอร์ดของสมาชิกของคุณ และหน้าการป้องกันการติดตามจะแสดงให้คุณเห็นว่าถูกกันไว้มากน้อยเพียงใด

05 — ความเป็นส่วนตัว

เคารพผู้มาเยือนด้วยการก่อสร้าง

GPC และ Do-Not-Track

ตัวอย่างจะตรวจสอบ navigator.globalPrivacyControl และ navigator.doNotTrack และไม่ส่งอะไรเลยเมื่อมีการตั้งค่าอย่างใดอย่างหนึ่ง รักษายามนั้นไว้

ไม่มี PII ดิบ

ส่งตัวระบุและบริบทของหน้าเท่านั้น ห้ามส่งชื่อ อีเมล หรือเนื้อหาในแบบฟอร์มในบีคอน ข้อมูลระบุตัวตนของสมาชิกได้รับการแก้ไขบนแพลตฟอร์ม Flash ไม่ใช่บนเว็บไซต์ของคุณ

แบนเนอร์ยินยอมของคุณก่อน

หากไซต์ของคุณใช้ตัวจัดการความยินยอม ให้ควบคุมตัวอย่างข้อมูลตามความยินยอม — โทรหาเครื่องมือติดตามเมื่อผู้เยี่ยมชมยอมรับการวิเคราะห์แล้วเท่านั้น

กรองบอทแล้ว

การตรวจจับบอทฝั่งเซิร์ฟเวอร์จะทำเครื่องหมายการรับส่งข้อมูลที่ไม่ใช่ของมนุษย์ ดังนั้นจึงไม่ส่งผลเสียต่อไทม์ไลน์หรือสถิติของสมาชิกของคุณ

บันทึกการเดินทางที่เหลือ

เว็บเป็นหนึ่งในสี่ช่องทาง ดูว่าอีเมล พอร์ทัลสมาชิก และแอปของคุณป้อนข้อมูลให้กับไทม์ไลน์ของสมาชิกเดียวกันได้อย่างไร