Skip to main content

Configuración y depuración

Es posible que necesites envolver las llamadas a OneSignal en OneSignalDeferred.push(async function (OneSignal) { ... }) (usa function (OneSignal) { ... } cuando no necesites await). El argumento OneSignal es la instancia del SDK que se usa a lo largo de esta referencia (por ejemplo, await OneSignal.init({ ... })). Puedes hacer push de varios callbacks, o incluir varias sentencias dentro de un solo callback. El SDK de OneSignal se carga con el atributo defer en tu página. Por ejemplo: <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script> De esa forma, el SDK se ejecuta después de que el documento se haya analizado y no bloquea el renderizado. Los scripts que se ejecutan antes aún necesitan un lugar donde encolar trabajo hasta que el SDK esté listo. Comienza con: window.OneSignalDeferred = window.OneSignalDeferred || []; Esa línea define OneSignalDeferred si no existe. Si un fragmento anterior de la página ya lo definió, se conserva la misma referencia; de lo contrario, comienza como un array vacío [] al que haces push de callbacks. Los arrays exponen un método .push(), por lo que encolas funciones con OneSignalDeferred.push(...). Cuando el SDK se carga, vacía la cola y redefine .push() para que los push posteriores se ejecuten de inmediato (consulta el código fuente del Web SDK).
La mayoría de los fragmentos a continuación usan OneSignal solo. Trátalo como la instancia de tu callback diferido después de await OneSignal.init({ ... }), a menos que una sección indique lo contrario (por ejemplo, setConsentRequired() antes de init).

init()

Inicializa el SDK de OneSignal. Debe llamarse en la etiqueta <head> una vez en cada página de tu sitio. El ONESIGNAL_APP_ID se encuentra en Keys & IDs.
Si quieres retrasar la inicialización del SDK de OneSignal, recomendamos usar nuestros métodos de privacidad.
Las opciones de init solo funcionan con la configuración de código personalizado. De lo contrario, se configuran en el panel de OneSignal.

Parámetros de promptOptions

Usa promptOptions para localizar o personalizar los prompts de permiso del usuario. Todos los campos son opcionales. Estructura: promptOptions.slidedown.prompts es un array; cada elemento es una configuración de prompt. Los campos type, autoPrompt, delay, text y categories pertenecen a cada objeto dentro de prompts, no son claves de nivel superior junto a appId en init.

Parámetros de notifyButton

Configura la Subscription Bell (botón de notificación) que se muestra en la página.

Parámetros de welcomeNotification

Personaliza la notificación de bienvenida enviada después de la primera suscripción.
Ejemplo:

setLogLevel()

Configura el registro para imprimir logs adicionales en la consola. Consulta los pasos de solución de problemas para más detalles. Ejecútalo desde un callback diferido después de init (la misma instancia de OneSignal que en el resto de la página).
JavaScript
Niveles de log:
  • 'trace'
  • 'debug'
  • 'info'
  • 'warn'
  • 'error'

Identidad y propiedades del usuario

Cuando los usuarios se suscriben a notificaciones push en tu sitio web, OneSignal crea automáticamente un OneSignal ID (ID a nivel de usuario) y un Subscription ID (ID a nivel de dispositivo). Puedes asociar múltiples Suscripciones (p. ej., dispositivos, emails, números de teléfono) con un solo usuario llamando a login() con tu identificador de usuario único.
Consulta Usuarios y Suscripciones para más detalles.

login(external_id)

Establece el contexto del usuario actual con el external_id proporcionado. Esto vincula el dispositivo actual (Suscripción push web) a un usuario conocido y unifica todos los datos futuros bajo un único onesignal_id. Usa este método solo para usuarios identificados (por ejemplo, después de iniciar sesión o restaurar la cuenta). Para usuarios anónimos, no llames a login. En su lugar, rastréalos usando su onesignal_id asignado automáticamente (consulta OneSignal.User.onesignalId). Qué sucede cuando llamas a login(external_id) El SDK se comporta de forma diferente según si el external_id ya existe en la aplicación de OneSignal. Si el external_id ya existe:
  • El SDK cambia a ese usuario existente.
    • Puedes ver un 409 Conflict en el registro de red del navegador o en la consola. Significa que el External ID ya existe en la aplicación; es esperado en este caso y normalmente no es un rechazo de promesa que debas manejar.
  • El onesignal_id actual se descarta y se carga el onesignal_id existente de ese usuario.
  • El dispositivo actual (Suscripción push web) se vincula al usuario existente.
  • Los datos anónimos recopilados antes del login no se fusionan y se descartan. Esto incluye tags, datos de sesión, Suscripciones de email/SMS y otras propiedades locales del usuario.
