← กลับไปหน้าบทความ
LINE Tracking

ปุ่มใน Flex Message ควรใช้ Postback หรือ URL ถ้าอยากรู้ว่าใครกดอะไร

ทีมบรรณาธิการ linli01 พ.ย. 09:28อัปเดต 01 พ.ย. 09:28อ่าน 2 นาที
ปุ่มใน Flex Message ควรใช้ Postback หรือ URL ถ้าอยากรู้ว่าใครกดอะไร
บทความนี้จัดทำเพื่อความรู้ ชื่อธุรกิจ ตัวเลข หรือบทสนทนาที่ไม่มีแหล่งอ้างอิงกำกับเป็นกรณีตัวอย่างเพื่ออธิบายแนวคิด ดูรายละเอียดที่ นโยบายกองบรรณาธิการ

สรุปสั้น ๆ

ปุ่มแบบ Postback ส่ง event กลับมาที่ webhook พร้อม userId ของคนกด จึงรู้รายคนว่าใครกดอะไร ส่วนปุ่มแบบ URL พาคนออกนอกแชทโดยไม่ส่งอะไรกลับมา จะวัดได้ก็ต่อเมื่อลิงก์พกรหัสติดตามไปเอง ปุ่มที่เป้าหมายอยู่ในแชทควรใช้ Postback ปุ่มที่ต้องไปหน้าเว็บใช้ URL ที่ผ่านหน้ากลางจดการกดก่อน

สมมติร้านส่ง Flex Message โปรโมชันหาลูกค้า 3,000 คน มีสามปุ่มคือ ‘ดูโปร’ ‘จองคิว’ ‘คุยกับแอดมิน’ และตั้งทั้งสามเป็นลิงก์ URL หมด วันรุ่งขึ้นหัวหน้าทีมขายถามว่า ‘ใครกดจองคิวบ้าง จะได้โทรตาม’ หน้าสถิติบอกได้แค่ว่าปุ่มนี้ถูกกด 212 ครั้ง ไม่บอกว่าใคร

ตัวเลข 212 ครั้งไม่ช่วยให้ใครโทรหาใครได้ และไม่ช่วยให้รู้ว่าปุ่มไหนพาไปถึงยอดขาย ปัญหาไม่ได้อยู่ที่ข้อความ แต่อยู่ที่ชนิดของปุ่มที่เลือกตั้งแต่แรก เพราะปุ่มแต่ละชนิดทิ้งร่องรอยไว้ไม่เท่ากัน

ลองดูว่าปุ่มแต่ละแบบเกิดอะไรขึ้นหลังลูกค้ากด แล้วออกแบบให้ตอบคำถามของหัวหน้าทีมขายได้ทันทีเมื่อบรอดแคสต์ออกไป

ปุ่มใน Flex Message ทำอะไรได้สามแบบ และทิ้งร่องรอยต่างกัน

ตารางสรุปปุ่มที่ใช้บ่อยสามแบบ ยังมีชนิดอื่นอยู่อีก (เช่นตัวเลือกวันเวลา) ซึ่งชนิดและฟิลด์ที่รองรับให้ตรวจกับสเปก Messaging API ฉบับล่าสุดก่อนออกแบบ

ชนิดปุ่มลูกค้ากดแล้วเกิดอะไรwebhook ได้อะไรวัดรายคนได้ไหม
Postbackไม่มีข้อความโผล่ในแชทเอง เว้นแต่ตั้งให้แสดงpostback event พร้อม userId และ data ที่เรากำหนดได้ทันที
Messageข้อความถูกส่งเหมือนลูกค้าพิมพ์เองmessage event พร้อมข้อความนั้นได้ และเห็นในแชทด้วย
URIเปิด URL ในเบราว์เซอร์หรือ LIFFไม่มี event เข้า webhookได้เมื่อลิงก์พกรหัสเฉพาะคนหรือผ่าน LIFF

ออกแบบ data ของ Postback ให้ยังอ่านออกในหกเดือนข้างหน้า

