← บทความทั้งหมด
กรณีศึกษา

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 ของคุณ