ภาพรวม
Webhook เป็นฟีเจอร์ที่ช่วยให้คุณได้รับการแจ้งเตือนแบบเรียลไทม์ เมื่อเกิดเหตุการณ์บางอย่างใน BoxHero

การลงทะเบียน
หัวข้อที่มีชื่อว่า “การลงทะเบียน”คุณสามารถลงทะเบียน Webhook ได้ที่ การตั้งค่า > การเชื่อมต่อ ในทีม BoxHero ของคุณ

การส่งและการส่งซ้ำ
หัวข้อที่มีชื่อว่า “การส่งและการส่งซ้ำ”เมื่อเกิดเหตุการณ์ BoxHero จะส่งคำขอ HTTP POST ไปยังปลายทาง (endpoint) ของ Webhook ที่คุณลงทะเบียนไว้ โดยเนื้อหาคำขอ (request body) จะมี JSON payload ที่อธิบายเหตุการณ์นั้น
- หากเซิร์ฟเวอร์ของคุณตอบกลับด้วยรหัสสถานะ 2xx ใด ๆ (เช่น 200, 201, 204) จะถือว่าการส่งสำเร็จ
- การตอบกลับที่ไม่ใช่ 2xx ทั้งหมดจะถือว่าล้มเหลว และระบบจะส่งซ้ำ
โครงสร้าง Payload ของ Webhook
หัวข้อที่มีชื่อว่า “โครงสร้าง Payload ของ Webhook”เหตุการณ์ Webhook ทั้งหมดจะถูกส่งโดยมีโครงสร้าง JSON ต่อไปนี้ในเนื้อหาคำขอ:
{ "id": "3f9a2b7c-6d4e-4a1f-9c8b-2e5d7a0f1b34", // Event's unique ID "topic": "txs/new", // Event topic "version": 1, // Payload schema version "payload": { // Event-specific data ... }, "created_time": "2025-08-06T09:20:48.623Z" // Timestamp of event occurrence (ISO 8601)}ลำดับของเหตุการณ์
หัวข้อที่มีชื่อว่า “ลำดับของเหตุการณ์”BoxHero ไม่ รับประกันลำดับการส่งเหตุการณ์ ตัวอย่างเช่น เหตุการณ์ item/new อาจมาถึงหลังเหตุการณ์ item/delete ของสินค้าเดียวกัน
ฟิลด์ created_time ใน payload ของเหตุการณ์คือเวลาที่เกิดเหตุการณ์จริง ควรออกแบบตัวจัดการ Webhook ให้มีตรรกะแบบ idempotent และรองรับเหตุการณ์ที่มาไม่เรียงลำดับ เพื่อให้จัดการเหตุการณ์ได้อย่างน่าเชื่อถือ
เหตุการณ์ของธุรกรรมที่ถูกแก้ไขและลบ (txs/edit, txs/delete) จะมี revision มาด้วย เพื่อให้คุณทราบว่าเหตุการณ์นั้นอธิบายธุรกรรมเวอร์ชันใด
หัวข้อเหตุการณ์
หัวข้อที่มีชื่อว่า “หัวข้อเหตุการณ์”txs/new
หัวข้อที่มีชื่อว่า “txs/new”ทำงานเมื่อเกิดธุรกรรมสต็อก (การรับเข้า / การนำออก / การปรับสต็อก / การย้ายสต็อก)
| ฟิลด์ | จำเป็น | คำอธิบาย |
|---|---|---|
| id | ✓ | ID เฉพาะของธุรกรรม |
| type | ✓ | ประเภทธุรกรรม (in, out, adjust, move) |
| partner | คู่ค้า | |
| partner.id | ID เฉพาะของคู่ค้า | |
| partner.name | ชื่อคู่ค้า | |
| partner.deleted | คู่ค้าถูกลบแล้วหรือไม่ | |
| from_location | ตำแหน่งจัดเก็บต้นทาง | |
| from_location.id | ID เฉพาะของตำแหน่งจัดเก็บต้นทาง | |
| from_location.name | ชื่อตำแหน่งจัดเก็บต้นทาง | |
| from_location.deleted | ตำแหน่งจัดเก็บต้นทางถูกลบแล้วหรือไม่ | |
| to_location | ✓ | ตำแหน่งจัดเก็บปลายทาง |
| to_location.id | ✓ | ID เฉพาะของตำแหน่งจัดเก็บปลายทาง |
| to_location.name | ✓ | ชื่อตำแหน่งจัดเก็บปลายทาง |
| to_location.deleted | ✓ | ตำแหน่งจัดเก็บปลายทางถูกลบแล้วหรือไม่ |
| items | ✓ | รายการสินค้าในธุรกรรม |
| items.id | ✓ | ID เฉพาะของสินค้า |
| items.name | ✓ | ชื่อสินค้า |
| items.quantity | ✓ | จำนวนสต็อกที่เปลี่ยนแปลงจากการรับเข้า/นำออก/ปรับ/ย้าย |
| items.deleted | ✓ | สินค้าถูกลบแล้วหรือไม่ |
| items.from_location_new_stock_level | ระดับสต็อกที่ตำแหน่งจัดเก็บต้นทางหลังเกิดธุรกรรม | |
| items.to_location_new_stock_level | ✓ | ระดับสต็อกที่ตำแหน่งจัดเก็บปลายทางหลังเกิดธุรกรรม |
| transaction_time | ✓ | เวลาของธุรกรรม (เช่น เวลารับเข้า/นำออก) |
| created_at | ✓ | เวลาที่สร้างธุรกรรม |
| created_by | ✓ | สมาชิกที่สร้างธุรกรรม |
| created_by.id | ✓ | ID เฉพาะของสมาชิก |
| created_by.name | ✓ | ชื่อสมาชิก |
| created_by.deleted | ✓ | สมาชิกถูกลบแล้วหรือไม่ |
| count_of_items | ✓ | จำนวนสินค้า |
| total_quantity | ✓ | จำนวนสต็อกที่เปลี่ยนแปลงทั้งหมด |
| url | ✓ | ที่อยู่ URL สำหรับดูหน้ารายละเอียดของธุรกรรม |
| memo | หมายเหตุที่เกี่ยวข้องกับธุรกรรม |
ตัวอย่าง Webhook Payload – เหตุการณ์การรับเข้า
หัวข้อที่มีชื่อว่า “ตัวอย่าง Webhook Payload – เหตุการณ์การรับเข้า”{ "id": 16160911, "type": "in", "to_location": { "id": 52766, "name": "Warehouse 3", "deleted": false }, "items": [ { "id": 14277699, "name": "belif Cleansing Gel Oil Enriched", "quantity": 2, "deleted": false, "to_location_new_stock_level": 3 }, { "id": 14277698, "name": "belif Aqua Bomb Jelly Cleanser", "quantity": 2, "deleted": false, "to_location_new_stock_level": 5 } ], "transaction_time": "2023-04-25T05:42:27.545Z", "created_at": "2023-08-14T05:14:29.499Z", "created_by": { "id": 201345, "name": "corp", "deleted": false }, "count_of_items": 2, "total_quantity": 4, "url": "https://web.boxhero-app.com/team/149058/mode/0#/tx/16160911"}ตัวอย่าง Webhook Payload – เหตุการณ์การย้ายสต็อก
หัวข้อที่มีชื่อว่า “ตัวอย่าง Webhook Payload – เหตุการณ์การย้ายสต็อก”{ "id": 3692714, "type": "move", "from_location": { "id": 52765, "name": "Warehouse 2", "deleted": false }, "to_location": { "id": 52766, "name": "Warehouse 3", "deleted": false }, "items": [ { "id": 14873303, "name": "Auto liner 3.5mm", "quantity": 1, "deleted": false, "from_location_new_stock_level": -1, "to_location_new_stock_level": 1 } ], "transaction_time": "2025-04-25T05:42:27.545Z", "created_at": "2025-04-25T05:42:27.545Z", "created_by": { "id": 176829, "name": "Tony Lee", "deleted": false }, "count_of_items": 1, "total_quantity": 1, "url": "https://web.boxhero-app.com/team/150581/mode/2#/ltx/3692714"}txs/edit
หัวข้อที่มีชื่อว่า “txs/edit”ส่งเมื่อธุรกรรมสต็อกที่มีอยู่ (การรับเข้า / การนำออก / การย้ายสต็อก / การปรับสต็อก) ถูกแก้ไข
| ฟิลด์ | จำเป็น | คำอธิบาย |
|---|---|---|
| id | ✓ | ID เฉพาะของธุรกรรม |
| type | ✓ | ประเภทธุรกรรม (in, out, adjust, move) |
| partner | คู่ค้า | |
| partner.id | ID เฉพาะของคู่ค้า | |
| partner.name | ชื่อคู่ค้า | |
| partner.deleted | คู่ค้าถูกลบแล้วหรือไม่ | |
| from_location | ตำแหน่งจัดเก็บต้นทาง | |
| from_location.id | ID เฉพาะของตำแหน่งจัดเก็บต้นทาง | |
| from_location.name | ชื่อตำแหน่งจัดเก็บต้นทาง | |
| from_location.deleted | ตำแหน่งจัดเก็บต้นทางถูกลบแล้วหรือไม่ | |
| to_location | ✓ | ตำแหน่งจัดเก็บปลายทาง |
| to_location.id | ✓ | ID เฉพาะของตำแหน่งจัดเก็บปลายทาง |
| to_location.name | ✓ | ชื่อตำแหน่งจัดเก็บปลายทาง |
| to_location.deleted | ✓ | ตำแหน่งจัดเก็บปลายทางถูกลบแล้วหรือไม่ |
| items | ✓ | รายการสินค้าในธุรกรรม |
| items.id | ✓ | ID เฉพาะของสินค้า |
| items.name | ✓ | ชื่อสินค้า |
| items.quantity | ✓ | จำนวนที่เปลี่ยนแปลงจากธุรกรรม (in/out/adjust/move) |
| items.deleted | ✓ | สินค้าถูกลบแล้วหรือไม่ |
| items.from_location_new_stock_level | ระดับสต็อกที่ตำแหน่งจัดเก็บต้นทางหลังเกิดธุรกรรม | |
| items.to_location_new_stock_level | ✓ | ระดับสต็อกที่ตำแหน่งจัดเก็บปลายทางหลังเกิดธุรกรรม |
| transaction_time | ✓ | เวลาของธุรกรรม (เช่น เวลารับเข้า/นำออก) |
| created_at | ✓ | เวลาที่สร้างธุรกรรม |
| created_by | ✓ | สมาชิกที่สร้างธุรกรรม |
| created_by.id | ✓ | ID เฉพาะของสมาชิก |
| created_by.name | ✓ | ชื่อสมาชิก |
| created_by.deleted | ✓ | สมาชิกถูกลบแล้วหรือไม่ |
| count_of_items | ✓ | จำนวนสินค้า |
| total_quantity | ✓ | จำนวนสต็อกที่เปลี่ยนแปลงทั้งหมด |
| url | ✓ | ที่อยู่ URL สำหรับดูหน้ารายละเอียดของธุรกรรม |
| memo | หมายเหตุที่เกี่ยวข้องกับธุรกรรม | |
| revision | ✓ | หมายเลขเวอร์ชันปัจจุบันของธุรกรรม โดยเริ่มจาก 1 |
ตัวอย่าง Webhook Payload – ธุรกรรมการรับเข้าที่ถูกแก้ไข
หัวข้อที่มีชื่อว่า “ตัวอย่าง Webhook Payload – ธุรกรรมการรับเข้าที่ถูกแก้ไข”{ "id": 16160911, "revision": 2, "type": "in", "to_location": { "id": 52766, "name": "Warehouse 3", "deleted": false }, "items": [ { "id": 14277699, "name": "belif Cleansing Gel Oil Enriched", "quantity": 2, "deleted": false, "to_location_new_stock_level": 3 }, { "id": 14277698, "name": "belif Aqua Bomb Jelly Cleanser", "quantity": 2, "deleted": false, "to_location_new_stock_level": 5 } ], "transaction_time": "2023-04-25T05:42:27.545Z", "created_at": "2023-08-14T05:14:29.499Z", "created_by": { "id": 201345, "name": "corp", "deleted": false }, "count_of_items": 2, "total_quantity": 4, "url": "https://web.boxhero-app.com/team/149058/mode/0#/tx/16160911"}ตัวอย่าง Webhook Payload – ธุรกรรมการย้ายสต็อกที่ถูกแก้ไข
หัวข้อที่มีชื่อว่า “ตัวอย่าง Webhook Payload – ธุรกรรมการย้ายสต็อกที่ถูกแก้ไข”{ "id": 3692714, "revision": 2, "type": "move", "from_location": { "id": 52765, "name": "Warehouse 2", "deleted": false }, "to_location": { "id": 52766, "name": "Warehouse 3", "deleted": false }, "items": [ { "id": 14873303, "name": "Auto liner 3.5mm", "quantity": 1, "deleted": false, "from_location_new_stock_level": -1, "to_location_new_stock_level": 1 } ], "transaction_time": "2023-04-25T05:42:27.545Z", "created_at": "2023-04-25T05:42:27.545Z", "created_by": { "id": 176829, "name": "Joy Kim", "deleted": false }, "count_of_items": 1, "total_quantity": 1, "url": "https://web.boxhero-app.com/team/150581/mode/2#/ltx/3692714"}txs/delete
หัวข้อที่มีชื่อว่า “txs/delete”ส่งเมื่อธุรกรรมสต็อกถูกลบ
| ฟิลด์ | คำอธิบาย |
|---|---|
| id | ID เฉพาะของธุรกรรม |
| revision | หมายเลขเวอร์ชันปัจจุบันของธุรกรรม โดยเริ่มจาก 1 |
ตัวอย่าง Webhook Payload – ธุรกรรมที่ถูกลบ
หัวข้อที่มีชื่อว่า “ตัวอย่าง Webhook Payload – ธุรกรรมที่ถูกลบ”{ "id": 27036740, "revision": 2}item/new
หัวข้อที่มีชื่อว่า “item/new”ส่งเมื่อมีการเพิ่มสินค้าใหม่ลงในสต็อกของทีม
| ฟิลด์ | คำอธิบาย |
|---|---|
| id | ID สินค้า |
| name | ชื่อสินค้า |
| sku | SKU |
| barcode | บาร์โค้ด |
| photo_url | URL รูปภาพ |
| cost | ราคาซื้อ |
| price | ราคาขาย |
| attrs | คุณสมบัติ |
ตัวอย่าง Payload – สร้างสินค้า
หัวข้อที่มีชื่อว่า “ตัวอย่าง Payload – สร้างสินค้า”{ "id": 26122826, "name": "belif Peat Miracle Revital Cream", "sku": "SKU-YH2361KI", "barcode": "2002074321218", "photo_url": "https://d3l9wd8kivvlqy.cloudfront.net/ap-northeast-2/image-up-ap-northeast-2/30b0cc84-601d-493d-87fd-b7e8b5825601", "cost": "50000", "price": "65000", "attrs": [ { "id": 413101, "name": "Category", "type": "text", "value": "Foundation" }, { "id": 459264, "name": "Expiration date", "type": "date", "value": "2027-08-07" }, { "id": 668272, "name": "Safety Stock", "type": "number", "value": 33 } ]}item/edit
หัวข้อที่มีชื่อว่า “item/edit”ส่งเมื่อสินค้าที่มีอยู่ถูกแก้ไข
| ฟิลด์ | คำอธิบาย |
|---|---|
| id | ID สินค้า |
| name | ชื่อสินค้า |
| sku | SKU |
| barcode | บาร์โค้ด |
| photo_url | URL รูปภาพ |
| cost | ราคาซื้อ |
| price | ราคาขาย |
| attrs | คุณสมบัติ |
ตัวอย่าง Payload – อัปเดตสินค้า
หัวข้อที่มีชื่อว่า “ตัวอย่าง Payload – อัปเดตสินค้า”{ "id": 26122826, "name": "belif Peat Miracle Revital Cream", "sku": "SKU-YH2361KI", "barcode": "2002074321218", "photo_url": "https://d3l9wd8kivvlqy.cloudfront.net/ap-northeast-2/image-up-ap-northeast-2/30b0cc84-601d-493d-87fd-b7e8b5825601", "cost": "50000", "price": "65000", "attrs": [ { "id": 413101, "name": "Category", "type": "text", "value": "Foundation" }, { "id": 459264, "name": "Expiration date", "type": "date", "value": "2027-08-07" }, { "id": 668272, "name": "Safety Stock", "type": "number", "value": 33 } ]}item/delete
หัวข้อที่มีชื่อว่า “item/delete”ส่งเมื่อสินค้าถูกลบออกจากสต็อกของทีม
| ฟิลด์ | คำอธิบาย |
|---|---|
| id | ID สินค้า |
ตัวอย่าง Payload – ลบสินค้า
หัวข้อที่มีชื่อว่า “ตัวอย่าง Payload – ลบสินค้า”{ "id": 26122826}