Emailing

¿Qué es un webhook? Seguimiento de eventos de emails en tiempo real con Mailjet

Averigua qué es exactamente un webhook y por qué los necesitas. El seguimiento de eventos es fácil utilizando webhooks, por eso Mailjet te ofrece la posibilidad de utilizarlos.
Imagen para¿Qué es un webhook? Seguimiento de eventos de emails en tiempo real con Mailjet
diciembre 20, 2022

Los webhooks son una potente forma de recibir notificaciones en tiempo real cuando se producen eventos en tus campañas de email. Esta completa guía te enseñará qué son los webhooks, cómo funcionan con los sistemas de correo electrónico y cómo implementar la funcionalidad de webhooks de Mailjet para realizar un seguimiento en tiempo real de eventos de email como aperturas, clics, rebotes y mucho más.

Al final de esta guía sabrás cómo configurar y optimizar los puntos de conexión de los webhooks, gestionar distintos tipos de eventos y aplicar las mejores prácticas para un procesamiento de eventos de email fiable y adaptable.

¿Qué es un webhook?

Un webhook es una forma sencilla de que un sistema notifique a otro que «acaba de ocurrir algo». Es una solicitud HTTP POST enviada a una URL que tú proporcionas (tu «punto de conexión de webhook» ) que contiene una carga útil JSON que describe el evento. A diferencia de las API que sondeas según un calendario, los webhooks se basan en eventos, ya que envían datos solo cuando hay algo nuevo de lo que informar.

Piensa en los webhooks como la versión de internet de una llamada telefónica: en lugar de comprobar repetidamente si ha ocurrido algo, el sistema te llama inmediatamente cuando ocurre.

Por qué utilizan webhooks distintos equipos

Los webhooks ofrecen varias ventajas para el email marketing y los flujos de trabajo de emails transaccionales:

  • Notificaciones en tiempo real: Actualiza tu aplicación en el momento en que se abra un correo electrónico o se haga clic en un enlace.
  • Asistencia y operaciones más rápidas: Activa alertas cuando se disparen las tasas de rebote o bloqueo.
  • Gestión de datos más limpia: Sincroniza automáticamente las bajas y los rebotes permantentes con tu CRM.
  • Personalización mejorada: Envía mensajes de seguimiento cuando los clientes interaccionen (o si no lo hacen).
  • Mejores análisis: Transmite eventos a tus paneles de control o almacenes de datos.

Webhook frente a sondear con API

Entender la diferencia entre los webhooks y el sondeo tradicional de las API de email ayuda a ilustrar por qué los webhooks son a menudo la mejor opción:

Sondear con APIWebhooks
Extrae datos según un temporizador establecido, aunque no haya cambiado nadaNotificaciones push basadas en eventos
Más peticiones y uso de ancho de bandaMenos solicitudes, más eficientes
Información estratégica retrasada debido a los intervalos entre sondeosActualizaciones instantáneas cuando se producen eventos
Programación compleja y gestión de estadosFlujos de trabajo de automatización más sencillos

Cómo funcionan los webhooks de email de Mailjet

Mailjet puede enviar notificaciones webhook para los siguientes eventos de email:

  • sent (enviado): El email se ha enviado correctamente.
  • open (abierto): El destinatario abrió el email.
  • click (cliqueado): El destinatario hizo clic en un enlace del email.
  • bounce (rebotado): Email rebotado (temporal o definitivo).
  • blocked (bloqueado): El email fue bloqueado por el servidor del destinatario.
  • spam (no deseado): El email se ha marcado como spam.
  • unsub (baja): El destinatario se ha dado de baja.

Comprender las cargas útiles de los webhooks

Cada webhook contiene una carga JSON con información específica del evento. Aquí tienes ejemplos de tipos de eventos habituales:

Carga útil del evento «open»

                            

                                {
  "event": "open",
  "time": 1433103519,
  "MessageID": 19421777396190490,
  "email": "api@mailjet.com",
  "mj_campaign_id": 7173,
  "mj_contact_id": 320,
  "customcampaign": "",
  "CustomID": "helloworld",
  "Payload": "",
  "ip": "127.0.0.1",
  "geo": "US",
  "agent": "Mozilla/5.0 ..."
}
                            
                        

Carga útil del evento «bounce»

                            

                                {
  "event": "bounce",
  "time": 1430812195,
  "MessageID": 13792286917004336,
  "email": "bounce@mailjet.com",
  "blocked": true,
  "hard_bounce": true,
  "error_related_to": "recipient",
  "error": "user unknown"
}

                            
                        

