Mailtr
← Blog

Nhận OTP realtime qua Webhook trong n8n

Thay vì poll liên tục, bạn có thể để Mailtr chủ động gọi về một URL mỗi khi inbox nhận thư. n8n là công cụ automation trực quan rất hợp để nhận và xử lý sự kiện này.

Bước 1: Tạo Webhook node trong n8n

Trong n8n, thêm node Webhook, đặt method POST, và sao chép URL production của nó (dạng https://n8n-cua-ban/webhook/mailtr).

Bước 2: Đăng ký URL với Mailtr

Gọi endpoint webhooks, dán URL n8n vào. Mailtr trả về secret để xác thực chữ ký:

curl -s https://mailtr.vn/api/v1/webhooks -X POST \
  -H "X-API-Key: $MAILTR_KEY" -H "content-type: application/json" \
  -d "{\"url\": \"https://n8n-cua-ban/webhook/mailtr\"}"
# -> { "ok": true, "secret": "whsec_..." }

Bước 3: Payload nhận được

Mỗi khi có thư, n8n nhận một POST với nội dung đã trích sẵn OTP:

{
  "event": "message.received",
  "message_id": "...",
  "inbox_id": "...",
  "to": "abc@...",
  "from": "no-reply@dichvu.com",
  "subject": "Mã xác minh của bạn",
  "otp": "246810",
  "received_at": 1782300000000
}

Bước 4: Xác thực chữ ký (khuyến nghị)

Mỗi request có header X-Mail1h-Signature = HMAC-SHA256(secret, body). Trong n8n, thêm một node Function/Code để tính lại HMAC từ secret và so sánh, nhằm chắc chắn request thực sự đến từ Mailtr trước khi xử lý.

Ứng dụng

Sau khi nhận OTP, n8n có thể: điền tiếp vào một luồng tự động, gửi vào Slack/Telegram, lưu vào Google Sheet, hoặc kích hoạt bước tiếp theo của quy trình — tất cả realtime, không cần poll.