การจัดการ webhook อยู่ที่ /api/v2/webhooks ให้ถือ URL ของ webhook และข้อมูลสำหรับ signing เป็น secret
ก่อนเริ่ม
สร้าง API key ที่มีสิทธิ์ workspace ขั้นต่ำ และกำหนด event family ที่ integration ต้องใช้
ขั้นตอน
- เปิด Settings → Integrations
- สร้างหรือเลือกปลายทาง webhook
- บันทึก event ID ที่ตั้งค่าและสถานะ endpoint
- ส่ง test request ไปยัง receiver ที่ไม่ใช่ production
- ตรวจ response และ delivery attempt ก่อนเปิดการประมวลผล production
ทำให้ receiver เป็น idempotent เก็บ event identifier และ acknowledge หลังตรวจ payload เท่านั้น อย่าสมมติว่า event ภายในแอปทุกตัวเป็น customer webhook ที่รองรับ
ตั้งค่าและตรวจ webhook
- สร้าง endpoint ที่รับ payload และบันทึก event identifier ก่อนส่ง success response
- ใน Settings → Integrations สร้าง webhook โดยใส่ Name, Target hook URL, Event type และ Campaign หรือ custom interest value เมื่อมี
- บันทึก เปิดปลายทาง และใช้ Test ยืนยัน receiver บันทึก event และ API รายงาน
success: true - ตรวจ Webhook events ด้วย
status_code,success,retry_count,will_retryและerror_message - ลบหรืออัปเดตปลายทางเมื่อ URL เปลี่ยน การลบไม่ลบประวัติการส่ง
ใช้ cursor pagination (limit และ starting_after) กับประวัติ ถือ retry เป็น at-least-once delivery และทำ consumer ให้ idempotent
กู้คืนเมื่อผิดพลาด
Response 4xx จาก receiver มักต้องแก้ payload หรือการยืนยันตัวตน 5xx หรือ timeout retry ได้ด้วย backoff ที่มีขอบเขต ยืนยัน attempt ถัดไปใน Webhook events และส่ง event ID กับ status ที่ลบข้อมูลสำคัญแล้ว
อ้างอิง field ของ webhook
| Field | จำเป็น | ความหมาย |
|---|---|---|
| Name | ใช่ | ป้ายชื่อปลายทางใน workspace |
| Target hook URL | ใช่ | HTTPS endpoint ที่รับ delivery |
| Event type | ใช่ | Event identifier จาก event-types endpoint |
| Campaign | ไม่บังคับ | จำกัด event ให้ campaign เดียวเมื่อเลือก |
| Custom interest value | ตามเงื่อนไข | จำเป็นเมื่อ event ที่เลือกเป็น custom interest label |
ตรวจ delivery
หลัง Test ให้ยืนยัน receiver บันทึก event ID ส่ง success response และไม่สร้าง record ซ้ำเมื่อ retry ใน Webhook events ตรวจ status_code, success, retry_count, will_retry, error_message และ timestamp_next_retry