Si el external_id no existe:
  • Se crea un nuevo usuario usando el onesignal_id actual.
  • Se conservan todos los datos recopilados mientras el usuario era anónimo.
  • El dispositivo (Suscripción push web) queda vinculado a este nuevo usuario.
Comportamiento de reintento:
  • El SDK reintenta automáticamente la solicitud de login ante fallos de red o errores del servidor.
  • No necesitas implementar tu propia lógica de reintento.
Mejores prácticas:
  • Llama a login(external_id) en cada carga de página una vez que conozcas el ID del usuario (por ejemplo, después del inicio de sesión o la restauración de sesión).
  • Llámalo de nuevo cada vez que cambie el usuario con sesión iniciada (cambio de cuenta).
  • No llames a login antes de tener un identificador de usuario estable y conocido.
JavaScript

logout()

Desvincula al usuario actual de la Suscripción push web.
  • Elimina el external_id de la Suscripción push web actual. No elimina el external_id de otras Suscripciones.
  • Restablece el onesignal_id a un nuevo usuario anónimo.
  • Cualquier dato nuevo (p. ej., tags, Suscripciones, datos de sesión, etc.) se establecerá ahora en el nuevo usuario anónimo hasta que se identifique con el método login.
Usa esto cuando un usuario cierre sesión en tu sitio y ya no quieras enviar mensajes transaccionales dirigidos a ese navegador.
JavaScript

OneSignal.User.onesignalId

Recupera el onesignal_id del usuario actual almacenado localmente en el navegador. Este valor representa el contexto de usuario activo (el User ID de OneSignal) y puede cambiar con el tiempo — por ejemplo, cuando llamas a login(external_id) o cuando el SDK se inicializa. Si se llama demasiado pronto, este método puede devolver null. Este valor no es el Subscription ID, que se usa para identificar el navegador, es decir, la Suscripción push web (consulta User.PushSubscription.id). Cuándo está disponible onesignal_id:
  • Después de que el SDK de OneSignal termina de inicializarse
  • Después de que un usuario es identificado con login(external_id)
  • Después de cambiar de usuario o restaurar una sesión
Si necesitas reaccionar de forma confiable a los cambios u obtener este ID, usa addEventListener('change', …) de estado del usuario en lugar de hacer polling. Casos de uso comunes: En la mayoría de los casos, querrás usar tu propio External ID establecido mediante el método login. Sin embargo, hay algunos casos en los que puedes querer usar el onesignal_id directamente.
  • Rastrear usuarios anónimos antes de que se establezca un External ID
  • Almacenar el OneSignal ID en tu backend para soporte o depuración
  • Correlacionar usuarios de OneSignal con registros internos
  • Mostrar el ID para solución de problemas o QA
No persistas el OneSignal ID como identificador permanente de usuario. Puede cambiar cuando los usuarios inician sesión, cierran sesión o cambian de cuenta.
JavaScript

OneSignal.User.externalId

Recupera el External ID del usuario actual guardado localmente en el navegador. Puede ser null si no se estableció mediante el método login o si se llama antes de que se inicialice el estado del usuario. En su lugar, usa addEventListener('change', …) de estado del usuario para escuchar los cambios de estado del usuario.
JavaScript

addEventListener() User State

Escucha los cambios en el contexto del usuario (p. ej., login, logout, asignación de ID).
JavaScript

addAlias(), addAliases(), removeAlias(), removeAliases()

