Singular Website SDK le permite atribuir las actividades del sitio web a los puntos de contacto de marketing y realizar un seguimiento de los eventos de usuario dentro de su sitio web. También es un componente clave en la solución de atribución entre dispositivos de Singular, que permite analizar los recorridos de los usuarios y calcular el LTV y el ROAS entre plataformas.
Para obtener más información, consulte nuestras preguntas frecuentes sobre atribución entre dispositivos y atribución web.
Compatibilidad con navegadores:
Chrome: 15+ | Edge: 15+ | Internet Explorer: 10+ |
Safari 5.1+ | Firefox 6+ | Opera: 15+ |
Esta guía cubre la implementación de Website SDK con soporte Singular Web-to-App Banner utilizando el método de implementación de Google Tag Manager.
Si no utiliza Google Tag Manager, puede seguir nuestra guía Cómo habilitar Singular Banners (Guía para desarrolladores) para añadir banners directamente a su implementación nativa.
Si no utiliza Singular Banners puede seguir nuestras guías estándar que se encuentran aquí:
- SDK de Singular Website: Integración Nativa
- Singular Website SDK: Integración con Google Tag Manager
Singular Website SDK es una función para empresas. Si está interesado en utilizar esta función, póngase en contacto con su Customer Success Manager.
Importante
La función Singular Banners requiere configuraciones especiales que son incompatibles con las plantillas integradas de Google Tag Manager (GTM). Debido a esta limitación, las plantillas de Singular GTM para todos los tipos de etiquetas no se pueden utilizar con esta implementación.
Si ya ha implementado Singular WebSDK utilizando las plantillas Singular GTM, deberá realizar la transición a las plantillas HTML personalizadas. Esta transición garantiza la compatibilidad con la plataforma Singular y proporciona una mayor flexibilidad y control sobre su integración.
Requisitos previos
Antes de integrar Singular Website SDK, asegúrese de que se cumplen estos requisitos previos:
- Se ha configuradoGoogle Tag Manager en su sitio.
- Ha configurado los disparadores de Google Tag Manager según sea necesario para los eventos que desea enviar a Singular (su evento de conversión y cualquier evento personalizado).
- Ha configurado las variables de Google Tag Manager necesarias para los eventos que desea enviar a Singular. Por ejemplo, si desea enviar eventos de transacción e incluir los ingresos de la transacción, debe configurar variables para la suma de la transacción y la divisa.
Etiqueta 1 - Añadir la biblioteca SDK
La biblioteca JavaScript de Singular debe cargarse o inyectarse en el sitio antes de que se inicialice el SDK de Singular o se active cualquier función de Singular. Para garantizar esto, la biblioteca se inyectará utilizando la opción de etiqueta HTML personalizada en Google Tag Manager (GTM).
Para mantener una funcionalidad adecuada, la biblioteca debe incluirse en todas las páginas del sitio. Utilizaremos el activador Window Loaded (Ventana cargada) de GTM para controlar el momento de la inyección de la biblioteca y garantizar que se cargue después de que el contenido de la página se haya cargado por completo.
- Cree una etiqueta HTML personalizada para cargar la biblioteca SDK y agregar permiso para obtener datos de sugerencias del cliente.
- Nombre la etiqueta"Singular - SDK Loader".
- Inserte el siguiente código en la ventana HTML
<script> (function() { // Check if singularSdk is already loaded if (window.singularSdk) { return; // SDK already loaded, no need to load again } // Inject the meta tag for client hints delegation var metaTag = document.createElement('meta'); metaTag.setAttribute('http-equiv', 'delegate-ch'); metaTag.setAttribute('content', 'sec-ch-ua-model https://sdk-api-v1.singular.net; sec-ch-ua-platform-version https://sdk-api-v1.singular.net; sec-ch-ua-full-version-list https://sdk-api-v1.singular.net'); document.head.appendChild(metaTag); // Create and load the Singular SDK script var script = document.createElement('script'); script.src = 'https://web-sdk-cdn.singular.net/singular-sdk/latest/singular-sdk.js'; script.async = true; // Once the script is loaded, push to dataLayer script.addEventListener('load', function() { window.dataLayer = window.dataLayer || []; // Ensure dataLayer is initialized window.dataLayer.push({ event: 'singularSDKLibraryLoaded' }); }); // Append the script tag to the head of the document document.head.appendChild(script); })(); </script>
- En Configuración avanzada, establezca la prioridad de disparo de la etiqueta en 99.
- En la sección Triggering, añada un Firing Trigger para"Window Loaded".
- Guarde la etiqueta
Etiqueta 2 - Etiqueta de Inicialización SDK
El código de inicialización de Singular SDK debe ejecutarse cada vez que se carga una página, pero sólo después de que se haya disparado la etiqueta Singular - SDK Loader. Para asegurar esto, utilizaremos el evento Data Layer creado por la etiqueta Singular - SDK Loader como disparador.
La inicialización de Singular SDK es un requisito previo para todas las funciones de atribución de Singular. Sirve para dos propósitos críticos:
- Crear una nueva sesión de usuario cuando un usuario entra en el sitio con nuevos datos publicitarios o cuando ha transcurrido el tiempo de espera de la sesión.
- Enviar un evento de "visita de página" a Singular.
Estos eventos de "visita de página" y sesiones de usuario son esenciales para calcular la retención de usuarios y permitir la atribución de reenganche.
Configuración de las variables definidas por el usuario de GTM
Para inicializar Singular SDK y permitir que envíe datos a Singular, debe proporcionar la clave SDK, el secreto SDK y el ID de producto al objeto SingularConfig. El siguiente fragmento de código está diseñado para recuperar estos valores de las variables definidas por el usuario de GTM. Asegúrese de crear estas variables en Google Tag Manager y de asignar los valores correctos antes de implementar el código.
Recuperación de la clave y el secreto del SDK
- Inicie sesión en su cuenta de Singular.
- Vaya a Herramientas para desarrolladores > Integración SDK > Claves SDK.
- Copie la SDK Key y el SDK Secret para utilizarlos en su configuración.
Definición del ID de producto
- El ID de producto representa su sitio web en Singular. Recomendamos utilizar la notación DNS inversa de su dominio web principal, como com.ejemplo.
- Este valor identificará su sitio Web en toda la plataforma Singular y debe coincidir con el ID del paquete de aplicaciones definido en la página de aplicaciones de Singular.
Para sitios web con varios subdominios
Si su sitio web abarca varios subdominios (por ejemplo, www.example.com y shop.example.com), éstos se tratarán como una única aplicación en la plataforma Singular. En este caso, utilice un ID de producto unificado como com.ejemplo para todos los subdominios.
Añadir variables definidas por el usuario GTM
En Google Tag Manager, debe crear variables definidas por el usuario para almacenar estos valores y, a continuación, hacer referencia a ellos en fragmentos de código cuando sea necesario:
Para crear las variables
- Haga clic en Variables
- Haga clic en"Nueva" en la sección Variables definidas por el usuario.
- Asigne un nombre a la variable y haga clic en el cuadro Configuración de la variable. Nota: el Nombre de la Variable es como el valor será referenciado en los fragmentos de código.
- Elija la opción"Constante" en Utilidades.
- En el campo de formulario Valor, añada el valor correspondiente para la variable.
Siguiendo el proceso anterior, cree 3 variables definidas por el usuario: "Singular SDK Key","Singular Secret Key","Singular Product ID".
Crear la etiqueta de inicialización
- Cree una etiqueta HTML personalizada para gestionar la inicialización del SDK.
- Nombre la etiqueta"Singular - Inicialización del SDK".
- Inserte el siguiente código en la ventana HTML
<script> (function() { // Check if singularSdk is available before proceeding if (window.singularSdk) { var sdkKey = {{Singular SDK Key}}; var secretKey = {{Singular Secret Key}}; var productId = {{Singular Product ID}}; // Create Singular Banners config object & enable web-to-app support var bannersOptions = new BannersOptions().withWebToAppSupport(); // Create SDK config object with Singular Banners support var config = new SingularConfig(sdkKey, secretKey, productId) .withBannersSupport(bannersOptions); //Add additional option here try { // Initialize the SDK singularSdk.init(config); // Display the banner singularSdk.showBanner(); // Push event to dataLayer after initialization window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'singularSDKInitialized' }); } catch (error) { console.error('Error initializing Singular SDK:', error); } } else { console.warn('Singular SDK not loaded or available.'); } })(); </script>
El código anterior es un ejemplo básico para activar los banners de Singular en la inicialización. Actualice las opciones del objeto de configuración de Singular según sus necesidades.
- En Configuración avanzada, establezca la prioridad de disparo de la etiqueta en 98.
- En la sección Triggering, añada un Firing Trigger para un Custom Event.
- Nombre el Trigger:"singularSDKLoaded"
- Especifique el nombre del evento de activación:"singularSDKLibraryLoaded".
- Guarde la etiqueta
La secuencia de la etiqueta debe ser la siguiente cuando se prueba en la vista previa de GTM:
- En el Evento Window Loaded Se dispara la etiqueta Singular - SDK Loader.
- El eventosingularSDKLibraryLoaded es empujado al datalayer.
- Se dispara la etiqueta Singular - SDK Initialization.
- El eventosingularSDKInitialized se envía a la capa de datos.
Opciones de SingularConfig
Es probable que desee añadir opciones para activar diversas capacidades ofrecidas por Singular. Para ello, utilice los métodos ".with" del objeto SingularConfig. Por ejemplo
// Configure the SDK to pass the user ID to Singular
const config = new SingularConfig(sdkKey, sdkSecret, productId)
.withCustomUserId(userId);
Referencia de métodos SingularConfig
Estos son todos los métodos ".with" disponibles.
Método | Descripción | Más información |
.withIdDeUsuario(customId) | Enviar el ID de usuario a Singular | Establecer el ID de usuario |
.withNombreProducto(nombreProducto) | Un nombre opcional para el producto | |
.withLogLevel(logLevel) | Configurar el nivel de registro: 0 - Ninguno (por defecto); 1 - Advertencia; 2 - Información; 3 - Depuración. | |
.withSessionTimeoutInMinutes (tiempo de espera) | Establece el tiempo de espera de la sesión en minutos (por defecto: 30 minutos). |
|
.withAutoPersistentSingularDeviceId (dominio) | Habilitar el seguimiento automático entre subdominios | Persistencia automática mediante cookies |
.withPersistentSingularDeviceId (singularDeviceId) |
Activar el seguimiento manual entre subdominios | Establecer ID de dispositivo singular manualmente |
.withInitFinishedCallback(callback) | Invocar una función callback cuando finaliza la inicialización del SDK | Invocar una función callback cuando la inicialización ha finalizado |
Compatibilidad con aplicaciones de página única (SPA)
Para aplicaciones de una sola página (SPA), en las que el contenido de la página cambia dinámicamente sin necesidad de recargar toda la página, el activador de cambios en el historial de Google Tag Manager (GTM) es una opción excelente para detectar cambios en la ruta. Configure una tercera etiqueta HTML personalizada para garantizar que los métodos apropiados de Singular SDK, como pageVisit(), hideBanner() y showBanner(), se invoquen sólo en los cambios de ruta y no en la carga inicial de la página.
Configuración de GTM:
Creación de un activador de cambio de historial
- En GTM, cree un nuevo activador
- Seleccione Tipo de activador: Cambio de historial
Cree una etiqueta HTML personalizada para los cambios de historial
- Nombre la etiqueta"Singular - Cambio de Ruta SPA".
- Inserte el siguiente código en la ventana HTML
<script> (function () { try { // Ensure Singular SDK is loaded if (window.singularSdk) { // Check if this is the first page load if (!window.singularFirstLoad) { // Mark the first page as processed window.singularFirstLoad = true; console.log('First page load detected. Singular pageVisit skipped.'); } else { // Call Singular's pageVisit for subsequent route changes singularSdk.pageVisit(); console.log('Singular pageVisit triggered for SPA route change.'); } // Hide the current banner singularSdk.hideBanner(); // Delay to ensure route change completion var delay = 200; // Delay in milliseconds setTimeout(function () { // Show the new banner for the current route singularSdk.showBanner(); console.log('Singular banner updated for new route.'); }, delay); } else { console.warn('Singular SDK is not defined. Ensure the SDK is loaded before using this script.'); } } catch (error) { console.error('Error during Singular SPA navigation:', error); } })(); </script>
- Asigne el activador de Cambio de Historial a la etiqueta.
- Guardar y probar
Envío del ID de usuario a Singular (opcional)
Puede enviar su ID de usuario interno a Singular utilizando un método de Singular SDK.
Nota: Si utiliza la solución multidispositivo de Singular, debe recopilar el ID de usuario en todas las plataformas.
- El ID de usuario puede ser cualquier identificador y no debe exponer PII (Personally Identifiable Information). Por ejemplo, no debe utilizar la dirección de correo electrónico, el nombre de usuario o el número de teléfono del usuario. Singular recomienda utilizar un valor hash único sólo para sus datos de origen.
- El valor de ID de usuario que se pasa a Singular también debe ser el mismo ID de usuario interno que se captura en todas las plataformas (Web/Móvil/PC/Consola/Offline).
- Singular incluirá el ID de usuario en las exportaciones a nivel de usuario, ETL y devoluciones internas de BI (si está configurado). El ID de usuario es un dato de origen y Singular no lo comparte con terceros.
- El valor del ID de usuario, cuando se establece con el método Singular SDK, persistirá hasta que se desactive utilizando el método logout() o hasta que se elimine el almacenamiento local del navegador. Cerrar o actualizar el sitio web no elimina el ID de usuario.
- En modo privado/incógnito, el SDK no puede mantener el ID de usuario porque el navegador borra automáticamente el almacenamiento local cuando se cierra.
Para establecer el ID de usuario, utilice el método login(). Para desestablecerlo (por ejemplo, si el Usuario "sale" de la cuenta), llame al método logout().
Nota: Si varios usuarios utilizan un único dispositivo, recomendamos implementar un flujo de cierre de sesión para establecer y desestablecer el ID de usuario para cada inicio y cierre de sesión.
Si ya conoce el ID de usuario cuando se inicializa Singular SDK en el sitio web, establezca el ID de usuario en el objeto config. De esta forma, Singular puede tener el ID de usuario desde la primera sesión. Sin embargo, el ID de usuario no suele estar disponible hasta que el usuario se registra o realiza un inicio de sesión. En ese caso, llame a login() una vez finalizado el flujo de registro. Se recomienda enviar un evento de capa de datos cuando un usuario realiza un flujo de autenticación que se puede utilizar con un activador de eventos personalizados GTM para activar la función de inicio de sesión de Singular.
- Cree una etiqueta HTML personalizada para gestionar la autenticación
- Nombre la etiqueta"Singular - Etiqueta de autenticación".
- Inserte el siguiente código en la ventana HTML
<script> (function() { // Ensure sessionStorage is available if (typeof sessionStorage === 'undefined') { console.warn('sessionStorage is not supported in this environment.'); return; } // Check if the event has already been triggered in this session if (sessionStorage.getItem('sng_login_triggered')) { console.log('Singular SDK event already triggered this session.'); return; // Exit if the event was triggered before in this session } // Check if singularSdk is available and initialized if (window.singularSdk && typeof singularSdk.login === 'function' && typeof singularSdk.event === 'function') { // Dynamically fetch UserID if available (replace with actual method if applicable) var userID = window.userID || "User123456789"; // Example fallback value for userID try { // After Authentication, Pass the UserID as the Singular Custom User ID Value singularSdk.login(userID); // Send the Registration_Completed event (or similar event) singularSdk.event("sng_login"); // Set a flag in sessionStorage to indicate that the event was triggered sessionStorage.setItem('sng_login_triggered', 'true'); console.log('Singular SDK event triggered successfully.'); } catch (error) { console.error('Error triggering Singular SDK event:', error); } } else { console.warn('Singular SDK is not loaded or required methods are unavailable.'); } })(); </script>
- En la sección Activación, añada una activación de disparo para un evento personalizado.
- Nombre el Trigger"singularAutenticación"
- Especifique el nombre del evento de activación correspondiente al nombre del evento de la capa de datos disponible después de que un usuario se autentique en su sitio web.
- Guarde la etiqueta
Los fragmentos de código anteriores muestran cómo implementar Singular Native JavaScript WebSDK utilizando etiquetas HTML personalizadas de GTM para admitir banners. Para una mayor personalización, como el envío de eventos y el seguimiento de los ingresos, consulte la documentación del SDK nativo para obtener definiciones detalladas de las funciones. A continuación, puede crear etiquetas HTML personalizadas adicionales según sea necesario para ampliar su implementación.