ฟิลด์ data คือข้อความที่คุณฝังไว้ในปุ่ม แล้วส่งกลับมาตรง ๆ เมื่อกด ความยาวสูงสุดมีเพดาน ตรวจตัวเลขล่าสุดในเอกสาร จึงควรสั้นและมีรูปแบบคงที่ ผมใช้คู่ key=value ต่อกันด้วย & ตามตัวอย่างสมมติ a=book&c=nov_promo&b=2&v=1

  • a คือการกระทำที่ลูกค้าต้องการ เช่น book, quote, talk ตั้งเป็นคำสั้นที่ทีมอ่านแล้วเข้าใจตรงกัน
  • c คือแคมเปญหรือรหัสบรอดแคสต์ เพื่อให้แยกโปรเดือนนี้ออกจากเดือนก่อน
  • b คือตำแหน่งปุ่มในการ์ด ใช้เทียบว่าปุ่มบนหรือล่างถูกกดมากกว่า
  • v คือเวอร์ชันของดีไซน์ ถ้าเปลี่ยนรูปแบบ data ในอนาคต ตัวนี้บอกให้ฝั่งรับรู้ว่าต้องอ่านแบบไหน

ปุ่ม Postback ที่กดแล้วไม่มีอะไรเกิดขึ้น ทำให้ลูกค้ากดซ้ำ

ถ้าตั้งปุ่มให้เงียบ ลูกค้าไม่เห็นผลอะไรเลยและมักกดซ้ำสองสามรอบ ผลคือ event เดียวเข้ามาซ้ำและรายงานคลิกเฟ้อ ตัวอย่างที่เห็นบ่อยในแชทคือ ‘กดจองแล้วนะคะ ไม่เห็นมีอะไรขึ้นเลย’ ซึ่งแอดมินต้องมานั่งตอบว่า ‘ระบบรับแล้วค่ะ’

แก้สองชั้น ชั้นแรกให้ฝั่งรับตอบกลับทันทีด้วยข้อความยืนยัน เช่น ‘รับคิวแล้ว เดี๋ยวแอดมินทักเรื่องวันเวลา’ โดย reply token ใช้ได้ครั้งเดียวและหมดอายุเร็ว ตรวจรายละเอียดในเอกสาร ชั้นที่สองให้ตัดซ้ำที่ฝั่งเก็บข้อมูล นับ userId กับ data เดียวกันที่เข้ามาในช่วงสั้น ๆ เป็นหนึ่งครั้ง รายละเอียด event อยู่ในการติดตาม postback ผ่าน webhook

ปุ่ม URL วัดได้ถ้าลิงก์พกตัวตนไปด้วย

  1. ใส่ utm และรหัสปุ่มลงในลิงก์ เช่น utm_content=btn2_book วิธีตั้งชื่อให้ไม่ยุ่งอยู่ในการสร้าง URL ติดตาม
  2. ถ้าส่งข้อความเดียวกันให้ทุกคน ลิงก์จะเท่ากันทุกคน จึงวัดได้ระดับกลุ่มเท่านั้น ถ้าต้องรู้รายคน ให้เปิดผ่านหน้า LIFF ที่อ่าน userId ของคนกดได้ ดูวิธีในการวัดคลิกผ่าน LIFF
  3. ทางเลือกสุดท้ายคือส่งแยกรายคนพร้อมลิงก์เฉพาะ แต่การส่งแยกอาจนับโควตาข้อความตามจำนวนที่ส่ง ตรวจเงื่อนไขนับของแผนบัญชีคุณก่อนตัดสินใจ
  4. ให้หน้าตัวกลางจดคลิกลงฐานข้อมูลก่อนส่งต่อ (redirect) แล้วค่อยพาไปปลายทาง วิธีนี้ทำให้ได้ตัวเลขคลิกของคุณเอง ไม่ต้องพึ่งหน้าสถิติของแพลตฟอร์มอย่างเดียว