Los alias son identificadores alternativos (como nombres de usuario o IDs de CRM).
  • Establece el external_id con login() antes de agregar alias. Los alias agregados a suscripciones sin external_id no se sincronizarán entre múltiples suscripciones.
  • Consulta Alias para más detalles.
JavaScript

getLanguage(), setLanguage()

Obtén y/o anula el idioma detectado automáticamente del usuario. Consulta Mensajería multilenguaje para ver la lista de códigos de idioma disponibles.
JavaScript

Eventos personalizados

Activa Journeys y la activación del paso Wait Until mediante un evento personalizado.
Los eventos personalizados requieren el Web SDK 160500+.El usuario debe haber iniciado sesión para que se rastreen los eventos personalizados.Llama a las APIs de eventos personalizados en la instancia OneSignal pasada a OneSignalDeferred.push (consulta Configuración y depuración al inicio de esta página), no en window.OneSignal — el SDK de página se inicializa a través de la cola diferida, y ese callback es la forma soportada de acceder a OneSignal.User.
Rastrea y envía un evento personalizado realizado por el usuario actual.
  • name - Obligatorio. El nombre del evento como string.
  • properties - Opcional. Pares clave-valor para agregar al evento. El diccionario o mapa de propiedades debe ser serializable en un objeto JSON válido. Admite valores anidados.
El SDK incluye automáticamente datos específicos de la aplicación en el payload de propiedades bajo la clave reservada os_sdk, que estará disponible para su consumo. Por ejemplo, para segmentar eventos por tipo de suscripción, accederías a os_sdk.type.
json

trackEvent()

Llámalo después de que init() se complete. Este ejemplo usa un solo callback diferido para que init siempre se ejecute antes que trackEvent:
JavaScript
En producción, agrega trackEvent al callback diferido donde ya haces await OneSignal.init(...). No registres un segundo init a menos que sea intencional.

Tags

Los tags son pares personalizados key : value de datos de tipo string que estableces en los usuarios según eventos o propiedades del usuario. Consulta Tags para más detalles.

addTag(), addTags()

Establece uno o varios tags en el usuario actual.
  • Los valores se reemplazarán si la clave ya existe.
  • Exceder el límite de tags de tu plan hará que las operaciones fallen silenciosamente.
JavaScript

removeTag(), removeTags()

Elimina uno o varios tags del usuario actual.
JavaScript

getTags()

Devuelve la copia local de los tags del usuario. Los tags se actualizan desde el servidor durante login() o en nuevas sesiones de la aplicación.
JavaScript

Privacidad

setConsentRequired()

Exige el consentimiento del usuario antes de que comience la recopilación de datos. Debe llamarse antes de que se ejecute init() (por ejemplo, al inicio del primer callback de OneSignalDeferred, antes de await OneSignal.init(...)). Este método es equivalente a agregar requiresUserPrivacyConsent: true a las opciones de init.
JavaScript

setConsentGiven()

Otorga o revoca el consentimiento del usuario para la recopilación de datos. Sin consentimiento, no se envían datos a OneSignal y no se crea ninguna suscripción.
  • Si setConsentRequired() o requiresUserPrivacyConsent se establece en true, nuestro SDK no estará completamente habilitado hasta que se llame a setConsentGiven con true.
  • Si setConsentGiven se establece en true y se crea una Suscripción, y luego se establece en false, esa Suscripción ya no recibirá actualizaciones. Los datos actuales de esa Suscripción permanecen sin cambios hasta que setConsentGiven se establezca en true nuevamente.
  • Si quieres eliminar los datos del Usuario y/o de la Suscripción, usa nuestras APIs Delete user o Delete subscription.
JavaScript

Suscripciones

Una Suscripción representa una única instancia de canal de mensajería (por ejemplo, un navegador) y tiene un Subscription ID único (el ID a nivel de dispositivo de OneSignal). Un usuario puede tener múltiples Suscripciones en distintos dispositivos y plataformas. Consulta Suscripciones para más detalles.

User.PushSubscription.id

