Webhook là tính năng cho phép một website thông báo đến các hệ thống khác khi có các sự kiện phát sinh (Ví dụ như khi bạn tạo mới một đơn hàng, khách hàng), nó sẽ giúp các hệ thống khác có thể chủ động lấy thông tin từ CRM khi có dữ liệu phát sinh.
Webhook là gì ?
Webhook đôi khi còn được gọi là “Reverse APIS”. Trong các API, thì ứng dụng phía khách hàng sẽ gọi (tiêu thụ) ứng dụng phía máy chủ. Trong khi đó, khi có webhook, phía máy chủ sẽ gọi webhook (URL được cung cấp bởi ứng dụng phía khách hàng). Ví dụ: ứng dụng phía máy chủ gọi ứng dụng phía khách hàng.
Webhook hoạt động dựa trên phản ứng sự kiện – “event reaction”. Nhờ vậy mà ứng dụng phía khách hàng sẽ không cần phải liên tục hỏi ứng dụng phía máy chủ.

Vì vậy, thay vì ứng dụng phía khách hàng phải liên tục thăm dò ứng dụng phía máy chủ để kiểm tra các sự kiện mới, ứng dụng phía máy chủ sẽ gọi ứng dụng phía khách hàng (bằng cách gọi URL webhook từ khách hàng cung cấp) bất cứ khi nào phía máy chủ có thông tin nào mới để báo cáo cho khách hàng.
Đôi khi Webhook cũng được gọi là Reverse APIs vì trước đó bạn phải thiết kế API cho webhook sử dụng. Webhook sẽ gửi một HTTP request đến ứng dụng của bạn (thường bằng POST) và bạn sẽ xử lý vấn đề như thế nào. Chúng tôi sẽ minh họa ví dụ sau: Khi server bạn có một sự kiện mới với nội dung “Có mưa lớn ở khu vực miền Nam” và gửi thông báo đến ứng dụng điện thoại, sau khi đã nhận được thông báo từ server thì ứng dụng của bạn sẽ lập tức hiển thị thông báo để cảnh báo cho người dùng.
Các chức năng được hỗ trợ
Hiện tại thì có 4 chức năng được hỗ trợ khi thiết kế website mà bạn cần biết là:
- Thêm mới khách hàng
- Thêm mới đơn hàng
- Thêm mới sản phẩm
- Duyệt đơn hàng
Chức năng của Webhook
Webhook là cuộc gọi lại do người dùng định nghĩa thực hiện bằng HTTP. Nó thường được kích hoạt bởi một số sự kiện, chẳng hạn như là đẩy mã vào kho lưu trữ hoặc bình luận được đăng lên blog.
Khi sự kiện đó xảy ra, trang nguồn sẽ tạo một yêu cầu HTTP tới URL được định cấu hình cho webhook. Người dùng có thể định cấu hình chúng để gây ra các sự kiện trên một trang web để gọi hành vi trên một trang web khác.

Sử dụng phổ biến là để kích hoạt các bản dựng với các hệ thống tích hợp liên tục hay để thông báo cho các hệ thống theo dõi lỗi. Bởi vì Webhook sử dụng HTTP, nó có thể được tích hợp vào các dịch vụ web mà không cần thêm cơ sở hạ tầng mới.
Tiêu thụ một Webhook
Bước đầu tiên trong việc tiêu thụ một webhook đó là cần cung cấp cho nhà cung cấp webhook một URL để gửi yêu cầu đến. Điều này thường được thực hiện thông qua bảng điều khiển phụ trợ hoặc API. Nghĩa là bạn cần thiết lập một URL trong ứng dụng của mình để có thể truy cập từ web công cộng.
Phần lớn thì các webhook sẽ POST dữ liệu cho bạn theo một trong hai cách: JSON (thông thường) hoặc XML. Nhà cung cấp sẽ cho bạn biết cách họ cung cấp nó hay thậm chí cung cấp cho bạn một sự lựa chọn về vấn đề này.
Gỡ lỗi một webhook
Việc gỡ lỗi một webhook đôi khi không đơn giản, vì webhook chủ yếu không đồng bộ. Vì thế bạn phải kích hoạt nó và chờ đợi để nhận được phản hồi. Điều này có thể khiến bạn mệt mỏi và kém hiệu quả. Tuy nhiên có những cách tốt hơn như sau:
- Hiểu những gì webhook cung cấp bằng cách ta sử dụng công cụ RequestBin để thu thập các yêu cầu của webhook.
- Giả định các yêu cầu bằng các công cụ như URL hay Postman.
- Kiểm tra mã trên máy của bạn bằng cách sử dụng công cụ ngrok.
- Xem toàn bộ lưu lượng bằng công cụ Runscope.
Bảo vệ webhook
Bởi vì webhook cung cấp dữ liệu đến các URL có sẵn công khai trong ứng dụng của bạn nên có khả năng là người khác có thể tìm thấy URL đó và cung cấp cho bạn một dữ liệu sai. Để tránh điều này xảy ra, bạn có thể sử dụng một số kỹ thuật. Cách làm dễ nhất là buộc các kết nối đến là https.
- Cách được hỗ trợ nhiều nhất để bảo mật webhook là thêm mã thông báo vào URL đóng vai trò nhận dạng duy nhất.
- Tùy chọn tiếp theo là triển khai Basic Auth, điều này cũng được hỗ trợ rộng rãi và dễ thực hiện.
- Hai giải pháp trên đã hoạt động tuyệt vời để ngăn chặn được các cuộc tấn công, tuy nhiên nó cũng có nhược điểm đó là gửi mã xác thực auth với yêu cầu. Giải pháp tiếp theo là yêu cầu nhà cung cấp ký tên từng yêu cầu mà họ đưa ra cho bạn và xác minh chữ ký đó.
Lưu ý quan trọng
Có 2 điều bạn cần lưu ý khi tạo người tiêu dùng webhook:
– Webhook cung cấp dữ liệu cho ứng dụng của bạn và có thể ngừng quan tâm sau khi yêu cầu:
Nó có nghĩa là nếu ứng dụng của bạn bị lỗi thì dữ liệu có thể bị mất. Nhiều webhook sẽ chú ý đến phản hồi và gửi lại yêu cầu nếu ứng dụng bị lỗi.
Và nếu ứng dụng của bạn xử lý yêu cầu mà vẫn bị lỗi thì có thể dữ liệu bị trùng lặp trong ứng dụng của bạn. Do đó bạn cần hiểu cách nhà cung cấp webhook của bạn xử lý các phản hồi để bạn có thể chuẩn bị cho trường hợp lỗi xảy ra trong ứng dụng.
– Webhook có thể thực hiện rất nhiều yêu cầu:
Nếu như nhà cung cấp có nhiều sự kiện, nhiều yêu cầu liên tục gửi đến khách hàng có thể dẫn đến DDoSing.