เลือกชนิดปุ่มตามปลายทางของมัน

  • จองคิว ขอใบเสนอราคา ปลายทางอยู่ในแชท ใช้ Postback แล้วให้แอดมินหรือบอตตอบต่อ ได้ userId มาครบ
  • ดูสินค้าหรือโปรบนเว็บ ปลายทางอยู่นอกแชท ใช้ URI ที่ผ่านหน้ากลางจดการกด
  • ถามคำถามที่เจอบ่อย ใช้ Message เพราะลูกค้าเห็นว่าตัวเองถามอะไร และคำถามค้างอยู่ในประวัติแชท
  • โทรหาร้าน ใช้ลิงก์โทรศัพท์ การวัดจะต้องไปดูฝั่งสายเข้า ซึ่งแอดแยกให้ไม่ได้ ดูแนวคิดในการแท็กแชทเพื่อบันทึกว่าใครมาจากช่องทางไหน

ต่อ Postback เข้ากับยอดขายด้วย userId

เก็บทุก postback ลงตารางพร้อม userId, data และเวลา จากนั้นเทียบกับใบสั่งซื้อด้วย userId ตัวอย่างสมมติ ส่งโปร 3,000 คน ปุ่มจองคิวถูกกดโดย 210 คน ในนั้น 90 คนคุยต่อกับแอดมิน และ 40 คนจองจริง ตัวเลขชุดนี้ตอบหัวหน้าทีมขายได้ว่าควรโทรตามใคร คือ 120 คนที่กดแล้วไม่คุยต่อ

ทางเดินสมมติของปุ่มจองคิว (คน)
ได้รับ Flex Message3,000
กดปุ่มจองคิว210
คุยต่อกับแอดมิน90
จองจริง40

สรุป

ให้เลือกชนิดปุ่มจากคำถามที่ต้องตอบหลังส่ง ถ้าต้องรู้รายคนว่าใครกดอะไร ใช้ Postback หรือ Message ถ้าปลายทางต้องไปนอกแชท ใช้ URI พร้อมรหัสติดตามหรือหน้าตัวกลาง ไม่มีปุ่มชนิดไหนวัดได้ทุกอย่างโดยไม่ต้องออกแบบอะไรเพิ่ม

ก่อนส่งบรอดแคสต์ครั้งหน้า ให้เขียนลงกระดาษก่อนว่าปุ่มแต่ละปุ่มต้องตอบคำถามอะไรหลังส่ง ถ้าตอบไม่ได้ว่าจะวัดอย่างไร ให้เปลี่ยนชนิดปุ่มก่อนกดส่ง

  • Postback ให้ userId และ data รายคน URI ไม่ส่งอะไรกลับ
  • ออกแบบ data เป็นรูปแบบคงที่ มีแคมเปญ ตำแหน่งปุ่ม และเวอร์ชัน
  • ตอบยืนยันทันทีหลัง Postback และตัดซ้ำที่ฝั่งเก็บข้อมูล
  • ปุ่ม URI ต้องพกรหัสหรือผ่าน LIFF จึงจะวัดรายคนได้
  • เทียบ userId ของคนกดกับใบสั่งซื้อ เพื่อบอกได้ว่าปุ่มไหนพาไปถึงยอด

คำถามที่พบบ่อย

Postback ต่างจาก Message action ตรงไหนในทางวัดผล

Message action ทำให้ข้อความปรากฏในแชทเหมือนลูกค้าพิมพ์เอง จึงเห็นได้ทั้งฝั่งแอดมินและฝั่งลูกค้า ส่วน Postback ส่งข้อมูลกลับโดยไม่ต้องมีข้อความ ทำให้แชทสะอาดกว่า แต่ลูกค้าอาจไม่รู้ว่าระบบรับคำสั่งแล้ว จึงควรตอบยืนยันกลับ

ปุ่มใน Flex Message ใส่ UTM ได้ไหม

ปุ่มชนิด URI ใส่พารามิเตอร์ต่อท้ายลิงก์ได้ตามปกติ แต่ UTM จะเก็บข้อมูลได้แค่ฝั่งเว็บหลังคลิก และไม่ผูกกับตัวบุคคลในแชทเอง ถ้าต้องผูกกับ userId ต้องผ่านหน้า LIFF หรือหน้ากลางที่อ่านตัวตนได้

ควรเก็บข้อมูลส่วนตัวไว้ใน data ของ Postback ไหม