Recupera el Subscription ID push web del navegador actual, almacenado localmente por el SDK. Este ID identifica de forma única el canal push de este navegador específico, no al usuario. Se usa comúnmente al asociar dispositivos o navegadores con tu backend o al depurar problemas de entrega. Si se llama antes de que la Suscripción se cree o restaure, este valor puede ser null.
Para detectar de forma confiable cuándo el Subscription ID push web está disponible o cambia, usa el listener de Suscripción push.
JavaScript

User.PushSubscription.token

Devuelve el token actual de la suscripción push. Puede devolver null si se llama demasiado pronto. Se recomienda obtener estos datos dentro del observador de suscripción para reaccionar a los cambios.
JavaScript

addEventListener() Push Subscription Changes

Usa este método para responder a cambios de la suscripción push como:
  • El dispositivo recibe un nuevo token push de Google (FCM) o Apple (APNs)
  • OneSignal asigna un subscription ID
  • El valor de optedIn cambia (p. ej., se llamó a optIn() u optOut())
  • El usuario cambia el permiso de push en la configuración del navegador o del sistema operativo y luego regresa a tu sitio
Cuando esto sucede, el SDK ejecuta tu listener change con un objeto de estado que incluye previous y current para que puedas detectar qué cambió.
Cuando autoResubscribe es true, los visitantes recurrentes pueden disparar el evento change con optedIn: true tanto en previous como en current porque el permiso del navegador no cambió — solo se volvió a registrar el token push (por ejemplo, después de borrar los datos del sitio o migrar). Para analítica o seguimiento del lado del servidor que deba reflejar suscripciones nuevas o resuscripciones, event.current.token && !event.previous.token suele ser más confiable que comparar optedIn por sí solo.
Para dejar de escuchar actualizaciones, llama a removeEventListener() con la misma referencia de handler que pasaste a addEventListener().
JavaScript
Analítica externa (por ejemplo, Google Analytics mediante dataLayer): dispara un evento personalizado cuando aparece un token push y no había ningún token antes, de modo que el re-registro con optedIn sin cambios se contabilice correctamente. El subscription ID puede llegar en el mismo callback o en un evento change posterior según el momento:
JavaScript
En navegación de incógnito o privada, el Slidedown aún puede aparecer cuando autoPrompt es true, pero las suscripciones push normalmente no persisten después de que termina la sesión. isPushSupported() no detecta la navegación privada; solo indica si el push web está disponible en principio. Antes de activar el prompt de forma programática (por ejemplo, promptPush()), llama de todas formas a isPushSupported() para evitar mostrar el prompt en navegadores que no pueden usar push web.

optOut(), optIn(), optedIn

Controla el estado de suscripción (subscribed o unsubscribed) de la Suscripción push actual. Usa estos métodos para controlar el estado de la suscripción push en tu sitio. Casos de uso comunes: 1) Evitar que se envíe push a usuarios que cierran sesión. 2) Implementar un centro de preferencias de notificaciones dentro de tu sitio.
  • optOut(): Establece el estado de la suscripción push actual en no suscrito (incluso si el usuario tiene un token push válido).
  • optIn(): Hace una de las siguientes acciones:
    1. Si la Suscripción tiene un token push válido, establece el estado de la suscripción push actual en subscribed.
    2. Si la Suscripción no tiene un token push válido, intenta mostrar el prompt de permiso de push.
  • optedIn: Devuelve true si el estado de la suscripción push actual es suscrito; de lo contrario, false. Si el token push es válido pero se llamó a optOut(), devolverá false.
JavaScript

addEmail(), removeEmail()

Agrega o elimina una Suscripción de email (dirección de correo electrónico) para el usuario actual. Estos métodos son compatibles con la verificación de identidad. Cuando llamas a addEmail(email):
  • La dirección de email se convierte en una Suscripción de email para el usuario actual.
  • El email puede crearse o reasignarse.
  • La misma dirección de email no puede existir varias veces en la misma aplicación de OneSignal. Si ves direcciones de email duplicadas, revisa tus solicitudes a la REST API y contacta a soporte si es necesario.
El SDK devuelve los siguientes códigos de estado HTTP: Cuando llamas a removeEmail(email):
  • La Suscripción de email se elimina del usuario actual.
  • El External ID actual se elimina de la Suscripción de email.
  • Se asigna un nuevo OneSignal ID a la Suscripción de email.
  • Las demás Suscripciones (push, SMS, otros emails) no se ven afectadas.
