Como habilitar webhook para e-mails transacionais
Webhook é um mecanismo para receber notificações sobre determinados eventos. Você pode configurar notificações para seu sistema sobre a capacidade de entrega de e-mails e a atividade dos assinantes.
Como criar um webhook
Para conectar webhook SMTP, vá para a seção Configurações da conta na guia API e clique em Criar webhook.
Ative o rastreamento de e-mail SMTP, se estiver desativado.
Especifique a URL de seu manipulador para onde enviar eventos. E marque quais eventos você deseja enviar.
Lista de eventos acionados por um webhook no serviço SMTP em relação ao envio de e-mails:
Os seguintes eventos disparam webhooks para enviar emails no serviço SMTP:
Entregue (Delivered) | O e-mail foi entregue com sucesso ao seu destinatário |
Não entregue (Not delivered) | O e-mail não pôde ser entregue ao seu destinatário. |
Aberto (Open) | O destinatário abriu o e-mail. |
Clique no link (Click on a link) | O destinatário clicou em um link no e-mail. |
Marcado como spam (Marked as spam) | O destinatário marcou o e-mail como spam e cancelou a inscrição. |
Cancelou a inscrição (Unsubscribed) | O destinatário cancelou a inscrição para não receber mais e-mails. |
Reinscrito(Resubscribed) | O destinatário que havia cancelado a inscrição anteriormente confirmou sua inscrição no e-mail enviado pelo método Reinscrever um destinatário. |
Erro de hard bounce (Hard bounces) | O e-mail não pôde ser entregue devido a um erro permanente. A razão pode ser um endereço de e-mail inexistente ou inválido. |
Erro de soft bounce (Soft bounces) | O e-mail não pôde ser entregue devido a um erro temporário. As razões podem incluir uma caixa de entrada cheia ou problemas temporários com o servidor do destinatário. |
Enviar formato de dados
O webhook é acionado a cada 30 segundos ou se a SendPulse coletou 500 eventos para enviar.
Quando o webhook é acionado, a SendPulse envia uma solicitação POST com tipo de dados JSON para o URL especificado.
Os dados são enviados no seguinte formato:
[
{
"event": "event_name",
"timestamp": 1490954061,
"message_id": 1149317311,
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
}
]
Se existirem vários eventos, então eles serão agrupados em várias solicitações:
[
{
"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"
},
]
Solicitar formatis, dependendo do evento
Entregue:
[
{
"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"
}
]
Não entregue:
[
{
"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"
}
]
Aberto:
[
{
"event": "opened",
"timestamp": 1490962764,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"sender": "john.doe@sendpulse.com",
"subject": "utf8_hello_world"
}
]
Seguindo um link:
[
{
"event": "clicked",
"timestamp": 1490964928,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"sender": "john.doe@sendpulse.com",
"subject": "utf8_hello_world"
}
]
Não inscrito:
[
{
"event": "unsubscribed",
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
}
]
Reinscrito:
[
{
"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"
}
]
Recebeu soft bounce:
[
{
"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"
}
]
Recebeu hard bounce:
[
{
"smtp_server_response_code": 550,
"smtp_server_response_subcode": "5.1.1",
"task_id": 17076325,
"smtp_server_response": " example@example.com MX: mx.dereck.cn.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"
}
]
Um exemplo de script que aceita uma solicitação em PHP:
<?php
$json_string = file_get_contents('php://input');
$data_array = json_decode($json_string, true);
?>
Última Atualização: 11.12.2024
ou