ไม่ควร เพราะ data ถูกฝังในเนื้อข้อความที่ส่งออกไป ให้ใส่แค่รหัสสั้น ๆ แล้วหาข้อมูลจริงจากฐานข้อมูลฝั่งคุณโดยใช้ userId ที่ webhook ส่งมาให้แยกต่างหาก

ทำไมจำนวนกดใน webhook ไม่ตรงกับหน้าสถิติของ OA

สองแหล่งนับต่างกัน หน้าสถิติอาจนับตามหน่วยของแพลตฟอร์ม ส่วน webhook นับทุก event ที่เข้ามาถึงเซิร์ฟเวอร์ รวมถึงการกดซ้ำและ event ที่ตกหล่นเมื่อเซิร์ฟเวอร์ล่ม ถ้าตัวเลขต่างกันมาก ให้ตรวจการตัดซ้ำและบันทึกความล้มเหลวของ webhook ก่อน

ควรมีกี่ปุ่มในหนึ่งการ์ด

ยิ่งมีปุ่มมาก ยิ่งแยกไม่ออกว่าอะไรคือการกระทำหลัก ผมแนะนำหนึ่งปุ่มหลักและอีกหนึ่งปุ่มรอง ปุ่มที่สามมักได้คลิกน้อยจนข้อมูลไม่พอสรุปอะไร

เทียบปุ่มสองตำแหน่งได้อย่างไร

ใส่ค่า b ใน data ต่างกันและสลับตำแหน่งปุ่มระหว่างสองรอบส่งที่กลุ่มผู้รับเทียบกันได้ เพื่อแยกผลของตำแหน่งออกจากผลของข้อความ ควรสุ่มผู้รับเข้าสองกลุ่มด้วยกฎเดียวกัน

รู้ว่าโฆษณาเข้า LINE ทำยอดขายจริงแค่ไหน

linli ติดตามลูกค้าตั้งแต่คลิกโฆษณา กดเพิ่มเพื่อน ทักแชท จนปิดการขาย พร้อมส่ง Conversion กลับแพลตฟอร์มโฆษณา เริ่มฟรี 14 วัน

ทดลองใช้ฟรี 14 วัน

บทความที่เกี่ยวข้อง

ข้อความแบบรูปแบ่งโซนกับการ์ดเลื่อน วัดการกดแยกตำแหน่งได้ไหม

ข้อความแบบรูปแบ่งโซนกับการ์ดเลื่อน วัดการกดแยกตำแหน่งได้ไหม

Imagemap แบ่งรูปเป็นโซนกดได้ ส่วน Carousel แยกเป็นการ์ดเลื่อน ทั้งสองวัดการกดแยกตำแหน่งได้ แต่ต้องตั้งรหัสต่างกัน บทความนี้ไล่ทีละแบบพร้อมกับดักของตัวเลข
ริชเมนูแบบหลายแท็บ วัดว่าคนกดแท็บไหนแล้วไปจบที่ยอดขายเท่าไหร่

ริชเมนูแบบหลายแท็บ วัดว่าคนกดแท็บไหนแล้วไปจบที่ยอดขายเท่าไหร่

ริชเมนูหลายแท็บใช้ alias สลับหน้า และการสลับส่ง postback เข้า webhook ได้ บทความนี้ออกแบบการเก็บ event รายแท็บแล้วต่อไปถึงยอดขาย พร้อมกับดักที่ทำให้ตัวเลขเพี้ยน
ติดกล่องแชท LINE ไว้บนหน้าเว็บ แล้วยังเก็บที่มาของคนที่กดได้ครบไหม

ติดกล่องแชท LINE ไว้บนหน้าเว็บ แล้วยังเก็บที่มาของคนที่กดได้ครบไหม

กล่องแชท LINE ที่ฝังบนหน้าเว็บทำให้คนทักโดยไม่เปลี่ยนหน้า ลิงก์ที่พก UTM จึงไม่มีจังหวะทำงาน บทความนี้แยกว่าเก็บอะไรได้ เก็บอะไรไม่ได้ และทดสอบเองอย่างไร