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.
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:
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.
Dos maneras de entrar. Configura YOUR_TEAM_ID y listo.
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.
<!-- 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>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:
<!-- 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(); });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.
| Campo | Tipo | Notas |
|---|---|---|
v | number | Versión del esquema. Siempre 1. |
page_url | string | URL completa de la página (≤ 2048). Requerido. |
page_title | string? | Título del documento (≤ 500). |
referrer | string? | document.referrer (≤ 2048). |
anonymous_id | string | ID estable por navegador que generas (≤ 36). Requerido. |
session_id | string | ID por sesión que genere (≤ 36). Obligatorio. |
team_id | string | Su ID de equipo de SocialHub (≤ 36): identifica la marca. Requerido. |
utm | object? | { origen, medio, campaña, término, contenido } analizados a partir de la consulta string. |
screen | string? | "1920x1080". |
language | string? | navigator.language. |
timezone | string? | Zona horaria IANA, p. ej., América/Los Ángeles. |
timestamp | number | Época del cliente ms. Requerido. |
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.
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.