Webhook là gì?
Webhook là một cơ chế tự động gửi dữ liệu từ hệ thống này sang hệ thống khác khi có sự kiện xảy ra. Nó hoạt động bằng cách gọi một URL (gọi là webhook URL) và đẩy dữ liệu đi ngay lập tức – thường dưới dạng JSON.
Nói cách khác: thay vì bạn phải “hỏi” liên tục xem có gì mới chưa (polling), thì webhook sẽ tự “gọi” bạn khi có chuyện.
Webhook hoạt động như thế nào?
- Bạn đăng ký một webhook URL (ví dụ:
https://example.com/hook) - Hệ thống A (như Stripe, Discord, Zalo OA…) sẽ gọi POST đến URL đó khi có sự kiện
- Dữ liệu được gửi theo định dạng JSON hoặc form-data
- Server B nhận dữ liệu và xử lý ngay lập tức (gửi email, cập nhật DB, kích hoạt lệnh…)
Ví dụ thực tế về webhook
| Tình huống | Webhook gửi từ | Webhook dùng để |
|---|---|---|
| Người dùng thanh toán | Stripe | Gửi về site để kích hoạt đơn hàng |
| Khách nhắn tin vào Zalo OA | Zalo API | Gửi dữ liệu về bot để phản hồi tự động |
| Có bình luận mới trên blog | WordPress | Push thông báo lên Discord |
| Form được submit | Google Forms (qua bên thứ ba) | Gửi vào Notion hoặc Google Sheets |
Webhook khác gì với API thông thường?
| Tiêu chí | API (Polling) | Webhook |
|---|---|---|
| Chủ động | Client phải tự hỏi liên tục | Server gửi dữ liệu chủ động khi có sự kiện |
| Độ trễ | Cao (tùy tốc độ hỏi) | Thấp (gần như tức thì) |
| Tiết kiệm tài nguyên | Không (gây tải server nếu hỏi nhiều) | Có (chỉ gửi khi cần) |
Cách tạo và sử dụng webhook
- Tạo một URL endpoint nhận dữ liệu (POST)
- Đăng ký URL đó trong hệ thống hỗ trợ webhook
- Xử lý dữ liệu JSON được gửi về → lưu DB, gửi mail, thông báo, v.v.
Ví dụ webhook handler đơn giản (PHP)
<?php
// webhook.php
$data = json_decode(file_get_contents('php://input'), true);
file_put_contents('log.txt', print_r($data, true), FILE_APPEND);
?>
Bảo mật webhook
- Dùng secret token để xác thực request
- Giới hạn IP gọi đến
- Validate data format và content-type
Kết luận
Webhook là cầu nối tự động giữa các hệ thống – giúp mọi thứ “diễn ra ngay lập tức mà không cần hỏi đi hỏi lại”. Nó là nền tảng của tự động hóa, realtime, và tích hợp hiện đại. Dù bạn làm dev hay không, hiểu webhook sẽ giúp bạn kết nối mọi nền tảng dễ dàng hơn.