← กลับไปหน้าบทความ
ส่ง Conversion กลับ

ลูกค้าโอนแล้วขอคืนเงินในอีกสามวัน แต่ Conversion ที่ส่งเข้า Meta ไปแล้วไม่มีวันลบออก ต้องออกแบบ Event ปรับยอดแทน

ทีมบรรณาธิการ linli07 ก.ย. 07:42อัปเดต 07 ก.ย. 07:42อ่าน 2 นาที
ลูกค้าโอนแล้วขอคืนเงินในอีกสามวัน แต่ Conversion ที่ส่งเข้า Meta ไปแล้วไม่มีวันลบออก ต้องออกแบบ Event ปรับยอดแทน
บทความนี้จัดทำเพื่อความรู้ ชื่อธุรกิจ ตัวเลข หรือบทสนทนาที่ไม่มีแหล่งอ้างอิงกำกับเป็นกรณีตัวอย่างเพื่ออธิบายแนวคิด ดูรายละเอียดที่ นโยบายกองบรรณาธิการ

สรุปสั้น ๆ

conversion event ที่ส่งเข้า CAPI ไปแล้วไม่สามารถลบทิ้งย้อนหลังได้ ถ้าออเดอร์ถูกยกเลิกหรือคืนเงินภายหลัง backend ต้องออกแบบกลไกส่ง event ปรับยอดหรือ event ยกเลิกกลับไปเองตามที่แต่ละแพลตฟอร์มรองรับ ไม่ใช่ปล่อยให้ตัวเลข revenue ที่ระบบโฆษณาเห็นสูงกว่าความเป็นจริงตลอดไป

ร้านขายของออนไลน์ที่ผมช่วยตรวจระบบให้ เจอเคสที่ลูกค้าโอนเงินซื้อสินค้าราคาสามพันบาท แอดมินยืนยันออเดอร์และระบบยิง Purchase event เข้า Meta ทันทีตามปกติ แต่สองวันถัดมาลูกค้าติดต่อขอคืนเงินเพราะสินค้าไม่ตรงกับที่คาดหวัง ร้านคืนเงินให้และปิดออเดอร์ในระบบภายในของตัวเองเรียบร้อย แต่ event มูลค่าสามพันบาทที่เคยยิงเข้า Meta ไปแล้วยังคงอยู่ในนั้นเหมือนเดิม ไม่มีใครไปแก้ไขอะไรเลย

ทีมการตลาดที่ดูรายงาน ROAS รายเดือนจึงเห็นตัวเลข revenue ที่สูงกว่าความเป็นจริง เพราะมี conversion ที่ถูกคืนเงินไปแล้วปนอยู่ในนั้นโดยไม่มีการหักออก ปัญหานี้ไม่ได้เกิดจากความผิดพลาดตอนยิง event ครั้งแรกเลย event ครั้งแรกถูกต้องตามข้อมูล ณ เวลานั้นทุกประการ ปัญหาคือไม่มีขั้นตอนต่อจากนั้นเมื่อสถานะของออเดอร์เปลี่ยนไป

หลายทีมเข้าใจผิดว่า conversion ที่ส่งไปแล้วแก้ไขไม่ได้เลยจึงปล่อยผ่านไป ซึ่งจริง ๆ แล้วแพลตฟอร์มโฆษณาหลักมีกลไกสำหรับสถานการณ์นี้อยู่ในบางรูปแบบ เพียงแต่ backend ต้องออกแบบมารองรับตั้งแต่แรก บทความนี้จะเจาะแนวทางออกแบบ event ปรับยอดที่ใช้ได้จริงเมื่อออเดอร์เปลี่ยนสถานะภายหลัง

ทำไม conversion ที่ส่งไปแล้วถึงลบทิ้งตรง ๆ ไม่ได้

แนวคิดพื้นฐานของ conversion tracking คือการบันทึกเหตุการณ์ที่เกิดขึ้น ณ ช่วงเวลาหนึ่ง ไม่ใช่สถานะปัจจุบันของออเดอร์ เมื่อ event ถูกส่งและถูกประมวลผลโดยแพลตฟอร์มไปแล้ว มันจะถูกใช้ในการคำนวณรายงานย้อนหลังและอาจถูกใช้เป็นสัญญาณป้อนเข้าโมเดล bidding ไปแล้วด้วย การลบ event ออกตรง ๆ จึงไม่ใช่กลไกที่แพลตฟอร์มส่วนใหญ่ออกแบบมาให้ทำได้ง่าย ๆ