Mejores prácticas:
  • Llama primero a login() y luego a addEmail(). De lo contrario, el email puede quedar asociado a un usuario anónimo.
  • Usa una dirección de email estable y verificada.
  • Sigue las mejores prácticas de reputación de email.
JavaScript

addSms(), removeSms()

Agrega o elimina una Suscripción de SMS (número de teléfono) para el usuario actual. Los números de teléfono deben proporcionarse en formato E.164 (por ejemplo, +15551234567). Estos métodos son compatibles con la verificación de identidad. Cuando llamas a addSms(phoneNumber):
  • El número de teléfono se convierte en una Suscripción de SMS para el usuario actual.
  • El número puede crearse o reasignarse.
  • El mismo número de teléfono no puede existir varias veces en la misma aplicación de OneSignal. Si ves números de teléfono duplicados, revisa tus solicitudes a la REST API y contacta a soporte si es necesario.
El SDK devuelve los siguientes códigos de estado HTTP: Cuando llamas a removeSms(phoneNumber):
  • La Suscripción de SMS se elimina del usuario actual.
  • El External ID actual se elimina de la Suscripción de SMS.
  • Se asigna un nuevo OneSignal ID a la Suscripción de SMS.
  • Las demás Suscripciones (push, email, otros SMS) no se ven afectadas.
Mejores prácticas:
  • Llama primero a login() y luego a addSms(). De lo contrario, la Suscripción de SMS puede quedar asociada a un usuario anónimo.
  • Valida y normaliza siempre los números de teléfono al formato E.164 antes de enviarlos.
  • Sigue los requisitos de registro de SMS.
JavaScript

Prompts de Slidedown

Muestra los distintos prompts slidedown en tus sitios. Consulta Prompts de permiso web para más detalles.
  • Si se descarta, las llamadas futuras se ignorarán durante al menos tres días. Rechazos adicionales alargarán el tiempo que debe transcurrir antes de volver a mostrar el prompt al usuario.
  • Para anular el comportamiento de espera (back-off), pasa {force: true} al método. Sin embargo, para brindar una buena experiencia de usuario, vincula la acción a un evento iniciado por la interfaz, como un clic en un botón.
Esto no reemplaza el prompt nativo del navegador requerido para la suscripción. Debes obtener los permisos usando el prompt nativo del navegador.

promptPush()

Muestra el prompt slidedown normal para notificaciones push.
JavaScript

promptPushCategories()

Muestra el prompt slidedown de categorías, que permite a los usuarios actualizar sus tags. También activa el prompt nativo de permiso de notificaciones si el usuario aún no ha otorgado el permiso.
  • Si no usas categorías, llama a promptPush() en su lugar.
  • Sujeto a la lógica de espera (backoff) establecida por OneSignal. Consulta Prompts de permiso web para más detalles.
JavaScript

promptSms()

Muestra el prompt de suscripción por SMS.
  • Sujeto a la lógica de espera (backoff) establecida por OneSignal. Consulta Prompts de permiso web para más detalles.
JavaScript

promptEmail()

Muestra el prompt de suscripción por email.
  • Sujeto a la lógica de espera (backoff) establecida por OneSignal. Consulta Prompts de permiso web para más detalles.
JavaScript

promptSmsAndEmail()

Muestra los prompts de suscripción por SMS y email simultáneamente.
  • Sujeto a la lógica de espera (backoff) establecida por OneSignal. Consulta Prompts de permiso web para más detalles.
JavaScript

addEventListener() Slidedown

Agrega un callback para detectar el evento de prompt de Slidedown mostrado.
JavaScript

Notificaciones push

requestPermission()

Solicita el permiso de notificaciones push mediante el prompt nativo del navegador. Sujeto a la lógica de espera (backoff) establecida por el navegador. Consulta Prompts de permiso web para más detalles.
JavaScript

isPushSupported()

Devuelve true si el navegador actual admite push web.
JavaScript

