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

ยิง Custom Event ผ่าน Data Layer กับผ่าน Auto-tracking ต่างกันตรงไหน

ทีมบรรณาธิการ linli12 ส.ค. 04:51อัปเดต 12 ส.ค. 04:51อ่าน 4 นาที
ยิง Custom Event ผ่าน Data Layer กับผ่าน Auto-tracking ต่างกันตรงไหน
บทความนี้จัดทำเพื่อความรู้ ชื่อธุรกิจ ตัวเลข หรือบทสนทนาที่ไม่มีแหล่งอ้างอิงกำกับเป็นกรณีตัวอย่างเพื่ออธิบายแนวคิด ดูรายละเอียดที่ นโยบายกองบรรณาธิการ

สรุปสั้น ๆ

การยิง Custom Event ของ LINE เข้า GA4 ทำได้สองทางหลัก คือผ่าน Data Layer ที่นักพัฒนาสั่งยิงเองตอนเกิดเหตุการณ์สำคัญ กับผ่าน Auto-tracking ที่ GTM จับ Trigger จากหน้าเว็บโดยไม่ต้องแก้โค้ด ทั้งสองแบบมีข้อดีข้อเสียต่างกัน และธุรกิจส่วนใหญ่มักต้องใช้ผสมกันตามจุดที่ซับซ้อนต่างกัน

ทีมพัฒนาเว็บของธุรกิจขายคอร์สออนไลน์แห่งหนึ่งตั้ง Trigger แบบ Click - All Elements ใน GTM เพื่อจับว่าคนกดปุ่ม LINE ตรงไหนบ้าง วิธีนี้ตั้งเร็ว ไม่ต้องแก้โค้ดเว็บเลย แต่พอใช้ไปสักพักพบว่า Event บางครั้งยิงซ้ำสองครั้งต่อการคลิกหนึ่งครั้ง บางครั้งไม่ยิงเลยเมื่อปุ่มถูกโหลดมาทีหลังผ่าน JavaScript

ทีมจึงเปลี่ยนมาให้นักพัฒนาสั่งยิง Event ผ่าน Data Layer โดยตรงจากโค้ดของปุ่มเอง ปัญหาเรื่อง Event ซ้ำหรือหายไปหมดไปทันที แต่ต้องแลกกับความยุ่งยากตรงที่ทุกครั้งที่ต้องเพิ่ม Event ใหม่ ต้องขอเวลานักพัฒนาแก้โค้ด ไม่ใช่แค่ปรับ Trigger ใน GTM เหมือนก่อน

คำถามที่ตามมาคือควรเลือกวิธีไหนดี บทความนี้จะเทียบให้เห็นว่า Data Layer กับ Auto-tracking ทำงานต่างกันตรงไหน แต่ละวิธีเหมาะกับสถานการณ์แบบไหน และจะออกแบบ Schema ของ Custom Event ให้รองรับทั้งสองวิธีพร้อมกันได้ยังไงโดยไม่ชนกันเอง

สองวิธีหลักที่ใช้ยิง Custom Event ของ LINE เข้า GA4

วิธีแรกคือ Data Layer ซึ่งเป็นการที่โค้ดหน้าเว็บสั่ง dataLayer.push() โดยตรงตอนเกิดเหตุการณ์ที่สำคัญ เช่น ตอนคนกดปุ่ม LINE สำเร็จ หรือตอนฟอร์มก่อนแชทถูกส่งเรียบร้อย วิธีนี้ต้องมีนักพัฒนาเขียนโค้ดเพิ่มในจุดที่เกี่ยวข้องโดยตรง

วิธีที่สองคือ Auto-tracking ผ่าน Trigger ของ GTM เช่น Click Listener หรือ Form Listener ที่ GTM คอยจับพฤติกรรมบนหน้าเว็บเองโดยไม่ต้องแก้โค้ด อาศัยการตั้งเงื่อนไขจาก Class, ID หรือ URL Pattern ขององค์ประกอบที่ต้องการจับ