Procesamiento de diferentes tipos de eventos

Cada tipo de evento requiere diferentes estrategias de tratamiento:

  • Baja/spam: Suprimir inmediatamente el contacto en todos los sistemas.
  • Rebote definitivo: Eliminar de las listas de correo y detener futuros envíos.
  • Bloqueado: Inspecciona los detalles del error y la información del proveedor para diagnosticar problemas de entregabilidad.
  • Cliqueado/abierto: Activa campañas de seguimiento, puntúa la interacción y personaliza la experiencia del cliente.

Prácticas recomendadas para webhooks de Mailjet

Seguir estas buenas prácticas garantiza un procesamiento fiable de los webhooks y un rendimiento óptimo:

Gestión de la respuesta

  • Devuelve HTTP 200 OK inmediatamente: Acusa recibo lo antes posible.
  • Procesa de forma asíncrona: Persiste la carga útil en una cola o base de datos, y luego procésala por separado.

Fiabilidad y seguridad

  • Utiliza HTTPS: Aloja tu punto de conexión en una conexión segura.
  • Implementa la autenticación: Protege tu punto de conexión con autenticación básica o claves de API.
  • Monitoriza los fallos: Rastrea las respuestas no-200 para evitar la suspensión de la URL.

Optimización del rendimiento

  • Minimiza el tiempo de procesamiento: Realiza el mínimo trabajo en el gestor de peticiones para evitar tiempos de espera.
  • Utiliza la agrupación de eventos: Configura la Version=2 para agrupar varios eventos en solicitudes únicas.
  • Configura URL de respaldo: Configura puntos de conexión de conmutación por error para mantener el flujo de eventos durante las interrupciones.

Comportamiento de reintentos

Mailjet reintenta automáticamente las entregas webhook fallidas durante un máximo de 24 horas si tu punto de conexión no devuelve una respuesta 200 OK. Si persisten los errores repetidos, se puede llegar a suspender la URL del webhook. Puedes configurar una URL alternativa para garantizar la entrega continua de eventos.

Configurar los webhooks de Mailjet

Puedes configurar los webhooks de Mailjet utilizando la API o la interfaz web. Aquí tienes ambos enfoques:

Opción A: Configuración con la API (recomendado para desarrolladores)

Este método ofrece más control y es ideal para implantaciones automatizadas.

Paso 1: Elige tus tipos de eventos

Decide qué eventos quieres rastrear: sent (enviado), open (abierto), click (cliqueado), bounce (rebote), blocked (bloqueado), spam (no deseado) o unsub (baja).

Paso 2: Crea el webhook a través de la API

Utiliza el recurso eventcallbackurl para configurar tu webhook:

                            

                                curl -X POST \
  https://api.mailjet.com/v3/REST/eventcallbackurl \
  -H 'Authorization: Basic <base64_encoded_api_key:secret>' \
  -H 'Content-Type: application/json' \
  -d '{
  "EventType": "open",
  "Url": "https://ejemplo.com/webhooks/mailjet/open",
  "Version": 2
  }'

                            
                        

Notas de configuración:

  • Version=2 permite agrupar eventos en una única petición POST.
  • Establece «isBackup»: true en una URL secundaria para crear un punto de conexión alternativo si ocurre algún error.

Paso 3: Prueba tu integración

Envía un email de prueba y realiza la acción rastreada (abrir, hacer clic, etc.) para verificar que recibes eventos webhook.

Opción B: Configuración con la interfaz web (opción sin necesidad de código)

Para los equipos que prefieren una interfaz visual:

  1. Accede a app.mailjet.com y ve a Ajustes de la cuenta.
  2. En API REST, selecciona «Notificaciones de eventos (webhooks)».
  3. Añade una URL para todos los eventos o define URL dedicadas por tipo de evento.
  4. Prueba con eventos reales en lugar de la función «Enviar prueba», que envía cargas vacías.

Ejemplos de implementación de webhooks

Aquí tienes implementaciones mínimas de receptores webhook en lenguajes de programación populares:

Node.js con express

                            

                                const express = require('express');
const app = express();

app.use(express.json());

app.post('/webhooks/mailjet/open', (req, res) => {
 // 1. Persiste rápidamente los datos del evento
  console.log('Received webhook:', req.body);
  // TODO: Guardar en la cola o en la base de datos
  // await saveToQueue(req.body);

 // 2. Acusar recibo inmediatamente
  res.status(200).send('ok');
});

