SocialHub.AI
Geliştirici Merkezi · Web İzleme

Kendi sitenizdeki davranışı izleyin.

Herhangi bir pazarlama veya e-ticaret sitesine bir adet birinci taraf işaretçisi bırakın ve sayfa görüntülemeleri, e-posta, sadakat portalı ve uygulamanızla aynı üye davranış zaman çizelgesine akar. Anahtar yok, bağımlılık yok — halka açık bir uç noktaya gönderilen birkaç satır saf JS kodu. Flash cihaz, coğrafi konum ve bot algılamayı sunucu tarafında ayrıştırır.

01 — Nasıl çalışır?

Tek bir barındırılan satır veya bağımsız bir kod parçası

Barındırılan izleyiciyi tek bir komut dosyası etiketiyle ekleyin veya harici bir bağımlılık istemiyorsanız kendi kendine yeten kod parçasını yapıştırın; her iki durumda da tanımlayıcılar oluşturulur, gizlilik sinyallerine saygı gösterilir ve POSTBir uç noktaya yapılan sayfa görüntülemesi:

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

İstemci bitlerini gönderirsiniz

URL, başlık, yönlendiren, kimlikler, ekran, dil, saat dilimi, UTM — hepsi bu.

Flash sunucu tarafını zenginleştirir

Cihaz, işletim sistemi ve tarayıcı Kullanıcı Aracısından ayrıştırılır; IP'den ülke; botlar algılanır ve işaretlenir. Bunlar için müşteriye asla güvenmek gerekmez.

Her zaman 204 döndürür

Bot, GPC, hatalı biçimlendirilmiş veya kabul edilmiş - uç nokta sessizce yanıt verir. İzleme asla sayfanıza bir hata göndermez.

Kendi alan adınızda, davranış anonimdir. Sitenizde Flash oturum çerezi bulunmadığından, sayfa görüntülemeleri bilinen bir üyeye değil, sizin oluşturduğunuz anonymous_id'a bağlıdır. Üye ataması, oturumun üyeyi çözdüğü Flash'ye ait yüzeylerde (sadakat portalı ve uygulama içi üye merkezi) gerçekleşir. Ziyaretçinin site içi davranışının en azından kendi oturumları arasında birleştirilmesi için tutarlı bir anonymous_id kullanın.

02 — Kurulum

İki giriş yolu. YOUR_TEAM_ID'ı ayarlayın ve yayındasınız.

Önerilen

Seçenek A · Barındırılan — tek satır

</body>'dan önce bir komut dosyası etiketi bırakın. Tek sayfalık uygulama rota değişikliklerini otomatik olarak izler ve window.flashTrack()'i ortaya çıkarır; bağlanacak başka hiçbir şey yoktur.

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 dosyasını indirinKaynak kodu görüntüle ↗bağımlılık yok · isterseniz kendi kaynağınızdan kendi kendine barındırın

Seçenek B · Satır içi — harici komut dosyası yok

Sıfır harici istek mi istiyorsunuz (katı CSP veya kendi paketinizin içindeki kod)? Bunun yerine bu bağımsız pasajı yapıştırın. window.shTrack()'ı ortaya çıkarır - tek sayfalı bir uygulamadaki her rota değişikliğinden sonra onu çağırın:

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 — Yük sözleşmesi

İşaret gövdesi

application/json gönderin (veya sendBeacon aracılığıyla düz bir string). 4 KB'den büyük veya doğrulama başarısız olan her şey sessizce atılır.

AlanTürNotlar
vnumberŞema sürümü. Her zaman 1.
page_urlstringSayfanın tam URL'si (≤ 2048). Gerekli.
page_titlestring?Belge başlığı (≤ 500).
referrerstring?belge.yönlendiren (≤ 2048).
anonymous_idstringOluşturduğunuz tarayıcı başına sabit kimlik (≤ 36). Gerekli.
session_idstringOturum başına oluşturduğunuz kimlik (≤ 36). Gerekli.
team_idstringSocialHub ekip kimliğiniz (≤ 36) — markayı tanımlar. Gerekli.
utmobject?{ kaynak, ortam, kampanya, terim, içerik } string sorgusundan ayrıştırıldı.
screenstring?"1920x1080".
languagestring?gezgin.dil.
timezonestring?IANA tz, örneğin America/Los_Angeles.
timestampnumberİstemci dönemi ms. Gerekli.
04 — Koruma

Sahte trafiğe karşı dayanıklı olacak şekilde tasarlandı

team_id'ınız sayfa kaynağınızda yer alır; herhangi bir analiz kimliği gibi herkese açıktır. Bu nedenle uç nokta, sunucu tarafında sessizce kendini savunur (her zaman 204'e yanıt verir, bu nedenle bir saldırganın yoklayabileceği bir geri bildirim olmaz):

Temel oran sınırlaması · her zaman açık

Her ekip varsayılan olarak, herhangi bir kurulum gerektirmeden korunur: uç nokta, bir kaynağın gönderebileceği işaretçi sayısını sınırlar, böylece kazınmış bir team_id, analizlerinizi boğamaz veya zehirleyemez. Arıza durumunda bile açık kalır — geçici bir kesinti gerçek trafiğinizi asla düşürmez.

Menşe izin listesi · isteğe bağlı

Ayarlar → İzleme Koruması bölümünde, kabul edilen işaretçileri kendi alan adlarınızla sınırlandırabilir ve uygulamadan önce false pozitiflerini kontrol etmek için bir İzleme önizlemesi yapabilirsiniz. Bu, tarayıcınızda SDK kullanan diğer siteleri engeller.

Sınırlar konusunda dürüst

Oran sınırlaması ve izin verilenler listesi çıtayı yükseltir ve hasarı sınırlar, ancak hiçbir anahtarsız istemci, kararlı bir komut dosyasının istekleri taklit etmesini tamamen durduramaz. Yüksek hassasiyetli veri alımı için, kimlik doğrulaması yapılmış API üzerinden sunucudan sunucuya gönderim yapın.

Aşağı akışta temiz rakamlar

Kötüye kullanım önleme, herhangi bir şey depolanmadan önce çalışır, bu nedenle filtrelenmiş trafik asla üye zaman çizelgenize, segmentlerinize veya gösterge panellerinize ulaşmaz ve İzleme Koruması sayfası ne kadarının dışarıda tutulduğunu gösterir.

05 — Gizlilik

Ziyaretçiye yapı gereği saygı gösterin

GPC ve İzlemeyi Engelle

Bu kod parçası navigator.globalPrivacyControl ve navigator.doNotTrack'i kontrol eder ve bunlardan biri ayarlanmışsa hiçbir şey göndermez. Bu önlemi koruyun.

Ham kişisel bilgi yok

Yalnızca tanımlayıcıları ve sayfa içeriğini gönderin; işaretçide hiçbir zaman ad, e-posta veya form içeriği göndermeyin. Üye kimliği sitenizde değil Flash yüzeylerinde çözümlenir.

Önce onay banner'ınız

Siteniz bir izin yöneticisi kullanıyorsa, pasajı rızanın arkasına geçirin; izleyiciyi yalnızca ziyaretçi analitiği kabul ettikten sonra arayın.

Bot filtreli

Sunucu tarafı bot tespiti, insan dışı trafiği işaretler, böylece üye zaman çizelgenizi veya istatistiklerinizi kirletmez.

Yolculuğun geri kalanını yakalayın

Web, dört yüzeyden biridir. E-posta, sadakat portalı ve uygulamanızın aynı üye zaman çizelgesini nasıl beslediğini görün.