ความต่างพื้นฐานคือ Data Layer เป็นการ 'บอกตรง ๆ' จากโค้ดว่าเกิดอะไรขึ้น ส่วน Auto-tracking เป็นการ 'เดาจากพฤติกรรม' ที่สังเกตเห็นบนหน้าเว็บ ซึ่งความแม่นยำและความยืดหยุ่นของสองวิธีนี้ต่างกันพอสมควรเมื่อใช้งานจริง ทั้งสองวิธีต่อยอดมาจากพื้นฐานเดียวกันคือการตั้ง Custom Event สำหรับปุ่ม LINEที่ต้องมีอยู่ก่อนแล้ว

Data Layer ทำงานยังไง และทำไมทีม Dev มักเลือกใช้

Data Layer คือโครงสร้างข้อมูล JavaScript ที่ทำหน้าที่เป็นตัวกลางระหว่างโค้ดหน้าเว็บกับ GTM เมื่อเกิดเหตุการณ์ที่ต้องการติดตาม โค้ดจะ push ข้อมูลเข้าไปใน Data Layer พร้อมชื่อ Event และ Parameter ที่เกี่ยวข้อง แล้ว GTM จะตั้ง Trigger แบบ Custom Event ให้ทำงานทันทีที่พบชื่อ Event นั้นใน Data Layer

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

ข้อเสียคือต้องพึ่งพานักพัฒนาทุกครั้งที่ต้องการเพิ่มหรือแก้ Event ใหม่ ถ้าทีมการตลาดอยากทดลองจับ Event ใหม่เร็ว ๆ จะทำเองไม่ได้ ต้องรอคิวงานของทีมพัฒนา ซึ่งอาจไม่ทันกับจังหวะที่ต้องการข้อมูลด่วน แนวทางนี้ใกล้เคียงกับการวางEvent ฝั่ง Server-to-serverที่ต้องอาศัยทีมเทคนิคเป็นคนควบคุมความแม่นยำเช่นกัน

Auto-tracking ผ่าน GTM ทำงานยังไง และข้อจำกัดที่ต้องรู้

Auto-tracking อาศัย Trigger ประเภท Click, Form Submission หรือ Element Visibility ที่ GTM คอยเฝ้าดูพฤติกรรมบนหน้าเว็บ เมื่อพบว่ามีการคลิกองค์ประกอบที่ตรงเงื่อนไขที่ตั้งไว้ เช่น URL ขึ้นต้นด้วย line.me ก็จะยิง Event ออกไปทันที โดยทีมการตลาดตั้งเองได้ผ่านหน้า GTM โดยไม่ต้องรอนักพัฒนา

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

ข้อจำกัดคือความแม่นยำต่ำกว่า เพราะ Trigger จับจากพฤติกรรมที่สังเกตได้บนหน้าเว็บเท่านั้น ถ้าโครงสร้างหน้าเว็บเปลี่ยน เช่น เปลี่ยน Class ของปุ่ม หรือปุ่มถูกโหลดมาทีหลังผ่าน JavaScript แบบ Dynamic Content, Trigger เดิมอาจจับไม่ได้อีกต่อไปโดยไม่มีใครรู้ตัวจนกว่าจะมาตรวจสอบ

ตารางเทียบ Data Layer กับ Auto-tracking

สรุปความต่างหลักเป็นตารางเพื่อช่วยตัดสินใจว่าควรเลือกวิธีไหนสำหรับ Event แต่ละแบบ

มิติData LayerAuto-tracking ผ่าน GTM
ความแม่นยำสูง เพราะยิงจากโค้ดตอนรู้แน่ชัดว่าเหตุการณ์เกิดจริงปานกลาง ขึ้นกับความเสถียรของโครงสร้างหน้าเว็บ
ความคล่องตัวในการแก้ไขต้องรอทีมพัฒนาแก้โค้ดทุกครั้งทีมการตลาดปรับ Trigger เองได้ผ่าน GTM
ความเสี่ยง Event ซ้ำ/หายต่ำกว่า เพราะควบคุมจุดยิงตรง ๆ ในโค้ดสูงกว่า โดยเฉพาะเมื่อหน้าเว็บมี Dynamic Content
เหมาะกับEvent สำคัญที่ต้องแม่นยำ เช่น ยืนยันส่งฟอร์มสำเร็จEvent ที่ต้องการทดลองเร็วหรือจับพฤติกรรมทั่วไป