สิ่งที่แพลตฟอร์มรองรับแทนคือการส่งข้อมูลเพิ่มเติมที่บอกว่า ‘เหตุการณ์นี้มีการเปลี่ยนแปลงภายหลัง’ ซึ่งอาจอยู่ในรูปแบบของ event ใหม่ที่ระบุมูลค่าเป็นลบ event ที่มี event name บ่งบอกการยกเลิกโดยเฉพาะ หรือกลไก conversion adjustment ที่บางแพลตฟอร์มมีให้ ต้องตรวจสอบเอกสารล่าสุดของแต่ละแพลตฟอร์มว่ารองรับรูปแบบไหน เพราะวิธีการไม่เหมือนกันทุกเจ้า และอาจเปลี่ยนแปลงตามเวอร์ชัน API

backend ต้องรู้ก่อนว่าออเดอร์ไหนถูกยกเลิกหรือคืนเงิน

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

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

รูปแบบการส่ง event ปรับยอดที่ใช้ได้จริง

รูปแบบวิธีทำงานคร่าว ๆข้อควรระวัง
Negative value eventส่ง event ใหม่ที่มี value เป็นค่าลบเท่ากับยอดที่คืน ผูกกับ event เดิมด้วย order idบางแพลตฟอร์มไม่รองรับ value ติดลบโดยตรง ต้องเช็กเอกสารก่อนใช้
Cancel/Refund event name เฉพาะส่ง event ชนิดใหม่ เช่น Refund หรือ Cancel ที่มี event name ต่างจาก Purchaseต้องตรวจว่าแพลตฟอร์มนำ event ชนิดนี้ไปหักออกจากรายงาน revenue อัตโนมัติหรือแค่บันทึกไว้เฉย ๆ
Conversion adjustment API เฉพาะทางบางแพลตฟอร์มมี endpoint แยกสำหรับแก้ไขหรือยกเลิก conversion ที่เคยส่งไปแล้วโดยเฉพาะต้องมี event id เดิมที่ผูกไว้ตั้งแต่แรก ถ้าไม่ได้เก็บ mapping ไว้จะย้อนแก้ไม่ได้

เก็บ mapping ระหว่างออเดอร์กับ event_id ไว้ตั้งแต่วันแรก

หัวใจสำคัญที่ทำให้การส่ง event ปรับยอดทำได้จริงคือ ต้องมีตารางในฐานข้อมูลที่บันทึกว่าออเดอร์แต่ละรายการเคยส่ง event_id อะไรไปให้แพลตฟอร์มไหนบ้าง พร้อมมูลค่าที่ส่งไป ณ ตอนนั้น ถ้าไม่มี mapping นี้ตั้งแต่แรก เมื่อถึงเวลาต้องปรับยอดภายหลังจะไม่มีทางรู้เลยว่าต้องอ้างอิงถึง event ตัวไหน

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

ระหว่างที่ยังไม่มีระบบปรับยอด ควรสื่อสารกับทีมการตลาดยังไง

ถ้าระบบของธุรกิจคุณยังไม่มีกลไกส่ง event ปรับยอดอัตโนมัติ สิ่งที่ทำได้ทันทีคือทำให้ทีมการตลาดรู้ว่าตัวเลข revenue ที่เห็นใน Events Manager หรือ Google Ads เป็นยอดรวมก่อนหักคืน ไม่ใช่ยอดสุทธิที่รับรู้จริง เพื่อไม่ให้ตัดสินใจเรื่องงบประมาณจากตัวเลขที่สูงเกินจริง

แนวทางที่ใช้ได้ระหว่างรอพัฒนาระบบปรับยอดอัตโนมัติคือ ทำรายงานสรุปยอดคืนเงินแยกต่างหากในระบบภายใน แล้วให้ทีมการตลาดหักลบด้วยตัวเองเวลาคำนวณ contribution ROAS จริง วิธีนี้ไม่สมบูรณ์เท่าการมี event ปรับยอดอัตโนมัติ แต่ดีกว่าการปล่อยให้ตัวเลขเพี้ยนโดยไม่มีใครรู้ตัวเลย

ธุรกิจแบบไหนควรลงทุนสร้างระบบนี้ก่อน

ไม่ใช่ทุกธุรกิจต้องรีบสร้างระบบ event ปรับยอดทันที ธุรกิจที่มีอัตราการคืนเงินต่ำมาก (เช่น ต่ำกว่าสองสามเปอร์เซ็นต์ของออเดอร์ทั้งหมด) อาจยังไม่คุ้มที่จะลงทุนสร้างระบบซับซ้อนตั้งแต่วันแรก แต่ธุรกิจที่มีอัตราการคืนเงินสูง เช่น สินค้าแฟชั่นที่ลูกค้ามักขอเปลี่ยนไซส์หรือคืนเพราะไม่ถูกใจ ควรให้ความสำคัญกับเรื่องนี้เป็นลำดับต้น ๆ

