Webhook
Tài liệu này giải thích cách thiết lập Webhook để thông báo cho bạn mỗi khi công ty của bạn có một sự kiện cụ thể xảy ra.
Để thiết lập Webhook bất kỳ, bạn cần phải:
- Tạo một điểm cuối trên máy chủ để xử lý các yêu cầu HTTP.
Điểm cuối của bạn phải có khả năng xử lý 2 loại yêu cầu HTTP: [Yêu cầu xác minh] (
#yeu-cau-xac-minh
) và [Thông báo sự kiện] (#thong-bao-su-kien
).Mỗi khi bạn cấu hình Webhooks tại trang Tích hợp, chúng tôi sẽ gửi yêu cầu
GET
đến URL điểm cuối của bạn. Yêu cầu xác minh bao gồm các thông số chuỗi truy vấn sau đây, được thêm vào cuối URL điểm cuối của bạn. Các yêu cầu này sẽ có dạng như sau:GET https://your-domain.com/webhook-endpoint?
validation_key=<your_input_key>&
challenge_key=<random_string>
Tham số | Giá trị mẫu | Mô tả |
validation_key | your_key | |
challenge_key | doopage_key | Một chuỗi ngẫu nhiên được tạo bởi DooPage. |
Mỗi khi nhận được yêu cầu xác minh, điểm cuối của bạn phải:
- Xác minh rằng giá trị
validation_key
khớp với chuỗi mà bạn đặt trong trườngValidation key
khi cấu hình Webhooks trong trang Tích hợp. - Phản hồi với giá trị
challenge_key
.
Khi cấu hình Webhooks, bạn sẽ đăng ký các sự kiện cụ thể (Ví dụ: Tích vào
Customer created
để nhận được thông tin mỗi khi có khách hàng mới được tạo trên DooPage). Mỗi khi có thay đổi cho một trong các trường này, chúng tôi sẽ gửi yêu cầu POST tới điểm cuối của bạn kèm theo JSON payload Ví dụ: Customer created
webhook payload.{
"company_id": 1,
"event_type": "customer_created",
"timestamp": 1618118040123,
"data": {
"customer": {
"id": 1,
"name": "DooPage"
}
}
}
Trường | Mô tả |
company_id | Mã công ty |
event_type | Loại sự kiện |
timestamp | Dấu thời gian sự kiện xảy ra (millisecond) |
data | Nội dung sự kiện (Tùy loại sự kiện mà bạn sẽ nhận được nội dung khác nhau) |

Step1
Sau khi nhấn
lưu
DooPage sẽ gửi tới điểm cuối của bạn một Yêu cầu xác minh mà bạn phải xác thực.{
"company_id": 1,
"event_type": "customer_created",
"timestamp": 1618118040123,
"data": {
"customer": {
"id": 1,
"name": "DooPage"
}
}
}
{
"company_id": 1,
"event_type": "customer_updated",
"timestamp": 1618118040123,
"data": {
"customer": {
"id": 1,
"name": "DooPage"
}
}
}
{
"company_id": 1,
"event_type": "customer_took",
"timestamp": 1618118040123,
"data": {
"customer": {
"id": 1,
"name": "DooPage"
},
"staff": {
"id": 1,
"name": "Doopage staff"
}
}
}
{
"company_id": 1,
"event_type": "customer_transferred",
"timestamp": 1618118040123,
"data": {
"customer": {
"id": 1,
"name": "DooPage"
},
"staff": {
"id": 1,
"name": "Doopage staff"
},
"new_staff": {
"id": 1,
"name": "Doopage staff 2"
}
}
}
{
"company_id": 1,
"event_type": "customer_closed",
"timestamp": 1618118040123,
"data": {
"customer": {
"id": 1,
"name": "DooPage"
},
"staff": {
"id": 1,
"name": "Doopage staff"
}
}
}
{
"company_id": 1,
"event_type": "order_created",
"timestamp": 1618118040123,
"data": {
"order_id": 1,
"created_at": 1618118040
}
}
{
"company_id": 1,
"event_type": "order_updated",
"timestamp": 1618118040123,
"data": {
"order_id": 1,
"created_at": 1618118040,
"modified_at": 1618118041,
"picking_status": "pending",
"payment_status": "paid"
}
}
{
"company_id": 1,
"event_type": "tag_set",
"data": {
"customer": {
"id": 1,
"name": "DooPage customer"
},
"staff": {
"id": 1,
"name": "DooPage staff"
},
"tags": [
{
"id": 1,
"name": "tag_name"
},
{
"id": 2,
"name": "tag 2"
}
]
}
}
{
"company_id": 1,
"event_type": "tag_unset",
"data": {
"customer": {
"id": 1,
"name": "DooPage customer"
},
"staff": {
"id": 1,
"name": "DooPage staff"
},
"tags": [
{
"id": 1,
"name": "tag_name"
},
{
"id": 2,
"name": "tag 2"
}
]
}
}
{
"company_id": 1,
"event_type": "note_changed",
"data": {
"customer": {
"id": 1,
"name": "DooPage customer"
},
"note": "Customer note"
}
}
{
"company_id": 1,
"event_type": "customer_pipeline_updated",
"data": {
"customer": {
"id": 1,
"name": "DooPage customer"
},
"staff": {
"id": 1,
"name": "DooPage staff"
},
"pipeline": {
"id": 1,
"name": "Re-target"
}
}
}
Last modified 1yr ago