เลือกใช้แบบไหนตามสถานการณ์ของทีม

  • ถ้ามีทีมพัฒนาประจำและ Event นั้นสำคัญมากต่อการตัดสินใจงบ เช่น ยืนยันว่าฟอร์มก่อนแชทถูกส่งสำเร็จจริง ควรใช้ Data Layer เพื่อความแม่นยำ
  • ถ้าต้องการทดลองจับ Event ใหม่เร็ว ๆ เพื่อดูแนวโน้มก่อนตัดสินใจลงทุนแก้โค้ดจริงจัง ควรเริ่มจาก Auto-tracking ก่อนแล้วค่อยย้ายมาใช้ Data Layer ทีหลังถ้า Event นั้นพิสูจน์แล้วว่าสำคัญ
  • ถ้าไม่มีทีมพัฒนาประจำเลยและงบจำกัด Auto-tracking คือทางเลือกที่ทำได้จริงมากกว่า แม้ความแม่นยำจะไม่สูงสุดก็ตาม
  • ธุรกิจขนาดกลางถึงใหญ่ที่มี Event หลายสิบตัว มักใช้ทั้งสองวิธีผสมกัน โดยให้ Data Layer รับผิดชอบ Event ที่ผูกกับ Business Logic สำคัญ และ Auto-tracking รับผิดชอบ Event ทั่วไปที่ไม่ต้องการความแม่นยำสูงมาก

ออกแบบ Schema ของ Custom Event ให้ขยายได้ในอนาคต

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

  1. กำหนดรูปแบบชื่อ Event ให้สม่ำเสมอ เช่น ใช้ Verb_Object เสมอ อย่าง line_click, form_submit, chat_started แทนการตั้งชื่อแบบสุ่มที่แต่ละคนเข้าใจไม่ตรงกัน
  2. แยก Parameter ที่ใช้ร่วมกันในทุก Event เช่น page_location, utm_campaign ออกจาก Parameter เฉพาะของแต่ละ Event เพื่อให้โครงสร้างสม่ำเสมอและวิเคราะห์ข้ามกลุ่ม Event ได้ง่าย
  3. เขียนเอกสาร Event Dictionary ไว้เป็นแหล่งอ้างอิงกลาง ระบุว่า Event แต่ละตัวยิงผ่านวิธีไหน มี Parameter อะไรบ้าง และมีความหมายทางธุรกิจอย่างไร เพื่อให้คนใหม่ที่เข้ามาดูแลต่อไม่ต้องไล่เดาจากโค้ด แนวทางนี้ควรวางคู่กับหลักการตั้งชื่อUTM ที่เป็นมาตรฐานเดียวกันเพื่อให้ Parameter ทั้งฝั่ง UTM และฝั่ง Event อ่านประกอบกันได้ง่าย
  4. ทดสอบ Event ใหม่ทุกตัวผ่าน GA4 DebugView ก่อนเผยแพร่จริง เทียบกับ Schema ที่เขียนไว้ว่าตรงกันทุก Parameter ไม่มีตกหล่นหรือสะกดผิด

ทดสอบทั้งสองวิธีก่อนเผยแพร่จริงต้องดูอะไรบ้าง

สำหรับ Data Layer ต้องทดสอบว่าค่าที่ push เข้าไปมีครบตามที่ตกลงกับทีมพัฒนา ไม่มี Parameter ที่เป็นค่าว่างหรือ undefined โดยไม่ได้ตั้งใจ และต้องยิงแค่ครั้งเดียวต่อเหตุการณ์จริงหนึ่งครั้ง ไม่ใช่ยิงซ้ำเพราะโค้ดถูกเรียกทำงานหลายรอบ

สำหรับ Auto-tracking ต้องทดสอบผ่าน Preview Mode โดยจำลองพฤติกรรมจริงหลายแบบ เช่น คลิกปุ่มเร็ว ๆ ติดกันสองครั้ง คลิกผ่านคีย์บอร์ดแทนเมาส์ หรือเปิดหน้าเว็บบนอุปกรณ์ที่โหลดช้ากว่าปกติ เพื่อดูว่า Trigger ยังทำงานถูกต้องในสถานการณ์ที่ไม่ใช่แค่คลิกปกติแบบเดียว

