تتبع سلوك المستخدمين على موقعك الإلكتروني.
قم بوضع إشارة طرف أول واحدة على أي موقع تسويقي أو موقع للتجارة الإلكترونية، وستتدفق مشاهدات صفحاته إلى نفس الموقع. الجدول الزمني لسلوك الأعضاء مثل البريد الإلكتروني، وبوابة الولاء، وتطبيقك. لا مفتاح، ولا تبعية - بضعة أسطر من جافا سكريبت الأساسية ترسل البيانات إلى نقطة نهاية عامة. Flash يقوم بتحليل بيانات الجهاز والموقع الجغرافي واكتشاف الروبوتات من جانب الخادم.
سطر واحد مُستضاف، أو جزء مُستقل
أضف أداة التتبع المستضافة باستخدام وسم برمجي واحد، أو الصق المقتطف البرمجي المستقل إذا كنت تفضل عدم الاعتماد على أي شيء خارجي - في كلتا الحالتين، يتم إنشاء المعرّفات، مع مراعاة إشارات الخصوصية، وPOSTs عرض صفحة لنقطة نهاية واحدة:
أنت ترسل بيانات العميل
عنوان URL، العنوان، المُحيل، المعرّفات، الشاشة، اللغة، المنطقة الزمنية، UTM - هذا كل شيء.
Flash يُثري جانب الخادم
يتم تحليل الجهاز ونظام التشغيل والمتصفح من وكيل المستخدم؛ والبلد من عنوان IP؛ ويتم الكشف عن البرامج الآلية (البوتات) ووضع علامة عليها. لا يُشترط أبدًا الوثوق بالعميل في هذه الأمور.
يُعيد دائمًا 204
سواء كان الطلب من روبوت أو بطاقة GPC أو كان غير صحيح أو تم قبوله، فإن نقطة النهاية تستجيب بصمت. لا يُظهر نظام التتبع أي خطأ في صفحتك.
في نطاقك الخاص، يكون السلوك مجهولًا. لا يوجد ملف تعريف ارتباط للجلسة Flash على موقعك، لذا يتم ربط مشاهدات الصفحة بملف تعريف الارتباط anonymous_id الذي تقوم بإنشائه - وليس بعضو معروف. يتم تحديد هوية العضو على الأسطح المملوكة لـ Flash (بوابة الولاء ومركز الأعضاء داخل التطبيق)، حيث تحدد الجلسة هوية العضو. استخدم ملف تعريف ارتباط anonymous_id متسقًا لضمان توحيد سلوك الزائر على الموقع على الأقل عبر جلساته.
طريقتان للدخول. اضبط YOUR_TEAM_ID وستكون جاهزًا.
الخيار أ · مُستضاف - سطر واحد
قم بإسقاط علامة نصية واحدة قبل </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>الخيار ب · مضمن - بدون سكربت خارجي
هل تريد عدم وجود أي طلبات خارجية (سياسة أمان المحتوى الصارمة، أو الكود داخل حزمة التطبيق الخاصة بك)؟ الصق هذه الشفرة البرمجية المستقلة بدلاً من ذلك. فهي تعرض 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 (أو string عبر sendBeacon). أي بيانات يزيد حجمها عن 4 كيلوبايت أو تفشل في التحقق من صحتها يتم تجاهلها تلقائيًا.
| مجال | النوع | ملاحظات |
|---|---|---|
v | number | إصدار المخطط. دائمًا 1. |
page_url | string | الرابط الكامل للصفحة (≤ 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? | { source, medium, campaign, term, content } تم تحليلها من الاستعلام string. |
screen | string? | "1920x1080". |
language | string? | navigator.language. |
timezone | string? | رمز المنطقة الجغرافية (ITZ) من IANA، على سبيل المثال: America/Los_Angeles. |
timestamp | number | مدة حقبة العميل (بالمللي ثانية). مطلوب. |
مصمم لمقاومة الزيارات المزيفة
يُخزَّن مُعرِّف team_id الخاص بك في مصدر صفحتك، وهو مُعرَّف عام كأي مُعرِّف تحليلي. لذا، يحمي النظام نفسه من جانب الخادم، بصمت (يستجيب دائمًا لـ 204، فلا يحصل المُهاجم على أي معلومات للتحليل):
تحديد معدل الإرسال الأساسي · مُفعّل دائمًا
كل فريق محمي افتراضيًا دون أي إعدادات: تحدد نقطة النهاية عدد الإشارات التي يمكن لمصدر واحد إرسالها، لذا لا يمكن لـ team_id المُستخرج إغراق تحليلاتك أو التأثير عليها سلبًا. وهو يعمل في حالة انقطاع الخدمة المؤقت، فلا يؤثر ذلك على حركة المرور الحقيقية.
قائمة السماح بالمصادر · اختياري
في الإعدادات ← حماية التتبع، يمكنك حصر الإشارات المقبولة على نطاقاتك الخاصة، مع معاينة مراقبة للتحقق من وجود إشارات false إيجابية قبل التفعيل. هذا يمنع المواقع الأخرى من استخدام SDK الخاص بك في المتصفح. في الإعدادات ← حماية التتبع، يمكنك حصر الإشارات المقبولة على نطاقاتك فقط، مع معاينة مراقبة للتحقق من وجود إشارات false إيجابية قبل التفعيل.
شفافية بشأن القيود
يُحسّن تحديد معدل الإرسال وقائمة السماح من مستوى الضرر، لكن لا يمكن لأي عميل بدون مفتاح منع برنامج نصي مُصرّ من تزوير الطلبات بشكل كامل. لاستيعاب البيانات الحساسة، أرسل من خادم إلى خادم عبر API المُصادق عليه.
أرقام دقيقة في المراحل اللاحقة
يتم تفعيل نظام مكافحة إساءة الاستخدام قبل تخزين أي بيانات، لذا لا تصل الزيارات المُفلترة إلى سجل بيانات عملائك أو شرائحهم أو لوحات معلوماتهم، وتُظهر لك صفحة حماية التتبع مقدار البيانات التي تم استبعادها.
احترم تجربة الزائر من خلال التصميم
الدفع مقابل النقرة وخيار عدم التتبع
يتحقق هذا الجزء من التعليمات البرمجية من navigator.globalPrivacyControl و navigator.doNotTrack، ولا يُرسل أي شيء عند ضبط أي منهما. حافظ على هذا الإجراء.
لا توجد معلومات شخصية أولية
أرسل المعرّفات وسياق الصفحة فقط - لا ترسل الأسماء أو عناوين البريد الإلكتروني أو محتويات النموذج في الإشارة. يتم تحديد هوية العضو على أسطح Flash، وليس على موقعك.
إعلان موافقتك أولاً
إذا كان موقعك يستخدم مدير موافقة، فاجعل مقتطف البيانات مقيدًا بموافقة المستخدم - لا تستدعِ أداة التتبع إلا بعد موافقة الزائر على استخدام التحليلات.
مُصفَّى بواسطة الروبوتات
يكشف نظام كشف الروبوتات من جانب الخادم حركة المرور غير البشرية حتى لا تؤثر على سجل أعضاءك أو إحصائياتهم.
تابع رحلة العميل المتبقية
الويب هو أحد أربعة أسطح. تعرف على كيفية تغذية البريد الإلكتروني وبوابة الولاء وتطبيقك لنفس الجدول الزمني للأعضاء.