TikTok Shop ล็อก DM ไว้ใน Seller Center — ทีม 3 คนรับข้อความผ่าน Webhook ได้อย่างไร — UnifyPort
ทีมนี้ประกอบด้วย 3 คนที่ขายเครื่องสำอางผ่าน TikTok Shop จากโฮจิมินห์ซิตี้ พวกเขาขาย SKU หนึ่งรายการหมดภายใน 11 นาทีในไลฟ์แรก ช่วงพีคมีผู้ชม 400 คนพร้อมกัน คอมเมนต์ไหลเร็วจนอ่านไม่ทัน ออเดอร์เข้ามาตลอดเวลา เมื่อไลฟ์จบและเปิด Seller Center ดู พบว่ามี DM รอ 140 ข้อความ และนาฬิกานับถอยหลัง 12 ชั่วโมงของส่วนใหญ่เดินไปแล้วสองชั่วโมง
ปัญหาไม่ได้อยู่ที่คน — 3 คนรับมือกับคำถามปกติได้สบาย ปัญหาคือ “การเข้าถึง” DM ทุกข้อความถูกเก็บไว้ใน TikTok Seller Center ซึ่งออกแบบมาสำหรับการจัดการกล่องข้อความด้วยมือ ไม่มีทางส่งข้อความเหล่านี้ไปยังเครื่องมือซัพพอร์ตที่ทีมใช้อยู่กับ WhatsApp, LINE และ Zalo ได้เลย ต้องให้คนคนหนึ่งจ้องสองหน้าจอ คัดลอกข้อความด้วยมือ แล้วตอบกลับจากใน Seller Center ด้วย DM 140 ข้อความหลังไลฟ์เดียว วิธีนี้ไม่ไหวแล้ว
คำถามชัดเจน: มีทางรับ TikTok DM แบบโปรแกรมผ่าน Webhook ได้ไหม — เหมือนที่พวกเขาได้รับข้อความ WhatsApp? พวกเขาใช้เวลาหนึ่งวันตรวจสอบทุกตัวเลือกที่หาได้ มีสามเส้นทาง
เส้นทางที่ 1: กล่องข้อความ Seller Center แบบด้วยมือ
TikTok Seller Center มีแท็บข้อความในตัว DM ทุกข้อความจากผู้ซื้อจะมาที่นี่ อ่านได้ ตอบได้ ทุกอย่างอยู่ในอินเทอร์เฟซ TikTok ไม่มี API ไม่มี Webhook ไม่มีการส่งออกข้อมูล ต้องมีคนเฝ้าแท็บนั้น คัดลอกข้อความไปใส่ CRM หรือสเปรดชีต แล้วตอบกลับจาก Seller Center
ปริมาณน้อยๆ พอรับมือได้ — สักสิบข้อความต่อวันในช่วงปกติ แต่คลื่นข้อความหลังไลฟ์ทนไม่ไหว กำลังอ่านข้อความแรก คิวก็เพิ่มอีก 20 แล้ว ยิ่งไปกว่านั้นต้องให้คนคอยดูแอปแยกต่างหาก ตัดขาดจากเครื่องมือที่ทีมส่วนที่เหลือใช้อยู่
สรุป: พอไหวปริมาณน้อย; พังทันทีช่วงไลฟ์บูม
เส้นทางที่ 2: API นักพัฒนา TikTok หรือ Shop Partner API
พวกเขาค้นหาใน TikTok for Developers console ไม่มี endpoint สำหรับ DM เลย API นักพัฒนา TikTok สร้างมาสำหรับการโพสต์คอนเทนต์ — ลงวิดีโอ อ่านวิเคราะห์สาธารณะ จัดการสินทรัพย์สร้างสรรค์ ข้อความส่วนตัวอยู่นอกขอบเขตชัดเจน TikTok ระบุว่าด้วยเหตุผลความเป็นส่วนตัว ข้อมูล DM ไม่เปิดให้การผสานรวมของบุคคลที่สาม
มีเส้นทางที่แคบกว่า คือ TikTok Shop Partner API ซึ่งให้พาร์ทเนอร์ที่ได้รับอนุมัติเข้าถึงฟีเจอร์ข้อความบางส่วนในบริบท Shop แต่ต้องเป็นบัญชีพาร์ทเนอร์หรือผู้ขาย TikTok Shop ที่ได้รับอนุมัติในตลาดที่มีสิทธิ์ และต้องผ่านกระบวนการตรวจสอบของ TikTok บัญชีของทีมนั้น — ร้านเวียดนามที่เปิดผ่านการลงทะเบียนผู้ขาย TikTok Shop มาตรฐาน — ไม่ตรงเกณฑ์ กระบวนการตรวจสอบเองใช้เวลาหลายสัปดาห์และไม่รับประกันการอนุมัติ
สรุป: API นักพัฒนาทั่วไปไม่มีสิทธิ์เข้าถึง DM; เส้นทาง Shop Partner มีเงื่อนไข บัญชีส่วนใหญ่ไม่ได้รับอนุญาต
เส้นทางที่ 3: อินเทอร์เฟซรับขาเข้าแบบไม่เป็นทางการ
เส้นทางที่สามเข้าหา TikTok DM จากมุมมองที่แตกต่างโดยสิ้นเชิง แทนที่จะใช้ API นักพัฒนา (ซึ่งไม่ได้ออกแบบมาเพื่อเปิดข้อความส่วนตัว) อินเทอร์เฟซรับขาเข้าแบบไม่เป็นทางการเชื่อมต่อกับ TikTok ในแบบเดียวกับแอป — ในระดับบัญชี — แปลง DM ที่เข้ามาแต่ละข้อความเป็น HTTP event และส่งไปยัง Webhook ที่เซิร์ฟเวอร์ของคุณลงทะเบียนไว้ ไม่ต้องการการอนุมัติพาร์ทเนอร์ ไม่มีข้อกำหนดตลาด ไม่ต้องตั้งค่า developer console ใช้บัญชีที่มีอยู่แล้วได้เลย
| เส้นทาง 1: Seller Center | เส้นทาง 2: API ทางการ | เส้นทาง 3: อินเทอร์เฟซไม่เป็นทางการ | |
|---|---|---|---|
| เวลาติดตั้ง | ทันที | หลายสัปดาห์ (ตรวจสอบ) ไม่รับประกัน | ภายใน 1 วัน |
| เข้าถึง DM ผ่าน API | ไม่ได้ (มือเท่านั้น) | บัญชีทั่วไปไม่สามารถ | Webhook เต็มรูปแบบ |
| ทำได้อัตโนมัติ | ไม่ | ไม่ | ได้ |
| รับมือช่วงไลฟ์บูมได้ | ไม่ | — | ได้ |
| ใช้ได้กับทุกบัญชี | ได้ | ไม่ | ได้ |
ตารางทำให้ทุกอย่างชัดเจน เส้นทาง 2 ปิดอยู่ เส้นทาง 1 รับปริมาณไม่ไหว เส้นทาง 3 คือทางเดียวที่ใช้งานได้จริง
เส้นทาง 3 ในทางปฏิบัติเป็นแบบไหน
ทีมเชื่อมบัญชี TikTok ผ่าน UnifyPort ลงทะเบียน Webhook endpoint และตั้งค่า signing_secret นับจากนั้น TikTok DM ที่เข้ามาทุกข้อความจะส่งมาที่ backend ในรูปแบบ event message.received ที่เป็นมาตรฐาน:
{
"event": "message.received",
"account_id": "acct_tk_9Zp2",
"provider": "tiktok",
"from": "user_c14f8b",
"text": "สวัสดีค่ะ ซื้อชุดกุหลาบจากไลฟ์เมื่อวาน จะส่งวันไหนคะ",
"timestamp": 1750060800,
"message_id": "tt_msg_c14f8b"
}
Backend ตรวจสอบการส่งแต่ละครั้งด้วย HMAC-SHA256 โดยเทียบกับ signing_secret ที่ตั้งค่าบน Webhook endpoint แล้วนำข้อความเข้าคิวซัพพอร์ตเดิมที่ทีมใช้กับ WhatsApp, LINE และ Zalo:
app.post("/webhook", (req, res) => {
if (!verifySignature(req)) return res.sendStatus(401);
const evt = req.body;
if (evt.event === "message.received") {
supportQueue.add({
channel: evt.provider, // "tiktok", "whatsapp", "line" ฯลฯ
customer: evt.from,
text: evt.text,
messageId: evt.message_id,
});
}
res.sendStatus(200);
});
ฟิลด์ provider บอก routing logic ว่าข้อความมาจากช่องทางไหน ตรรกะคิว การเขียน CRM อินเทอร์เฟซเอเจนต์ — ไม่มีอะไรต้องเปลี่ยน เพราะ message.received จาก TikTok มีโครงสร้างเดียวกับจาก WhatsApp หรือ LINE ทีมไม่ได้สร้างคิวแยกสำหรับ TikTok แค่เพิ่ม TikTok เข้าไปในคิวเดิม
เปลี่ยนอะไร ไม่เปลี่ยนอะไร
ในไลฟ์ครั้งถัดไป TikTok DM เข้าคิวพร้อมกับข้อความ WhatsApp, LINE และ Zalo เอเจนต์ทำงานจากรายการเดียว ตัวชี้วัดการตอบภายใน 12 ชั่วโมง — เมตริกสุขภาพร้านค้าของ TikTok ที่ส่งผลต่อการมองเห็น — ไม่ใช่ความกังวลอีกต่อไป เพราะข้อความเข้าระบบภายในไม่กี่วินาทีหลังจากส่ง แทนที่จะรอให้ใครบันทึกด้วยมือ
ทีมสังเกตพบสิ่งหนึ่ง: TikTok DM หลังไลฟ์มักสั้นและหนาแน่น ถามการจัดส่ง สต็อก คำสั่งซื้อ เพราะข้อความแต่ละชิ้นมาในรูปแบบ event ที่มีโครงสร้างพร้อม ID ผู้ส่ง ข้อความ และ timestamp แยกวิเคราะห์แล้ว เอเจนต์ไม่ต้องคัดลอกจากแอป TikTok ข้อความอยู่ในรูปแบบที่ขั้นตอนต่อไปของกระบวนการซัพพอร์ตต้องการอยู่แล้ว
ไม่มีเครื่องมือใหม่เพิ่มในสแตกของทีม ไม่มีการจ้างเพิ่ม เพิ่ม Webhook endpoint หนึ่งตัว กุญแจลายเซ็นหนึ่งอัน และ TikTok DM ก็ไหลเหมือนช่องทางอื่นทุกช่อง สำหรับผู้ขายที่รัน TikTok พร้อมกับ WhatsApp, LINE หรือ Zalo event message.received เดียวกันหมายความว่า handler เดียวครอบคลุมทุกช่องทาง — เพราะอินเทอร์เฟซรับขาเข้าแบบไม่เป็นทางการปรับความแตกต่างระหว่างช่องให้เป็นมาตรฐานก่อนที่ข้อความจะถึง code ของคุณ