OneSignal.Notifications.permission

Devuelve un booleano que indica el permiso actual del sitio para mostrar notificaciones.
  • true: El usuario ha otorgado permiso para mostrar notificaciones.
  • false: El usuario ha denegado el permiso o aún no lo ha otorgado.
Este valor refleja únicamente el permiso de notificaciones del navegador. No refleja el optOut de OneSignal, el subscription ID ni el token push. Para eso, usa User.PushSubscription (y los métodos relacionados a continuación). Para escuchar los cambios de permiso, usa el evento permissionChange.
JavaScript

addEventListener() Notifications

Puedes engancharte al ciclo de vida de las notificaciones con addEventListener. Reemplaza el primer argumento con un nombre de evento como permissionChange, click o dismiss (consulta las subsecciones a continuación). Puedes registrar múltiples handlers por evento. Para dejar de escuchar, llama a removeEventListener con el mismo nombre de evento y la misma referencia de handler.
JavaScript

permissionChange

Este evento ocurre cuando el usuario hace clic en Permitir o Bloquear, o descarta la solicitud de permiso nativa del navegador.
JavaScript

permissionPromptDisplay

Este evento ocurre cuando la solicitud de permiso nativa del navegador se acaba de mostrar.
JavaScript

click

Este evento se dispara cuando se hace clic en el cuerpo/título de la notificación o en los botones de acción.
JavaScript

foregroundWillDisplay

Este evento ocurre antes de que se muestre una notificación. Este evento se dispara en tu página. Si hay varias pestañas del navegador abiertas en tu sitio, este evento se disparará en todas las páginas en las que OneSignal esté activo.
JavaScript

dismiss

Este evento ocurre cuando:
  • Un usuario descarta deliberadamente la notificación sin hacer clic en el cuerpo de la notificación ni en los botones de acción
  • En Chrome en Android, un usuario descarta todas las notificaciones push web (este evento se disparará por cada notificación push web que mostremos)
  • Una notificación expira por sí sola y desaparece
Este evento no ocurre si un usuario hace clic en el cuerpo de la notificación o en uno de los botones de acción. Eso se considera un evento click de notificación.
JavaScript

setDefaultUrl()

Establece la URL predeterminada para las notificaciones. Si no has establecido una URL predeterminada, tu notificación se abrirá en la raíz de tu sitio de forma predeterminada.
JavaScript
Proporciona una URL válida que se abrirá cuando el usuario haga clic en una notificación que no especifique su propia URL. Si el payload de la notificación incluye una URL, esta anula el valor predeterminado. Safari Web Push no usa setDefaultUrl() de la misma manera; el comportamiento de apertura y del ícono sigue tu configuración de Safari / Apple (por ejemplo, la Site URL en tu configuración web de OneSignal). Consulta Configuración del sitio.

setDefaultTitle()

Establece el título predeterminado que se muestra en las notificaciones.
JavaScript
Si una notificación se crea con un título, el título especificado siempre anula este título predeterminado. El título de una notificación toma de forma predeterminada el título de la página que el usuario visitó por última vez. Si los títulos de tus páginas varían entre páginas, esta inconsistencia puede ser indeseable. Llama a este método para estandarizar los títulos de página en las notificaciones, siempre que no se especifique un título de notificación.

Outcomes

Los métodos de outcomes están en OneSignal.Session. Usa la misma instancia diferida de OneSignal que en el resto de la página después de init.

sendOutcome()

Activa un outcome que se puede ver en el panel de OneSignal. Acepta un nombre de outcome (string, obligatorio) y un valor (number, opcional). Cada vez que se invoca el método sendOutcome con el mismo nombre de outcome, el conteo del outcome aumentará y el valor del outcome se incrementará en la cantidad pasada (si se incluye). Consulta Outcomes personalizados para más detalles.
JavaScript

sendUniqueOutcome()

Activa un outcome que se puede ver en el panel de OneSignal. Acepta solo el nombre del outcome (string, obligatorio). sendUniqueOutcome aumentará el conteo de ese outcome solo una vez por usuario. Consulta Outcomes personalizados para más detalles.
JavaScript