หลังเผยแพร่ทั้งสองวิธีแล้ว ควรเฝ้าดูข้อมูลจริงในสัปดาห์แรกเทียบกับความรู้สึกของทีมหน้างานว่าจำนวน Event ที่เห็นสมเหตุสมผลไหม ถ้าตัวเลขต่ำหรือสูงผิดปกติทันที ให้กลับไปตรวจ Trigger หรือโค้ดที่ push Data Layer ก่อนเชื่อข้อมูลนั้นไปใช้ตัดสินใจ

ข้อผิดพลาดที่พบบ่อยเมื่อผสมสองวิธีในเว็บเดียวกัน

  • ตั้งชื่อ Event เดียวกันจากทั้งสองวิธีโดยไม่ตั้งใจ ทำให้ Event นั้นยิงซ้ำสองครั้งต่อเหตุการณ์จริงหนึ่งครั้งเมื่อทั้ง Data Layer และ Auto-tracking ทำงานพร้อมกัน
  • ไม่มีเอกสารบอกว่า Event ตัวไหนยิงผ่านวิธีไหน ทำให้เวลา Event ผิดปกติต้องไล่ตรวจทั้งโค้ดและ GTM พร้อมกันโดยไม่รู้จะเริ่มจากตรงไหนก่อน
  • ปล่อยให้ Auto-tracking จับ Event สำคัญที่ควรใช้ Data Layer เพราะตั้งง่ายกว่าในตอนแรก แล้วมาพบทีหลังว่าข้อมูลไม่แม่นยำพอสำหรับใช้ตัดสินใจงบจริงจัง
  • ไม่ทดสอบ Parameter หลังทีมพัฒนาปรับโค้ดหน้าเว็บ ทำให้ Data Layer ที่เคยยิงถูกต้องเริ่มส่งค่าผิดโดยไม่มีใครสังเกตจนผ่านไปหลายสัปดาห์

ใครควรดูแล Custom Event เหล่านี้ต่อเนื่องหลังเผยแพร่แล้ว

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

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

สำหรับทีมที่ใช้ Auto-tracking เป็นหลัก ควรมีรอบตรวจสอบถี่กว่าทีมที่ใช้ Data Layer เพราะความเสี่ยงที่โครงสร้างหน้าเว็บจะเปลี่ยนจนกระทบ Trigger นั้นสูงกว่า ส่วนทีมที่ใช้ Data Layer เป็นหลักควรทำให้การ push Event เป็นส่วนหนึ่งของกระบวนการทดสอบโค้ดปกติของทีมพัฒนา แทนที่จะแยกเป็นงาน Tracking ต่างหากที่มักถูกลืมเมื่อมีงานเร่งด่วนอื่นแทรกเข้ามา

สรุป

Data Layer กับ Auto-tracking ไม่ใช่คำตอบที่ถูกต้องเพียงหนึ่งเดียวสำหรับทุกสถานการณ์ แต่ละวิธีมีจุดแข็งจุดอ่อนต่างกัน และธุรกิจที่มี Event หลายแบบมักต้องใช้ทั้งสองวิธีผสมกันตามความสำคัญของแต่ละ Event

สิ่งที่สำคัญกว่าการเลือกวิธีคือการออกแบบ Schema และเอกสารอ้างอิงให้เป็นระบบตั้งแต่ต้น เพราะพอ Event เพิ่มขึ้นเรื่อย ๆ ตามการเติบโตของธุรกิจ ถ้าไม่มีมาตรฐานกลางไว้ตั้งแต่แรก การดูแลรักษาในภายหลังจะยุ่งยากขึ้นมาก

  • Data Layer แม่นยำกว่าแต่ต้องพึ่งทีมพัฒนา Auto-tracking คล่องตัวกว่าแต่เสี่ยง Event ซ้ำหรือหาย
  • เลือกใช้ตามความสำคัญของ Event ไม่ใช่ตามความง่ายในการตั้งค่า
  • ออกแบบ Schema และตั้งชื่อ Event ให้สม่ำเสมอตั้งแต่ต้นเพื่อขยายได้ในอนาคต
  • ทดสอบผ่าน DebugView ทุกครั้งหลังเพิ่ม Event ใหม่หรือปรับโครงสร้างเว็บ

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

