Widget de suscripción
El widget de suscripción es un aviso y una campana lanzadora que invitan a los visitantes del sitio a suscribirse a las notificaciones push, configurados juntos como subscriptionWidget pero activados de forma independiente: solo el aviso, solo la campana, o ambos a la vez. Activar cualquiera de los dos sustituye al botón de suscripción a notificaciones push, al Popup de suscripción personalizado y a la solicitud de suscripción — mientras al menos una de las dos partes esté activada, ninguno de esos tres widgets anteriores se carga en la página.
Un visitante que aún no ha decidido ve la solicitud del aviso. Un visitante que ya bloqueó las notificaciones ve en su lugar una explicación de cómo desbloquearlas.
Requisitos previos
Anchor link toAsegúrate de haber implementado Pushwoosh Web SDK 3.0 en tu sitio web. Para ello, sigue nuestra guía de integración.
1. Activar el aviso y la campana
Anchor link toAñade el parámetro subscriptionWidget a la inicialización del WebSDK y establece prompt.enabled y/o launcher.enabled en true:
Pushwoosh.push(['init', { //... subscriptionWidget: { prompt: { enabled: true }, launcher: { enabled: true }, }}]);Todos los campos siguientes son opcionales. Uno omitido recurre a su valor predeterminado. En el fragmento de inicialización, un número fuera de su rango se ajusta silenciosamente al límite más cercano y un valor de enumeración no válido recurre silenciosamente a su valor predeterminado, sin advertencia en la consola. Los formularios del Panel de Control descritos más adelante validan cada campo y se niegan a guardar uno no válido.
2. Configurar el aviso y la campana
Anchor link toPushwoosh.push(['init', { //... subscriptionWidget: { prompt: { enabled: true, layout: 'card', // 'card' | 'bar' | 'modal' position: 'bottom-right', iconUrl: 'https://url-image.png', borderRadius: 12, // 0–32 overlay: false, }, launcher: { enabled: true, position: 'bottom-right', // 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' offset: 20, // 0–100 width: 48, // 16–200 height: 48, // 16–200 imageUrl: 'https://url-image.png', background: '#4285f4', iconColor: '#ffffff', }, display: { trigger: 'auto', // 'auto' | 'launcher' | 'manual' delay: 5, // seconds, 0–3600 cappingCount: 3, // auto-shows per visitor, 0–100, 0 = unlimited cappingInterval: 24, // hours between auto-shows, 0–8760 }, texts: { title: 'Stay in the loop', message: 'Get notified about news and updates.', acceptText: 'Allow', declineText: 'Not now', closeText: 'Close', blockedTitle: 'Notifications are blocked', blockedMessage: 'Enable notifications in your browser settings to stay updated.', launcherLabel: 'Subscribe to notifications', launcherBlockedLabel: 'Notifications are blocked', }, colors: { background: '#ffffff', accent: '#4285f4', text: '#000000', textSecondary: '#666666', }, }}]);Diseño y posición
Anchor link toprompt.layout establece la forma del aviso:
card— una tarjeta compacta anclada a un borde o una esquina.prompt.positionaceptatop,bottom,top-left,top-right,bottom-leftobottom-right.bar— una barra que ocupa todo el ancho de la página.prompt.positionsolo aceptatopobottom.modal— una ventana centrada en la página.prompt.positiones siemprecenter.
Consulta la lista anterior para conocer el diseño configurado antes de elegir una posición. En el fragmento de inicialización, una posición que el diseño actual no admite se sustituye silenciosamente por el valor predeterminado del diseño. El formulario del Panel de Control rechaza esa combinación en su lugar.
Cuándo mostrar el aviso
Anchor link todisplay.trigger controla qué abre el aviso:
auto— se abre automáticamentedisplay.delaysegundos después de que carga la página, y luego de nuevo cadadisplay.cappingIntervalhoras si el visitante no ha decidido, hastadisplay.cappingCountveces en total (0significa sin límite).launcher— nunca se abre por temporizador. Establécelo junto conlauncher.enabled: truepara que un clic en la campana pueda abrirlo. La API manual lo abre igualmente, sin importar este ajuste ni si la campana está activada.manual— se abre solo mediantePushwoosh.moduleRegistry.subscriptionWidget, descrito más abajo.
display.delay, display.cappingCount y display.cappingInterval solo se aplican al disparador auto.
La campana lanzadora
Anchor link tolauncher.enabled muestra una campana flotante a un visitante que todavía puede actuar ante la solicitud (aún no suscrito, o bloqueado), independientemente del aviso y de display.trigger. La campana permanece en pantalla mientras el aviso está abierto. launcher.position la coloca en una de las cuatro esquinas. launcher.offset establece su distancia a los bordes, en píxeles.
El efecto de un clic en la campana depende del aviso. Si prompt.enabled es true, el clic lo alterna: lo abre, o lo cierra si ya está abierto. Si el aviso está desactivado, el clic solicita el permiso al navegador directamente, igual que Pushwoosh.subscribe() — salvo que el visitante ya haya bloqueado las notificaciones, en cuyo caso el clic no hace nada.
launcher.width y launcher.height establecen el tamaño de la campana en píxeles (16–200, 48 por defecto para cada uno). launcher.imageUrl dibuja una imagen en lugar del botón redondo con forma de campana. launcher.background y launcher.iconColor establecen el relleno y el color del glifo del botón redondo. Si no se definen, launcher.background toma por defecto el color de acento de la paleta y launcher.iconColor un color de glifo calculado para contrastar con él.
Textos y colores
Anchor link totexts.blockedTitle, texts.blockedMessage y texts.closeText se muestran en lugar de la solicitud una vez que el navegador informa que el visitante bloqueó las notificaciones — texts.acceptText y texts.declineText nunca aparecen en ese estado. texts.launcherLabel y texts.launcherBlockedLabel son el texto emergente de la campana en cada estado. Cada campo de texto acepta hasta 300 caracteres.
colors.accent, colors.background, colors.text y colors.textSecondary aceptan un valor hexadecimal o un nombre de color CSS. Los formularios del Panel de Control validan cada uno de ellos, y también launcher.background/launcher.iconColor, de esta manera, hasta 64 caracteres. El fragmento de inicialización acepta cualquier cadena no vacía para colors.* sin comprobar formato ni longitud. Para launcher.background/launcher.iconColor no comprueba el formato, pero recorta silenciosamente el valor a 64 caracteres.
Gestionarlo en el Panel de Control
Anchor link toEn una aplicación gestionada desde el panel, ve a Settings → Configure platforms → Web. El aviso y la campana son dos tarjetas distintas allí, cada una con su propia insignia On/Off y su botón Configure:
- Subscription invitation edita el aviso: Invitation (diseño, posición, icono), When to show (disparador, retraso, límite de frecuencia), Texts y Colors.
- Subscription bell edita el lanzador: posición, URL de la imagen, ancho/alto, color de fondo y del icono, y sus propios textos emergentes.
El botón Configure de cada tarjeta abre una vista previa en vivo junto al formulario. La vista previa no dibuja nada mientras el interruptor de esa tarjeta está desactivado. Una vez activado, un menú desplegable sobre la vista previa alterna entre la solicitud al visitante indeciso y la explicación para el visitante bloqueado. Guardar una tarjeta reemplaza solo su mitad de la copia de la configuración del widget en el panel — los ajustes de la otra tarjeta y el fragmento de inicialización del WebSDK en tu sitio no se modifican.
Mientras una aplicación esté gestionada desde el panel, los valores guardados en cualquiera de las dos tarjetas anulan las mismas claves en el fragmento de inicialización del sitio.
3. Controlar el aviso desde tu código
Anchor link toUna vez que se ha cargado el paquete del widget, publica una API en Pushwoosh.moduleRegistry.subscriptionWidget:
Pushwoosh.moduleRegistry.subscriptionWidget.show(); // Opens the promptPushwoosh.moduleRegistry.subscriptionWidget.hide(); // Closes the promptPushwoosh.moduleRegistry.subscriptionWidget.toggle(); // Toggles the current statePushwoosh.moduleRegistry.subscriptionWidget.toggle(true); // Opens the promptPushwoosh.moduleRegistry.subscriptionWidget.isVisible(); // Returns whether the prompt is openshow() y toggle() no tienen efecto mientras prompt.enabled sea false, ni para un visitante que ya se suscribió. Abrir el aviso despacha un evento show-subscription-widget. Cerrarlo despacha hide-subscription-widget:
Pushwoosh.addEventHandler('show-subscription-widget', function() { console.log('Triggered event: show-subscription-widget');});
Pushwoosh.addEventHandler('hide-subscription-widget', function() { console.log('Triggered event: hide-subscription-widget');});Migración desde los widgets anteriores
Anchor link toEl botón de suscripción a notificaciones push, el Popup de suscripción personalizado y la solicitud de suscripción siguen funcionando tal como se documenta en sus propias páginas mientras subscriptionWidget.prompt.enabled y subscriptionWidget.launcher.enabled del sitio permanezcan ambos sin definir o en false. Activar cualquiera de los dos detiene la carga de los tres, tanto en una aplicación configurada mediante fragmento como en una gestionada desde el panel.