SocialHub.AI
Centro para desarrolladores · Seguimiento web

Realice un seguimiento del comportamiento en su propio sitio web.

Al añadir una baliza propia a cualquier sitio web de marketing o comercio electrónico, las visitas a la página se integran en la misma línea de tiempo de comportamiento del miembro que el correo electrónico, el portal de fidelización y tu aplicación. Sin claves ni dependencias: solo unas pocas líneas de JavaScript puro que envían datos a un endpoint público. Flash analiza la información del dispositivo, la geolocalización y la detección de bots en el servidor.

01 — Cómo funciona

Una línea alojada o un fragmento independiente

Añade el rastreador alojado con una sola etiqueta de script, o pega el fragmento autocontenido si prefieres no depender de ninguna dependencia externa; en ambos casos, genera los identificadores, respeta las señales de privacidad y POST registra una visita a la página en un único punto final:

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

Envías los bits del cliente.

URL, título, referencia, identificadores, pantalla, idioma, zona horaria, UTM, eso es todo.

Flash enriquece el lado del servidor

El dispositivo, el sistema operativo y el navegador se analizan desde el Agente de usuario; país del IP; Los bots se detectan y marcan. Nunca se debe confiar en el cliente para esto.

Siempre devuelve 204

Bot, GPC, con formato incorrecto o aceptado: el punto final responde silenciosamente. El seguimiento nunca genera errores en tu página.

En tu propio dominio, el comportamiento es anónimo. No hay ninguna cookie de sesión Flash en tu sitio, por lo que las visitas a la página se asocian a la anonymous_id que generas, no a un miembro conocido. La atribución de miembros se realiza en las superficies propiedad de Flash (el portal de fidelización y el centro de miembros en la aplicación), donde la sesión resuelve la identidad del miembro. Utiliza una anonymous_id consistente para que el comportamiento de un visitante en el sitio sea, al menos, unificado en todas sus sesiones.

02 — Instalación

Dos maneras de entrar. Configura YOUR_TEAM_ID y listo.

Recomendado

Opción A · Alojado — una línea

Coloque una etiqueta de script antes de </body>. Realiza un seguimiento automático de los cambios de ruta de la aplicación de una sola página y expone window.flashTrack(), nada más que conectar.

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>
↓ Descargar flash-tracker.jsVer código fuente ↗sin dependencias · autoanfitrión desde tu propio origen si lo prefieres

Opción B · En línea: sin script externo

¿Quiere cero solicitudes externas (CSP estricto o el código dentro de su propio paquete)? En su lugar, pegue este fragmento independiente. Expone window.shTrack(): llámelo después de cada cambio de ruta en una aplicación de una sola página:

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 — Contrato de carga útil

El cuerpo del beacon

Envía application/json (o un simple string a través de sendBeacon). Cualquier archivo que supere los 4 KB o que falle la validación se descarta silenciosamente.

CampoTipoNotas
vnumberVersión del esquema. Siempre 1.
page_urlstringURL completa de la página (≤ 2048). Requerido.
page_titlestring?Título del documento (≤ 500).
referrerstring?document.referrer (≤ 2048).
anonymous_idstringID estable por navegador que generas (≤ 36). Requerido.
session_idstringID por sesión que genere (≤ 36). Obligatorio.
team_idstringSu ID de equipo de SocialHub (≤ 36): identifica la marca. Requerido.
utmobject?{ origen, medio, campaña, término, contenido } analizados a partir de la consulta string.
screenstring?"1920x1080".
languagestring?navigator.language.
timezonestring?Zona horaria IANA, p. ej., América/Los Ángeles.
timestampnumberÉpoca del cliente ms. Requerido.
04 — Protección

Diseñado para resistir el tráfico fraudulento

Tu team_id reside en el código fuente de tu página; al igual que cualquier ID de análisis, es público. Por lo tanto, el punto final se defiende en el servidor de forma silenciosa (siempre responde a 204, por lo que un atacante no recibe información que pueda utilizar para sondear):

Limitación de tasa base · siempre activa

Cada equipo está protegido por defecto sin ninguna configuración: el punto final limita la cantidad de balizas que una fuente puede enviar, por lo que un scraped team_id No puede saturar ni contaminar tus análisis. Es de tolerancia a fallos: una interrupción transitoria nunca afecta a tu tráfico real.

Lista de permitidos de origen · opcional

En Configuración → Protección de seguimiento, puede restringir las balizas aceptadas a sus propios dominios, con una vista previa de monitorización para comprobar si hay positivos de false antes de aplicar la restricción. Esto impide que otros sitios web utilicen su SDK en un navegador.

Honesto sobre los límites

La limitación de velocidad y la lista de permitidos aumentan el nivel de alerta y limitan el daño, pero ningún cliente sin clave puede impedir por completo que un script intencionado falsifique solicitudes. Para una ingesta de alta sensibilidad, envíe de servidor a servidor a través de la autenticación API.

Números limpios aguas abajo

La protección contra el abuso se ejecuta antes de que se almacene cualquier dato, por lo que el tráfico filtrado nunca llega a la cronología, los segmentos ni los paneles de control de tus miembros. La página de Protección de seguimiento te muestra cuánto tráfico se ha excluido.

05 — Privacidad

Respete al visitante desde el principio.

GPC y No rastrear

El fragmento de código comprueba `navigator.globalPrivacyControl` y `navigator.doNotTrack`, y no envía nada cuando alguno de ellos está activado. Mantén esa protección.

Sin PII sin procesar

Envíe identificadores y contexto de página únicamente; nunca nombres, correos electrónicos o contenidos de formularios en la baliza. La identidad del miembro se resuelve en Flash superficies, no en su sitio.

Primero, su banner de consentimiento

Si su sitio utiliza un administrador de consentimiento, bloquee el fragmento detrás del consentimiento; solo llame al rastreador una vez que el visitante haya aceptado los análisis.

Filtrado por bots

La detección de bots del lado del servidor señala el tráfico no humano para que no contamine el cronograma o las estadísticas de sus miembros.

Captura el resto del recorrido

La web es una de las cuatro superficies. Observa cómo el correo electrónico, el portal de fidelización y tu aplicación alimentan la misma cronología de miembros.