
Ví dụ, trên GitHub, Stripe hay Slack, bạn sẽ thấy mục “Webhook” trong phần cài đặt. Tưởng tượng bạn bán hàng online, nếu có khách đánh giá 1 sao, thay vì phải liên tục mở trang để kiểm tra, webhook sẽ gửi thông báo ngay lập tức đến hệ thống hoặc Telegram của bạn để kịp xử lý.
1. Định nghĩa Webhook
Webhook là một cơ chế thông báo tự động cho phép ứng dụng A gửi dữ liệu đến ứng dụng B ngay khi có sự kiện phát sinh.
Nó khác với API ở chỗ: với API, hệ thống cần “hỏi” liên tục (polling) để xem có thay đổi không, trong khi webhook sẽ “chủ động gõ cửa” mỗi khi có tin tức mới.

Ví dụ: Một khách thanh toán thành công → webhook sẽ ngay lập tức gửi dữ liệu giao dịch đến hệ thống của bạn.
2. Webhook trong thực tế
2.1 Gửi thông báo ngay lập tức
Trong ứng dụng chat, khi bạn gửi tin, webhook giúp chuyển tiếp ngay lập tức sang đầu bên kia. Slack, Discord hay Microsoft Teams đều dựa vào cơ chế này để đảm bảo tin nhắn và trạng thái được cập nhật tức thời.
Ngoài ra, các công cụ giám sát như Datadog, New Relic dùng webhook để phát cảnh báo khi hệ thống gặp sự cố. Nếu dùng API polling, việc kiểm tra liên tục vừa tốn tài nguyên, vừa phản ứng chậm hơn.

2.2 Tích hợp dịch vụ nhanh chóng
Webhook cũng rất hữu ích khi bạn cần “đẩy” dữ liệu ra ngoài ngay lập tức. Như ví dụ feedback 1 sao: khách vừa gửi đánh giá, hệ thống sẽ ngay lập tức thông báo cho bạn qua webhook mà không cần thao tác thủ công.
3. So sánh Webhook và API
Tiêu chí |
API |
Webhook |
Khái niệm |
API (Application Programming Interface) cho phép ứng dụng giao tiếp qua lời gọi hàm. |
Webhook là cơ chế gửi dữ liệu tự động khi có sự kiện. |
Cách hoạt động |
Yêu cầu – phản hồi. |
Dựa trên sự kiện. |
Khởi tạo |
Client gửi yêu cầu trước. |
Server gửi dữ liệu khi có sự kiện. |
Truyền dữ liệu |
Kéo (pull) – client chủ động xin dữ liệu. |
Đẩy (push) – server tự động gửi. |
Thời gian thực |
Cập nhật không tức thì. |
Ngay lập tức khi sự kiện phát sinh. |
Polling |
Cần kiểm tra liên tục. |
Không cần polling. |
Hiệu suất |
Có thể gây trễ khi polling nhiều. |
Nhẹ hơn, mở rộng dễ hơn. |
Ứng dụng |
Lấy dữ liệu theo yêu cầu hoặc định kỳ. |
Cập nhật tức thời: thông báo, chat, thanh toán. |
Ví dụ |
REST API, SOAP. |
Webhook GitHub, Webhook Stripe. |

Khi dùng API: thích hợp khi cần truy xuất dữ liệu theo yêu cầu, thao tác phức tạp, hoặc lấy dữ liệu định kỳ.
Khi dùng Webhook: hợp khi cần cập nhật ngay, giảm tải hệ thống và tích hợp tự động theo sự kiện.
4. Thực hành: Tạo Webhook Listener bằng Python
4.1 Viết server Flask lắng nghe sự kiện
Tạo file webhook_listener.py
:
Chạy server:
Mặc định chạy ở http://127.0.0.1:5000
.

4.2 Tạo public URL với Ngrok
Để dịch vụ ngoài gọi được webhook của bạn:
-
Tải Ngrok từ ngrok.com/download.
-
Đăng ký, lấy auth token và cấu hình.
-
Chạy lệnh:
Ngrok sẽ trả về một đường dẫn công khai dạng https://xxxx.ngrok-free.app
.
4.3 Kiểm thử webhook
Dùng Postman gọi đến URL ngrok thay vì 127.0.0.1
. Nếu thành công, bạn sẽ thấy dữ liệu được in ra từ Flask server.

Bạn có thể dùng webhook này để kết nối với GitHub, Stripe hoặc bất kỳ dịch vụ nào hỗ trợ webhook.
5. Kết luận
Webhook giúp bạn tiết kiệm tài nguyên, loại bỏ nhu cầu polling liên tục, đồng thời cung cấp dữ liệu tức thì khi có sự kiện. Đây là lựa chọn tối ưu để xây dựng hệ thống nhanh nhạy và tự động hơn.