Por qué construimos nuestro propio plugin de notificaciones push para WordPress (y por qué deberías usarlo)

Por qué construimos nuestro propio plugin de notificaciones push para WordPress (y por qué deberías usarlo)

Por qué construimos nuestro propio plugin de notificaciones push para WordPress (y por qué deberías usarlo)

Por CTIMEXICO | Código abierto | WordPress


Llevamos años construyendo sitios en WordPress. Y durante años, cada vez que un cliente nos preguntaba “¿cómo avisamos a nuestros lectores cuando publicamos algo nuevo?”, la respuesta siempre era la misma: instala OneSignal, crea una cuenta, pega una clave de API, cruza los dedos para que funcione y reza para que el plan gratuito aguante antes de que llegue la factura.

Esa respuesta nunca nos convenció del todo.

No porque esos servicios sean malos — algunos son excelentes. Sino porque introducen una dependencia que no tiene nada que ver con tu contenido. Tus lectores se suscriben. Tus lectores confían en ti. Y en algún punto intermedio, un servidor de terceros que no controlas decide si esa notificación llega o no.

Así que construimos algo diferente.


Presentamos WebPush Hub by CTIMEXICO

WebPush Hub es un plugin gratuito y de código abierto para WordPress que envía notificaciones push nativas a tus suscriptores — directamente desde tu servidor, sin intermediarios, sin cuotas mensuales y sin cuentas externas.

Cuando publicas una entrada, tu WordPress envía la notificación. Tus lectores la reciben. Eso es todo.

Sin paneles de control en plataformas ajenas. Sin claves de API que rotar. Sin depender de ningún proveedor.

👉 Descárgalo gratis en WordPress.org


Cómo funciona — La versión simple

Un pequeño popup aparece en la parte inferior de tu sitio preguntando a los visitantes si quieren recibir un aviso cuando publiques algo nuevo. Si dicen que sí, el navegador pide permiso. Con un clic quedan suscritos.

La próxima vez que des clic en “Publicar”, cada suscriptor recibe una notificación en su teléfono o computadora — incluso si el navegador está cerrado.

Sin recopilar correos electrónicos. Sin crear cuentas. Sin fricción.


Cómo funciona — La versión técnica

Para quienes quieren saber qué pasa por dentro:

El plugin implementa el protocolo VAPID (RFC 8292) y el cifrado aes128gcm (RFC 8291) de forma nativa en PHP, usando únicamente las extensiones estándar que vienen con cualquier hosting moderno — openssl, curl, json y mbstring. Sin Composer. Sin librerías externas. Sin dependencias.

Cuando un visitante se suscribe, su navegador genera un endpoint único de suscripción push administrado por el proveedor del navegador (Google para Chrome, Mozilla para Firefox, Apple para Safari). El plugin almacena ese endpoint de forma segura en tu base de datos de WordPress.

Cuando publicas, tu sitio de WordPress envía una petición HTTP cifrada a ese endpoint. El servicio push del navegador la entrega al dispositivo. El contenido de la notificación está cifrado de extremo a extremo — ni Google ni Mozilla pueden leerlo.

Todo el stack criptográfico — generación de claves VAPID, firma JWT, intercambio de claves ECDH, cifrado AES-GCM — corre en tu servidor. Nada sale de tu infraestructura hasta el momento en que se envía una notificación, y aun entonces, solo datos cifrados lo hacen.


Lo que aprendimos construyendo esto

Construir una implementación de Web Push lista para producción en PHP nativo sin librerías externas no es trivial. El protocolo Web Push es una pila de varios RFC apilados uno sobre otro, y la interacción entre la autenticación VAPID y el cifrado del payload es el tipo de cosa que parece sencilla en la documentación y se convierte en tres días de depuración en la práctica.

Algunas cosas con las que nos encontramos:

El orden de argumentos de openssl_pkey_derive() cambia entre versiones de PHP. Lo que funciona en PHP 8.0 falla en PHP 8.2. Lo descubrimos a las malas. El fix está documentado en el código.

Los Service Workers necesitan HTTPS y los headers de scope correctos. Un Service Worker registrado desde dentro de la carpeta de un plugin no puede controlar la raíz de un sitio sin el header Service-Worker-Allowed. WordPress no lo establece automáticamente. Lo resolvimos enrutando el Service Worker a través de una URL de WordPress que establece el header antes de servir el archivo.