ต้องเลือกใช้วิธีเดียวทั้งเว็บไหม หรือผสมกันได้

ผสมกันได้และหลายทีมก็ทำแบบนี้จริง โดยให้ Data Layer รับผิดชอบ Event สำคัญที่ต้องแม่นยำ ส่วน Auto-tracking รับผิดชอบ Event ทั่วไปที่ไม่ต้องการความแม่นยำสูงมาก เพียงแต่ต้องตั้งชื่อ Event ให้ไม่ชนกันระหว่างสองวิธี

Auto-tracking เหมาะกับธุรกิจที่เพิ่งเริ่มวางระบบ Tracking ไหม

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

ทำไม Event จาก Auto-tracking บางครั้งถึงยิงซ้ำ

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

Data Layer ต้องใช้ร่วมกับ GTM เสมอไหม

ไม่จำเป็นเสมอไป สามารถยิง gtag Event ตรงจากโค้ดโดยไม่ผ่าน GTM ก็ได้ แต่การใช้ Data Layer ร่วมกับ GTM ช่วยให้ปรับปลายทางของ Event ได้ยืดหยุ่นกว่า เช่น ส่งไปทั้ง GA4 และเครื่องมืออื่นพร้อมกันโดยไม่ต้องแก้โค้ดซ้ำ

ถ้าเว็บเปลี่ยนธีมหรือปรับโครงสร้างใหม่ Event ที่ตั้งไว้จะพังไหม

Auto-tracking มีความเสี่ยงสูงกว่าที่จะพังถ้า Class หรือ ID ขององค์ประกอบเปลี่ยนไปตามธีมใหม่ ส่วน Data Layer จะไม่พังถ้าโค้ดที่ push ข้อมูลยังอยู่ในระบบเดิม แต่ควรตรวจสอบทั้งสองวิธีทุกครั้งหลังปรับโครงสร้างเว็บใหญ่

ควรเก็บ Event Dictionary ไว้ที่ไหนถึงจะดูแลได้ต่อเนื่อง

ควรเก็บไว้ในที่ที่ทั้งทีมการตลาดและทีมพัฒนาเข้าถึงได้ร่วมกัน เช่น เอกสารกลางที่อัปเดตทุกครั้งที่มี Event ใหม่หรือมีการเปลี่ยน Parameter เพื่อไม่ให้ความรู้กระจัดกระจายอยู่แค่ในหัวคนใดคนหนึ่ง

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

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

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

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

ทำไมสร้าง Audience คนกด LINE ใน GA4 แล้วยิงแอดซ้ำไม่ค่อยแม่น

ทำไมสร้าง Audience คนกด LINE ใน GA4 แล้วยิงแอดซ้ำไม่ค่อยแม่น

หลายทีมสร้าง Audience จากคนกดปุ่ม LINE ใน GA4 แล้วเอาไปยิงแอดซ้ำ แต่ผลลัพธ์ไม่ตรงที่คาด บทความนี้ไล่ดูสาเหตุตั้งแต่การตั้ง Event ผิด ไปจนถึงขนาด Audience ที่เล็กเกินไป
ตั้ง Key Event จากปุ่ม LINE ฝั่ง Client กับฝั่ง Server ต่างกันตรงไหน

ตั้ง Key Event จากปุ่ม LINE ฝั่ง Client กับฝั่ง Server ต่างกันตรงไหน

ปุ่ม LINE กดแล้วยิง Key Event ใน GA4 ได้สองทาง ฝั่ง Client ตั้งเร็วแต่ข้อมูลหลุดง่าย ฝั่ง Server แม่นกว่าแต่ต้องมีคนดูแล บทความนี้เทียบให้เห็นว่าธุรกิจแบบไหนควรเลือกทางไหน
หน้าไหนพาคนไปกด LINE จริง ดูใน GA4 แบบนี้ไม่มโน

หน้าไหนพาคนไปกด LINE จริง ดูใน GA4 แบบนี้ไม่มโน

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