อีกปัจจัยที่ต้องพิจารณาคือ ธุรกิจที่ใช้ Purchase value เป็น primary conversion สำหรับ Smart Bidding ควรระวังเป็นพิเศษ เพราะถ้ามูลค่า conversion ที่ระบบเห็นสูงกว่าความเป็นจริงต่อเนื่อง อาจส่งผลต่อการเรียนรู้ของโมเดล bidding ในระยะยาว ซึ่งเป็นความเสี่ยงที่มากกว่าแค่ตัวเลขรายงานผิด

ถ้ายิงแอดหลายแพลตฟอร์มพร้อมกัน event ปรับยอดต้องส่งครบทุกที่ ไม่ใช่แค่ที่เดียว

ธุรกิจที่ยิงแอดพร้อมกันหลายช่องทาง เช่น Meta, Google และ TikTok มักเจอปัญหาเพิ่มเติมเมื่อต้องส่ง event ปรับยอด เพราะออเดอร์เดียวกันเคยถูกส่งเป็น Purchase event ไปทุกแพลตฟอร์มพร้อมกันตอนขาย เมื่อลูกค้าคืนเงินภายหลัง event ปรับยอดก็ต้องถูกส่งไปครบทุกแพลตฟอร์มเช่นกัน ไม่ใช่แก้แค่ปลายทางเดียวแล้วปล่อยให้ปลายทางอื่นมีตัวเลขที่สูงเกินจริงค้างอยู่ต่อไป

จุดนี้เชื่อมโยงโดยตรงกับการออกแบบevent_id แยกตามปลายทางในสถาปัตยกรรม fan-out เพราะถ้าตอนส่ง Purchase event มีการเก็บ mapping ว่าออเดอร์นี้เคยส่ง event_id อะไรไปแพลตฟอร์มไหนบ้าง ตอนต้องส่ง event ปรับยอดกลับก็จะรู้ทันทีว่าต้องอ้างอิงถึง event_id ตัวไหนของแต่ละแพลตฟอร์ม การออกแบบ mapping ตั้งแต่ต้นทางจึงมีประโยชน์ทั้งตอนส่งครั้งแรกและตอนต้องย้อนแก้ไขภายหลัง

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

สรุป

conversion ที่ส่งเข้าแพลตฟอร์มโฆษณาไปแล้วไม่ใช่ข้อมูลที่แก้ไขได้ตามใจ แต่ธุรกิจที่มีการคืนเงินหรือยกเลิกออเดอร์เป็นเรื่องปกติ จำเป็นต้องมีกลไกสื่อสารการเปลี่ยนแปลงนั้นกลับไปด้วยรูปแบบที่แพลตฟอร์มรองรับ ไม่ใช่ปล่อยให้ตัวเลข revenue สูงเกินจริงค้างอยู่ตลอดไป

จุดเริ่มต้นที่สำคัญที่สุดไม่ใช่การเขียนโค้ดส่ง event ปรับยอด แต่คือการมี mapping ระหว่างออเดอร์กับ event_id ที่เคยส่งไปตั้งแต่วันแรก เพราะถ้าไม่มีจุดอ้างอิงนี้ ต่อให้อยากแก้ไขทีหลังก็ทำไม่ได้อยู่ดี

  • event ที่ส่งเข้า CAPI แล้วลบทิ้งตรง ๆ ไม่ได้ ต้องใช้ event ปรับยอดตามที่แต่ละแพลตฟอร์มรองรับ
  • ต้องมีตาราง mapping ระหว่างออเดอร์กับ event_id ตั้งแต่วันแรก ไม่งั้นจะย้อนแก้ไม่ได้เมื่อถึงเวลาต้องใช้
  • ระหว่างที่ยังไม่มีระบบอัตโนมัติ ให้ทำรายงานคืนเงินแยกให้ทีมการตลาดหักลบเองเพื่อไม่ให้ตัดสินใจจากตัวเลขที่สูงเกินจริง

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

ถ้าคืนเงินบางส่วนไม่ใช่คืนเต็มจำนวน ต้องส่ง event ปรับยอดยังไง

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

event ปรับยอดต้องส่งภายในกี่วันหลังจากคืนเงิน ถึงจะยังมีผล

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

ถ้าธุรกิจไม่มีระบบเก็บ event_id mapping ไว้เลย ยังพอทำอะไรได้บ้าง

ทำได้จำกัดกว่าเพราะไม่มีทางอ้างอิง event เดิมได้ตรง ๆ ทางเลือกที่พอทำได้คือเริ่มเก็บ mapping ตั้งแต่วันนี้เป็นต้นไปสำหรับออเดอร์ใหม่ ส่วนออเดอร์เก่าที่ไม่มี mapping อาจต้องยอมรับว่าแก้ไขย้อนหลังไม่ได้ และให้ความสำคัญกับการหักลบในรายงานภายในแทน