Los plugins de caché se comerán tus scripts inline. Autoptimize, WP Super Cache y herramientas similares procesan y aplazan JavaScript de forma agresiva. Un plugin de notificaciones push que inyecta datos de configuración inline es exactamente el tipo de cosa que romperán silenciosamente. La solución es usar wp_enqueue_script y wp_add_inline_script correctamente, y documentar los pasos para limpiar la caché de forma clara.

WordPress Multisitio es un animal diferente. Cada subsitio en una red tiene su propio prefijo de base de datos. Los hooks de activación corren en el contexto del sitio principal. Las claves VAPID almacenadas en la tabla de opciones del blog 1 son invisibles desde el blog 3. Lo resolvimos con una rutina de inicialización multisitio que corre en todos los subsitios durante la activación en red.

Documentamos todo esto para que si te encuentras con alguno de estos problemas, no tengas que pasar tres días resolviéndolo.


Características de un vistazo

  • Sin servicios de terceros — las notificaciones van directamente de tu servidor a tus lectores
  • Sin correos ni registros — un clic para suscribirse, cero fricción
  • Popup personalizable — texto, color de fondo, color de texto y demora configurable
  • Re-invitación inteligente — si un visitante cierra el popup sin suscribirse, vuelve a aparecer después de 7 días (configurable)
  • Envío automático — publica una entrada y las notificaciones salen al instante
  • Listo para Multisitio — la activación en red configura todos los subsitios automáticamente
  • Toggle por sitio — pausa las notificaciones en cualquier subsitio sin desinstalar
  • Auto-limpieza — las suscripciones expiradas se eliminan automáticamente
  • Chrome, Firefox, Edge, Safari — todos los navegadores principales son compatibles

¿Para quién es esto?

Publicadores de contenido que quieren construir una relación directa con su audiencia sin depender de las tasas de apertura del correo electrónico ni de los algoritmos de las redes sociales.

Desarrolladores de WordPress que están cansados de recomendar servicios de terceros a sus clientes y prefieren desplegar algo que controlan completamente.

Agencias y operadores multisitio que necesitan una solución de notificaciones que funcione en toda una red de WordPress sin configuración por sitio.

Propietarios de sitios orientados a la privacidad que quieren minimizar la cantidad de datos de suscriptores que fluyen a través de plataformas externas.


Una nota sobre la escala

Web Push no es un reemplazo para los boletines de correo electrónico a gran escala. Si tienes cientos de miles de suscriptores y necesitas analíticas detalladas, segmentación, pruebas A/B y garantías de entrega con lógica de reintentos, un servicio dedicado es la herramienta correcta.

Pero si tienes una audiencia en crecimiento y quieres una forma rápida, gratuita y respetuosa de la privacidad para traerlos de vuelta cada vez que publicas — WebPush Hub está construido para ti.

Con unos pocos miles de suscriptores, las peticiones HTTP que tu servidor hace a los servicios push de Google y Mozilla son insignificantes. No necesitas un servidor adicional — solo tu WordPress con HTTPS activo.


Código abierto, comunidad primero

WebPush Hub es gratuito y de código abierto, licenciado bajo GPL v2. Lo construimos porque lo necesitábamos, y lo publicamos porque otros también lo necesitarán.

Si encuentras un error, abre un issue. Si tienes una idea, envía un pull request. Si lo usas en tu sitio, nos encantaría saberlo — escríbenos en ctimexico.com.

El plugin está publicado en WordPress.org y el código está en GitHub. Ambos están enlazados abajo.

Creemos que el ecosistema de código abierto alrededor de WordPress es una de las cosas más notables del software. Cada plugin en el directorio es la contribución de alguien a una plataforma que impulsa el 40% de la web. Estamos orgullosos de agregar la nuestra.


Empieza ahora

Instalar WebPush Hub tarda menos de dos minutos:

  1. Busca “WebPush Hub by CTIMEXICO” en el directorio de plugins de tu WordPress, o descárgalo directamente desde WordPress.org.
  2. Activa el plugin.
  3. Ve a Ajustes → Push Notifications y genera tus claves VAPID si no se crearon automáticamente.
  4. Personaliza el texto y los colores de tu popup.
  5. Listo. Tu primer suscriptor está a una visita de distancia.

Puedes verlo funcionando en https://inverxionclub.com


Descargar en WordPress.org → Ver en GitHub → Documentación del plugin →


WebPush Hub by CTIMEXICO es software libre. Siempre lo será.