แดชบอร์ดบอกปิดได้ 40 ออเดอร์ แต่บัญชีจริงมี 26: วิธีไล่หาช่องโหว่ทีละจุด
สรุปสั้น ๆ
ช่องว่างระหว่างยอด conversion ในแอดกับยอดขายจริงมักไม่ได้เกิดจากจุดเดียว แต่เกิดจากรอยรั่วสะสมสามจุด คือนับซ้ำ นับเร็วเกินไปก่อนเงินเข้าจริง และนับสิ่งที่ไม่ใช่การขาย บทความนี้เดินไล่ทีละจุดพร้อมวิธีเช็กด้วยมือ
สมมติร้านขายอาหารเสริมออนไลน์ชื่อ 'ร้านออร่าเฮลท์ตี้' เปิดแดชบอร์ด Meta ดูยอด conversion เดือนที่แล้วเจอเลข 40 ออเดอร์ แต่พอเปิดสมุดบัญชีจริงกลับเจอแค่ 26 ออเดอร์ที่โอนเงินเข้าจริง ต่างกันถึง 14 ออเดอร์ เจ้าของร้านโทรมาถามผมว่า 'แอดมินปั้นยอดปลอมหรือเปล่า' ซึ่งเกือบทุกครั้งที่ผมไล่เช็กจริง ๆ คำตอบไม่ใช่คนโกง แต่เป็นระบบนับที่รั่วเป็นชั้น ๆ
บทความนี้จะพาไล่หาช่องโหว่แบบที่ผมทำจริงเวลาไปช่วยร้านตรวจสอบ ไม่ใช่สูตรสำเร็จ แต่เป็นลำดับคำถามที่ต้องถามให้ครบก่อนจะสรุปว่าตัวเลขไหนคือของจริง
ก่อนอื่น ต้องรู้ว่า 'conversion' ที่แอดนับ กับ 'ยอดขาย' ที่ธุรกิจนับ ไม่ใช่สิ่งเดียวกัน
จุดที่คนพลาดตั้งแต่ต้นคือเข้าใจว่าตัวเลขในแดชบอร์ดแอดคือยอดขายจริง ทั้งที่ในความเป็นจริง conversion ที่แพลตฟอร์มนับคือ 'เหตุการณ์ที่มีคนยิง event มาบอกว่าขายได้' ซึ่งเหตุการณ์นี้อาจถูกยิงตอนลูกค้าแค่ทักเข้ามาสนใจ ไม่ใช่ตอนโอนเงินจริง ถ้าทีมตั้งค่า event ผิดจุดตั้งแต่แรก ตัวเลขก็เพี้ยนตั้งแต่ต้นทางแล้ว
สำหรับธุรกิจที่ปิดการขายในแชท ตรงนี้ซับซ้อนกว่าเว็บอีคอมเมิร์ซทั่วไปเพราะไม่มี 'ปุ่มกดชำระเงิน' ที่ยิง event อัตโนมัติ คนต้องเป็นคนกดส่ง conversion เอง (manual หรือกึ่งอัตโนมัติผ่านระบบอย่าง server-side CAPI) ซึ่งเปิดช่องให้เกิดความคลาดเคลื่อนได้ง่ายกว่ามาก
จุดที่ 1: เช็กว่ามีการยิง event ซ้ำสองรอบต่อออเดอร์เดียวหรือไม่
อาการที่พบบ่อยที่สุดคือแอดมินกดส่งยอดขายเข้าระบบตอนลูกค้าโอนเงิน แล้วระบบอัตโนมัติ (เช่น webhook จากเพจการชำระเงิน) ก็ยิง conversion ซ้ำอีกรอบสำหรับออเดอร์เดียวกัน ถ้าไม่มีการผูก order ID ที่ไม่ซ้ำกัน ระบบฝั่งแพลตฟอร์มจะนับเป็นสองยอดขายทันที
วิธีเช็กแบบง่ายที่สุดคือเปิด Events Manager ไล่ดู event ที่มี order value เท่ากันเป๊ะ เกิดในเวลาใกล้กันมาก (ห่างกันไม่ถึง 5 นาที) ถ้าเจอคู่แบบนี้บ่อย ๆ แปลว่าเข้าข่ายปัญหานี้ ประเด็นนี้เกี่ยวข้องโดยตรงกับสิ่งที่เคยเขียนไว้เรื่องการนับ conversion ซ้ำ ลองอ่านประกอบเพื่อดูวิธีตั้ง deduplication key
จุดที่ 2: เช็กว่ามีการนับ 'ตกลงซื้อ' เป็น 'ขายได้' ทั้งที่เงินยังไม่เข้า
อีกจุดที่เจอบ่อยคือแอดมินกดส่งยอดขายทันทีที่ลูกค้าพิมพ์ว่า 'เอาค่ะ โอนให้เดี๋ยวนี้' เพื่อความสะดวกในการรายงานยอดประจำวัน แต่ในความจริงลูกค้าบางส่วนเปลี่ยนใจไม่โอน หรือโอนช้ากว่าที่บอกจนออเดอร์ถูกยกเลิกไปทีหลัง ตัวเลขในแอดจึงสูงกว่าความจริงเสมอ เพราะนับที่ 'คำพูด' ไม่ใช่ 'เงินเข้าบัญชี'
วิธีแก้ที่ผมแนะนำร้านส่วนใหญ่คือแยกสถานะให้ชัดในระบบหลังบ้าน เช่น 'ตกลงซื้อ' กับ 'ชำระเงินแล้ว' เป็นคนละสถานะ แล้วตั้งให้ยิง conversion ไปหาแพลตฟอร์มโฆษณาเฉพาะตอนสถานะเปลี่ยนเป็น 'ชำระเงินแล้ว' เท่านั้น จะทำให้ตัวเลขสอดคล้องกับบัญชีจริงมากขึ้นมาก
จุดที่ 3: ยอดคืนเงินและออเดอร์ยกเลิก ถูกหักออกจากแดชบอร์ดหรือยัง
จุดสุดท้ายที่มักถูกลืมคือการคืนเงิน ลูกค้าโอนแล้วขอคืนภายหลังเพราะสินค้าหมดหรือเปลี่ยนใจ ถ้าไม่มีขั้นตอนส่ง 'ยกเลิก conversion' กลับไปหักที่แพลตฟอร์ม ตัวเลขที่นับไปแล้วจะค้างอยู่ในระบบตลอดไป กลายเป็นยอดที่ 'เคยนับว่าขายได้' แต่ไม่มีอยู่จริงในบัญชี
ร้านที่มีอัตราคืนเงินสูง เช่น สินค้าที่ต้องลองไซส์หรือสินค้าพรีออเดอร์ ควรมีรอบเช็กรายสัปดาห์ว่าออเดอร์ไหนถูกยกเลิกไปแล้วบ้าง แล้วอัปเดตกลับเข้าระบบ ไม่ใช่ปล่อยให้ตัวเลขเก่าลอยค้างอยู่เฉย ๆ
ไล่ตัวเลขร้านออร่าเฮลท์ตี้กลับไปดู ต่างกันตรงไหนบ้าง
| สาเหตุ | จำนวนออเดอร์ที่คลาดเคลื่อน | สิ่งที่แก้ |
|---|---|---|
| นับซ้ำจาก webhook + แอดมินกดเอง | 6 ออเดอร์ | ผูก order ID กันซ้ำ |
| นับตอน 'ตกลงซื้อ' ก่อนโอนจริง | 5 ออเดอร์ | ย้ายจุดยิง event ไปตอนเงินเข้า |
| ยกเลิก/คืนเงินที่ไม่ได้หักออก | 3 ออเดอร์ | ตั้งรอบเช็กรายสัปดาห์ |
ทำให้เป็นนิสัย ไม่ใช่ทำครั้งเดียวจบ
การตรวจสอบแบบนี้ไม่ใช่งานที่ทำครั้งเดียวแล้วเลิก เพราะทีมแอดมินเปลี่ยน ระบบเปลี่ยน หรือมีการปรับ workflow ใหม่เมื่อไหร่ รอยรั่วแบบเดิมก็กลับมาได้อีก ร้านที่ผมดูแลอยู่ตั้งรอบกระทบยอดระหว่างแดชบอร์ดกับบัญชีจริงทุกสิ้นเดือน ใช้เวลาไม่ถึงชั่วโมงแต่ช่วยจับความคลาดเคลื่อนได้ตั้งแต่ยังไม่บานปลาย ถ้าใช้เครื่องมืออย่าง linli ที่ผูก order ID กับ conversion อัตโนมัติ ก็ช่วยลดจุดที่ต้องเช็กด้วยมือลงไปได้ส่วนหนึ่ง แต่ไม่ได้แปลว่าไม่ต้องกระทบยอดเลย
สรุป
ตัวเลขที่ไม่ตรงกันระหว่างแดชบอร์ดกับบัญชีจริง ไม่ใช่สัญญาณให้ตื่นตระหนกหรือรีบตัดสินคน แต่เป็นสัญญาณให้กลับไปไล่ระบบทีละจุด ตั้งแต่จุดยิง event ไปจนถึงการจัดการยอดคืนเงิน
- เช็ก event ซ้ำจาก order ID ที่ไม่ผูกกัน
- ย้ายจุดยิง conversion ไปที่ 'เงินเข้าจริง' ไม่ใช่ 'ตกลงซื้อ'
- หักยอดคืนเงิน/ยกเลิกออกจากระบบทุกสัปดาห์
คำถามที่พบบ่อย
ควรกระทบยอดระหว่างแอดกับบัญชีจริงบ่อยแค่ไหน
อย่างน้อยเดือนละครั้ง แต่ถ้าช่วงไหนมีแคมเปญใหญ่หรือเพิ่งเปลี่ยนทีมแอดมิน ควรทำถี่ขึ้นเป็นทุกสัปดาห์เพื่อจับความผิดปกติตั้งแต่เนิ่น ๆ
ถ้าเจอว่าต่างกันไม่เกิน 5% ถือว่าปกติไหม
ความคลาดเคลื่อนเล็กน้อยจากความล่าช้าในการอัปเดตสถานะเป็นเรื่องปกติ แต่ถ้าเกิน 10-15% ควรไล่หาสาเหตุตามขั้นตอนในบทความนี้ เพราะมักมีรอยรั่วที่ชัดเจนซ่อนอยู่
แอดมินตั้งใจปั้นยอดปลอมเพื่อผลงานได้ไหม
เป็นไปได้แต่พบน้อยกว่าที่คิด ส่วนใหญ่ที่เจอจริงคือปัญหาระบบนับซ้ำหรือจุดยิง event ที่ไม่สอดคล้องกับความเป็นจริง ควรเช็กระบบก่อนตั้งข้อสงสัยกับคน
จำเป็นต้องมีระบบ CAPI ฝั่งเซิร์ฟเวอร์ไหมถึงจะแก้ปัญหานี้ได้
ไม่จำเป็นเสมอไปสำหรับร้านเล็ก แต่ถ้ายอดขายเริ่มเยอะจนแอดมินตามด้วยมือไม่ไหว ระบบฝั่งเซิร์ฟเวอร์จะช่วยลดความผิดพลาดจากมนุษย์ได้มาก
ถ้าไม่มีเวลากระทบยอดทุกเดือน ควรเริ่มจากตรงไหนก่อน
เริ่มจากเช็กจุดที่มีผลกระทบมากที่สุดก่อน คือดูว่ามีการนับซ้ำหรือไม่ เพราะมักเป็นสาเหตุที่ทำให้ตัวเลขคลาดเคลื่อนมากที่สุดในบรรดาสามจุดที่กล่าวถึง
บทความที่เกี่ยวข้อง