การส่ง event ปรับยอดกระทบกับ Event Match Quality ไหม

โดยทั่วไปไม่กระทบโดยตรงเพราะเป็นคนละมิติกัน แต่ถ้าออกแบบ event ปรับยอดผิดพลาดจนแพลตฟอร์มปฏิเสธหรือ error บ่อยครั้ง อาจส่งผลทางอ้อมต่อภาพรวมคุณภาพข้อมูลที่ระบบเห็นได้ จึงควรทดสอบ<a href="/blog/capi-emq-diagnostic-workflow-line">การตรวจสอบคุณภาพข้อมูล</a>ควบคู่ไปด้วยเสมอ

ทุกแพลตฟอร์มรองรับ event ปรับยอดแบบเดียวกันหมดไหม

ไม่เหมือนกัน แต่ละแพลตฟอร์มมีกลไกและข้อจำกัดของตัวเอง บางเจ้ารองรับผ่าน event ใหม่ บางเจ้ามี endpoint เฉพาะสำหรับ adjustment ต้องตรวจสอบเอกสารล่าสุดแยกทีละแพลตฟอร์มก่อนออกแบบ ไม่ควรสมมติว่าวิธีที่ใช้ได้กับแพลตฟอร์มหนึ่งจะใช้ได้กับอีกแพลตฟอร์มเหมือนกันเป๊ะ

ธุรกิจขนาดเล็กที่คืนเงินไม่บ่อย จำเป็นต้องสร้างระบบอัตโนมัติเลยไหม

ไม่จำเป็นต้องเริ่มจากระบบอัตโนมัติเต็มรูปแบบ ธุรกิจขนาดเล็กอาจเริ่มจากการบันทึกยอดคืนเงินในระบบภายในให้ครบก่อน แล้วค่อยพัฒนาการส่ง event ปรับยอดอัตโนมัติเมื่อปริมาณออเดอร์มากพอที่จะคุ้มกับการลงทุนพัฒนา

ลองตรวจด้วยตัวเอง

Meta Ads → LINE Checker

ตรวจว่า fbclid, Pixel และเส้นทางเข้า LINE ของคุณพร้อมให้ Meta วัด Conversion หรือยัง

ตรวจความพร้อมฟรี

ใช้ฟรี ไม่ต้องสมัคร ไม่เก็บข้อมูลที่คุณกรอก

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

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

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

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

ลูกค้าไม่กดยินยอมให้เก็บข้อมูล แต่ระบบยิง Event เข้า CAPI ไปแล้วเรียบร้อย ออกแบบ Consent Gate ให้เช็กก่อนส่งทุกครั้ง

ลูกค้าไม่กดยินยอมให้เก็บข้อมูล แต่ระบบยิง Event เข้า CAPI ไปแล้วเรียบร้อย ออกแบบ Consent Gate ให้เช็กก่อนส่งทุกครั้ง

ถ้า backend ยิง conversion event ทุกครั้งที่มีออเดอร์เกิดขึ้นโดยไม่เช็กสถานะความยินยอมก่อน ข้อมูลของลูกค้าที่ไม่ได้กดยินยอมจะถูกส่งไปแพลตฟอร์มโฆษณาโดยไม่ตั้งใจ บทความนี้เจาะการวาง consent gate เป็นชั้นบังคับก่อน CAPI ทุกครั้ง
คลินิกไม่มีราคาตายตัว นัดปรึกษาแต่ละเคสมูลค่าไม่เท่ากัน จะใส่ค่า Value ใน Event ยังไงไม่ให้ Bidding หลงทาง

คลินิกไม่มีราคาตายตัว นัดปรึกษาแต่ละเคสมูลค่าไม่เท่ากัน จะใส่ค่า Value ใน Event ยังไงไม่ให้ Bidding หลงทาง

ธุรกิจบริการอย่างคลินิกหรืออสังหาริมทรัพย์ไม่มีราคาสินค้าตายตัวเหมือนอีคอมเมิร์ซ บทความนี้เจาะแนวทางออกแบบมูลค่า conversion ที่สะท้อนความจริงของธุรกิจ ไม่ใช่ใส่ค่าคงที่หรือปล่อยเป็นศูนย์
เชื่อมข้อมูลแอดเข้า LINE กับระบบ ERP แล้วยอดขายที่โชว์ในสองระบบไม่ตรงกัน ตรวจตรงไหนก่อน

เชื่อมข้อมูลแอดเข้า LINE กับระบบ ERP แล้วยอดขายที่โชว์ในสองระบบไม่ตรงกัน ตรวจตรงไหนก่อน

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