app.listen(3000, () => {
  console.log('Servidor de webhook en puerto 3000');
});

                            
                        

Python con flask

                            

                                from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/webhooks/mailjet/open', methods=['POST'])
def handle_open_event():
  data = request.get_json()

  # Procesa los datos del webhook
  print(f&quot;Webhook recibido: {data}&quot;)
  # TODO: Guardar en cola o base de datos
  # save_to_queue(data)

  return jsonify({"status": "ok"}), 200

if __name__ == '__main__':
  app.run(port=3000)
                            
                        

Consejos de configuración avanzada

Aquí tienes algunos consejos que te ayudarán a sacar aún más partido de los webhooks.

Procesamiento por lotes a gran escala

Utiliza Version=2 en la configuración de tu webhook para reducir la sobrecarga HTTP al recibir múltiples eventos en peticiones por lotes:

                            

                                {
  "EventType": "open",
  "Url": "https://example.com/webhooks/mailjet/batch",
  "Version": 2
}
                            
                        

Correlación y seguimiento de eventos

Utiliza los parámetros CustomID y EventPayload en tus llamadas a la API de envíos para que los eventos de webhook sean más fáciles de correlacionar con tus sistemas internos:

                            

                                {
  "Messages": [{
    "To": [{"Email": "user@example.com"}],
    "Subject": "Welcome!",
    "TextPart": "Welcome to our service!",
    "CustomID": "user-123-welcome",
    "EventPayload": "campaign=onboarding&segment=new_users"
  }]
}

                            
                        

Streaming de eventos a escala empresarial

Para aplicaciones de gran volumen considera la transmisión de eventos a servicios de cola de terceros:

  • Azure Service Bus
  • Amazon SQS
  • Google Cloud Pub/Sub

Preguntas frecuentes

¿Qué eventos envía Mailjet a los webhooks?

Mailjet envía eventos de enviado, abierto, cliqueado, rebote, bloqueado, spam y baja. Cada uno contiene el MessageID, identificadores de contacto y de campaña, y detalles específicos del evento (como la URL para los eventos de clic).

¿Con qué rapidez se entregan los eventos?

Los eventos se envían poco después de producirse, normalmente en cuestión de segundos. Si tu punto final no responde con HTTP 200 OK, Mailjet reintenta la entrega durante un máximo de 24 horas.

¿Puedo reducir el número de llamadas de webhook?

Sí. Configura la entrega agrupada estableciendo Version=2 en tu eventcallbackurl para que Mailjet agrupe varios eventos en una solicitud POST.

¿Cómo aseguro mi punto de conexión de webhook?

Utiliza HTTPS, protege el punto de conexión con autenticación básica y restringe el acceso mediante filtrado de IP o pasarelas API. Procesa siempre las cargas útiles en el servidor y nunca expongas los puntos de conexión de los webhooks a las aplicaciones cliente.

Lista de comprobación para una configuración rápida

Sigue esta lista de comprobación para implementar con éxito los webhooks de Mailjet:

  • [ ] Crear y proteger un punto de conexión HTTPS público.
  • [ ] Configurar eventcallbackurl mediante API o interfaz web.
  • [ ] Implementar respuestas rápidas HTTP 200 OK con procesamiento asíncrono.
  • [ ] Añadir CustomID y EventPayload a tus envíos de email para facilitar la correlación.
  • [ ] Supervisar los fallos de los webhooks y configurar URL alternativas en caso de fallo.
  • [ ] Configurar la transmisión de eventos a tus sistemas de análisis o alerta.

Próximos pasos y recursos adicionales

Ahora que conoces los fundamentos y la implementación de los webhooks, considera la posibilidad de explorar estas funciones relacionadas de Mailjet:

Resumen

Los webhooks proporcionan una forma potente y eficaz de recibir notificaciones en tiempo real sobre eventos de email. Al implementar los webhooks de Mailjet con una gestión de errores adecuada, medidas de seguridad y procesamiento asíncrono, puedes crear flujos de trabajo de email responsive y basados en datos que mejoren la experiencia del cliente y la eficacia operativa.

Recuerda que debes empezar de forma sencilla, supervisar de cerca tu implementación y adaptar tu procesamiento de webhooks a medida que aumente tu volumen de emails. Con la base proporcionada en esta guía, estás preparado para aprovechar todo el poder del seguimiento de eventos de email en tiempo real.