Cómo habilitar webhooks para correos electrónicos transaccionales
Webhook es un mecanismo para recibir notificaciones sobre ciertos eventos. Puedes configurar notificaciones a tu sistema sobre la capacidad de entrega de correos electrónicos y la actividad de los suscriptores.
Cómo crear un Webhook
Para conectar WebHooks SMTP, ve a la sección Configuración de la cuenta en la pestaña API y haz clic en Crear webhook.

Especifica la URL de tu controlador a donde enviar eventos. Y marca los eventos que deseas enviar.

Los siguientes eventos activan webhooks para enviar correos electrónicos en el servicio SMTP:
| Entregado (Entregado) | El correo electrónico se ha entregado correctamente a su destinatario. |
| No entregado (No entregado) | No se ha podido entregar el correo electrónico a su destinatario. |
| Abierto (Abierto) | El destinatario ha abierto el correo electrónico. |
| Directo al enlace (Al hacer clic en un enlace) | El destinatario ha hecho clic en un enlace del correo electrónico. |
| Marcado como spam (Marcado como spam) | El destinatario ha marcado el correo como spam y ha cancelado la suscripción. |
| Dado de baja (Cancelar suscripción) | El destinatario ha cancelado la suscripción para recibir más correos electrónicos. |
| Volver a suscribir (Suscrito de nuevo) | El destinatario previamente dado de baja confirmó su suscripción en el correo electrónico que se envió a través del método Volver a suscribir. |
| Error Hard bounce(Fallo de entrega permanente) | No se ha podido entregar el correo electrónico debido a un error permanente. El motivo puede ser una dirección de correo electrónico no válida o inexistente. |
| Error Soft bounce (Fallo de entrega temporal) | No se ha podido entregar el correo electrónico debido a un error temporal. El motivo puede ser una bandeja de entrada llena o problemas temporales con el servidor del destinatario. |
Formato de envío de datos
Webhook se activa cada 30 segundos o cada vez que SendPulse recopila 500 eventos para enviar.
Cuando se activa el webhook, SendPulse envía una solicitud POST con tipo de datos JSON a la URL especificada.
Los datos se envían en el siguiente formato:
[
{
"event": "event_name",
"timestamp": 1490954061,
"message_id": 1149317311,
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
}
]
Si hay varios eventos, se agruparán en una o varias solicitudes:
[
{
"event": "event_name",
"timestamp": 1490954061,
"message_id": 1149317311,
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
},
{
"event": "event_name",
"timestamp": 1490954062,
"message_id": 1149317311,
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
},
{
"event": "event_name",
"timestamp": 1490954063,
"message_id": 1149317311,
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "utf8_hello_world"
},
]
Formatos de solicitud, según el evento
Entregado:
[
{
"smtp_server_response_code": "250",
"smtp_server_response_subcode": "",
"sender": "john.doe@sendpulse.com",
"smtp_server_response": "custom_text_response_from_recipients_server",
"timestamp": 1490953933,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"event": "delivered",
"subject": "utf8_hello_world"
}
]
No entregado:
[ {
"smtp_server_response_code": "554",
"smtp_server_response_subcode": "5.7.1",
"sender": "john.doe@sendpulse.com",
"smtp_server_response": "custom_text_response_from_recipients_server",
"timestamp": 1490956117,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"event": "undelivered",
"subject": "utf8_hello_world"
}
]
Abierto:
[
{
"event": "opened",
"timestamp": 1490962764,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"sender": "john.doe@sendpulse.com",
"subject": "utf8_hello_world"
}
]
Siguiendo un enlace:
[
{
"event": "clicked",
"timestamp": 1490964928,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"sender": "john.doe@sendpulse.com",
"subject": "utf8_hello_world"
}
]
Darse de baja:
[
{
"event": "unsubscribed",
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
}
]
Resuscrito:
[
{
"timestamp":1717500409,
"message_id":"",
"recipient":"john.doe@sendpulse.com",
"event":"resubscribed",
"subject":""
}
]
Reportado como spam:
[
{
"event": "spam_by_user",
"timestamp": 1490964607,
"message_id": 1145317311,
"recipient": "doe.john@sendpulse.com",
"sender": "john.doe@sendpulse.com",
"subject": "utf8_hello_world"
}
]
Rebote suave recibido:
[
{
"smtp_server_response_code": 550,
"smtp_server_response_subcode": "5.1.0",
"task_id": 17076325,
"smtp_server_response": " vch15@i.ua MX: mx23.i.ua RESP: Mailbox over quota. See http://mail.i.ua/err/4/",
"timestamp": 1658998170,
"event": "soft_bounces",
"email": "example@example.com"
}
]
Rebote duro recibido:
[
{
"smtp_server_response_code": 550,
"smtp_server_response_subcode": "5.1.1",
"task_id": 17076325,
"smtp_server_response": " example@example.com MX: mx.i.ua RESP: 5.1.1 <example@example.com>: Recipient address rejected: User unknown in local recipient table",
"timestamp": 1658998170,
"event": "hard_bounces",
"email": "example@example.com"
}
]
]
Ejemplo de un script que acepta una petición en PHP:
<?php
$json_string = file_get_contents('php://input');
$data_array = json_decode($json_string, true);
?>
Última actualización: 10.06.2024
o