งบโฆษณาวันละ 2,000 บาท แต่ไม่รู้ว่ามีกี่คนกดปุ่ม LINE จริง

สรุปสั้น ๆ
การ Track Click ปุ่ม LINE ด้วย GTM ทำได้โดยสร้าง Trigger ที่จับ Click Element หรือ Click URL ตรงกับปุ่ม LINE แล้วส่ง Event พร้อม Parameter ตำแหน่งปุ่มไปยัง GA4 หรือปลายทางที่ต้องการ จุดที่ต้องระวังที่สุดคือกันนับซ้ำเมื่อคนกดปุ่มเดิมหลายครั้งในเซสชันเดียว
เจ้าของร้านอาหารรายหนึ่งเล่าให้ผมฟังว่า ยิงแอดวันละราวสองพันบาทมาสามเดือนติด เห็นยอด Reach กับยอด Click ในตัวจัดการโฆษณาสูงขึ้นเรื่อย ๆ แต่พอถามว่า ‘กี่คนที่กดปุ่ม LINE จริง ๆ’ เขาตอบไม่ได้ มีแค่ตัวเลขคนคลิกลิงก์เข้าเว็บ ส่วนคนที่กดปุ่ม LINE ต่อจากนั้นอีกที ไม่มีใครนับ
ความต่างระหว่าง ‘คลิกเข้าเว็บ’ กับ ‘คลิกปุ่ม LINE’ ดูเหมือนเรื่องเล็ก แต่จริง ๆ แล้วเป็นคนละ Layer กันเลย เพราะคนที่เข้าเว็บแล้วไม่กดปุ่ม LINE ต่อ คือคนที่หลุดออกจาก Funnel ไปโดยไม่มีใครรู้ ถ้าไม่มีข้อมูลตรงจุดนี้ คุณจะไม่มีทางรู้เลยว่าหน้าเว็บที่ออกแบบมา ทำหน้าที่พาคนไปกดปุ่มได้ดีแค่ไหน
บทความนี้จะอธิบายวิธีตั้ง GTM ให้จับ Click ปุ่ม LINE แบบที่ใช้งานได้จริง ไม่ใช่แค่ทฤษฎี รวมถึงจุดที่คนตั้งค่าผิดบ่อยจนได้ตัวเลขที่นับซ้ำหรือนับหายโดยไม่รู้ตัว
Click ปุ่ม LINE ต่างจาก Add Friend และ Chat ตรงไหน
หลายคนใช้คำว่า ‘คนเข้า LINE’ ปนกันหมด ทั้งที่จริง ๆ แล้วมันคือสามเหตุการณ์คนละขั้น คลิกปุ่ม LINE คือจังหวะที่คนกดลิงก์บนเว็บเพื่อจะเปลี่ยนหน้าไป LINE เท่านั้น ยังไม่รู้ด้วยซ้ำว่าเขาจะเพิ่มเพื่อนสำเร็จหรือเปล่า ส่วน Add Friend คือขั้นที่เขากดยืนยันเพิ่มเพื่อนจริงในแอป LINE และ Chat Started คือขั้นที่เขาพิมพ์ข้อความแรกเข้ามา
การแยกสามขั้นนี้ให้ชัดสำคัญมาก เพราะถ้าสมมติว่ามีคนคลิกปุ่ม 100 คน แต่มีแค่ 60 คนที่เพิ่มเพื่อนจริง แปลว่ามี 40 คนหายไปกลางทาง ซึ่งอาจเกิดจากปุ่มพาไปหน้าที่โหลดช้า หรือ LINE OA เต็มจำนวนเพื่อนต่อวัน การรู้ตัวเลขแต่ละขั้นแยกกัน ทำให้เห็นว่าจุดรั่วอยู่ตรงไหนของ Funnel ไม่ใช่เห็นแค่ภาพรวมกว้าง ๆ
งบที่หายไปกับคนที่คลิกเข้าเว็บแต่ไม่เคยกดปุ่ม LINE เลย
ถ้าคุณดูแค่ยอด Click ในตัวจัดการโฆษณา คุณกำลังเห็นแค่ครึ่งแรกของภาพ เพราะยอด Click ของแพลตฟอร์มโฆษณานับแค่คนที่คลิกลิงก์เข้าเว็บ ไม่ได้บอกว่าคนกลุ่มนั้นทำอะไรต่อบนเว็บ สมมติงบสองพันบาทต่อวันได้คลิกเข้าเว็บ 80 ครั้ง แต่ถ้าไม่มี Event ปุ่ม LINE คุณจะไม่มีทางรู้เลยว่าใน 80 คนนั้น มีกี่คนที่ไปต่อจนถึงจุดกดปุ่ม
ตัวเลขที่หายไปตรงนี้สำคัญเพราะมันชี้ว่าปัญหาคุณอยู่ที่ ‘คนไม่คลิกเข้าเว็บ’ (ปัญหาที่ Ad Creative หรือ Targeting) หรืออยู่ที่ ‘คนเข้าเว็บแล้วไม่กดปุ่ม LINE ต่อ’ (ปัญหาที่ Landing Page) สองปัญหานี้แก้คนละวิธีกันเลย และคุณจะแก้ถูกก็ต่อเมื่อมีข้อมูล Click ปุ่ม LINE แยกไว้ต่างหาก
ตั้ง Trigger ใน GTM ให้จับคลิกปุ่ม LINE แบบไม่หลุด
แนวทางการตั้งค่าในระดับแนวคิดมีลำดับประมาณนี้ ปรับรายละเอียดตามโครงสร้างเว็บของแต่ละร้านได้
- เปิด Variable ประเภท Click URL และ Click Element ใน GTM ให้พร้อมใช้งานก่อนเริ่มสร้าง Trigger
- สร้าง Trigger ประเภท Just Links หรือ All Elements ตามลักษณะปุ่ม แล้วกำหนดเงื่อนไขว่า Click URL ต้องมีคำว่า line.me หรือ URL ของ LINE OA ที่ใช้จริง
- ถ้าปุ่มเป็นปุ่มลอย (Floating Button) ที่โหลดหลังหน้าเว็บ ให้เลือก Trigger ที่รองรับ Element ซึ่งเพิ่มเข้ามาทีหลัง ไม่ใช่แค่ตอนโหลดหน้าเสร็จครั้งแรก
- สร้าง Tag ที่ยิง Event ไปยัง GA4 พร้อม Parameter ตำแหน่งปุ่ม เช่น header, floating หรือ footer เพื่อรู้ว่าจุดไหนถูกกดมากสุด
- ทดสอบผ่าน Preview Mode คลิกทุกจุดที่มีปุ่ม LINE บนเว็บ แล้วเช็คว่า Tag ยิงตรงตามที่ตั้งใจก่อน Publish จริง
Event Parameter ที่ควรแนบไปกับการคลิกทุกครั้ง
การรู้แค่ ‘มีคนคลิก’ ไม่พอสำหรับการวิเคราะห์ต่อ ควรแนบข้อมูลเสริมไปด้วยตามตารางนี้ เพื่อให้เอาไปกรองและเปรียบเทียบได้ภายหลัง
| Parameter | เก็บไว้ทำไม | ตัวอย่างค่า |
|---|---|---|
| button_position | รู้ว่าปุ่มจุดไหนถูกกดมากสุด | header / floating / footer |
| page_location | รู้ว่าคนกดจากหน้าไหนของเว็บ | /promotion, /contact |
| utm_source / utm_campaign | ผูกกลับไปหาแคมเปญต้นทาง | facebook / google-ads |
| click_timestamp | ใช้เทียบ Lag กับ Event ขั้นถัดไป | เวลาที่คลิกจริง |
เว็บที่ปุ่ม LINE เป็น Popup หรือ Dynamic ต้องระวังอะไรเพิ่ม
เว็บสมัยใหม่จำนวนมากไม่ได้ใช้ปุ่ม LINE แบบลิงก์ตรงไปตรงมา บางเว็บกดปุ่มแล้วเด้ง Popup ให้เลือกสแกน QR หรือกดเปิดแอป ซึ่งทำให้ Trigger แบบ Just Links จับไม่ได้ตรง ๆ เพราะ Element ที่ถูกคลิกไม่ใช่ลิงก์ที่มี URL ของ LINE โดยตรง แต่เป็นปุ่มที่สั่งเปิด Modal ขึ้นมาก่อน
ในกรณีแบบนี้ต้องเปลี่ยนมาใช้ Trigger ประเภท Click - All Elements แล้วอ้างอิงจาก Class หรือ ID ของปุ่มนั้นแทน และถ้าใน Popup มีทั้งปุ่มเปิดแอปกับ QR Code ให้แยก Trigger สองตัว เพื่อรู้ว่าคนเลือกวิธีไหนมากกว่ากัน ข้อมูลนี้มีประโยชน์มากสำหรับการตัดสินใจว่าจะเน้นออกแบบ UX แบบไหนต่อ
กันนับ Event ซ้ำตอนคนกดปุ่มเดิมหลายครั้ง
ปัญหาที่พบบ่อยมากคือ Trigger จับ Event ซ้ำเมื่อคนลังเลแล้วกดปุ่มเดิมสองสามครั้งติดกันก่อนตัดสินใจจริง ถ้าไม่มีการกันซ้ำ ตัวเลขที่เห็นจะสูงเกินความจริงและทำให้การวิเคราะห์ผิดเพี้ยน วิธีที่ใช้ได้จริงคือใส่เงื่อนไข Trigger Once per Page ในบาง Tag เพื่อให้นับแค่ครั้งแรกต่อการโหลดหน้าหนึ่งครั้ง
อีกวิธีที่ช่วยเสริมคือตั้ง Session Storage เก็บสถานะว่ามีการยิง Event นี้ไปแล้วในเซสชันปัจจุบันหรือยัง ก่อนอนุญาตให้ยิงซ้ำ วิธีนี้ซับซ้อนกว่าแต่ควบคุมความแม่นยำได้ดีกว่าสำหรับเว็บที่มีปุ่ม LINE หลายจุดในหน้าเดียวกัน
เอาข้อมูล Click ไปใช้ต่อกับ Ads และทีมขายยังไง
เมื่อเก็บ Event คลิกปุ่ม LINE ได้แล้ว ขั้นต่อไปคือเอาไปใช้จริง ฝั่ง Ads สามารถตั้งเป็น Conversion Action แบบ Micro Conversion เพื่อดูว่าแคมเปญไหนพาคนมากดปุ่มได้เยอะ แต่ควรระวังไม่ให้ Optimize ไปที่ Click อย่างเดียวเป็นระยะยาว เพราะ Click ปุ่มยังห่างจากยอดขายจริงอยู่หลายขั้น
ฝั่งทีมขายควรได้เห็นข้อมูลนี้เช่นกัน เพื่อเทียบว่าช่วงเวลาที่คนคลิกปุ่มเยอะ ตรงกับช่วงที่แอดมินรับแชทไหวหรือเปล่า ถ้าคลิกเยอะตอนดึกแต่ไม่มีแอดมินออนไลน์ นั่นคือจุดที่ต้องแก้เรื่องกำลังคนก่อนจะไปเพิ่มงบโฆษณาต่อ
เลือกระหว่าง Auto-Event Trigger กับ dataLayer.push เอง แบบไหนแม่นกว่า
GTM มีสองวิธีหลักในการจับคลิกปุ่ม LINE วิธีแรกคือใช้ Built-in Variable ของ Auto-Event เช่น Click Element, Click Classes, Click URL ซึ่งตั้งค่าได้เร็วโดยไม่ต้องแตะโค้ดหน้าเว็บเลย เหมาะกับทีมที่ไม่มีนักพัฒนาดูแลต่อเนื่อง วิธีที่สองคือให้ทีมพัฒนาเขียน dataLayer.push({event: 'line_button_click', button_position: 'header'}) ไว้ในโค้ดตรงจุดที่ปุ่มถูกคลิก แล้วตั้ง Trigger ประเภท Custom Event ให้ฟังชื่อ Event นั้นโดยตรง
ข้อดีของการ push dataLayer เองคือไม่ต้องพึ่งการจับคู่ Class หรือ URL ที่เปราะบางต่อการเปลี่ยนดีไซน์ แต่ข้อเสียคือต้องมีทีมพัฒนาคอยแก้โค้ดทุกครั้งที่มีปุ่มใหม่ ในทางปฏิบัติหลายทีมใช้ผสมกัน คือใช้ Auto-Event สำหรับปุ่มทั่วไปที่ไม่ค่อยเปลี่ยน แล้วใช้ dataLayer.push เฉพาะจุดที่ซับซ้อน เช่น ปุ่มที่โหลดผ่าน JavaScript Framework แบบ Single Page Application ซึ่ง Auto-Event บางครั้งจับ Element ที่โหลดทีหลังไม่ทัน
- Auto-Event Trigger: ตั้งไวไม่ต้องแก้โค้ด แต่เปราะบางเมื่อ Class หรือ URL ของปุ่มเปลี่ยน
- dataLayer.push เอง: แม่นกว่าและควบคุมข้อมูลที่แนบไปได้เต็มที่ แต่ต้องมีทีมพัฒนาดูแล
- สำหรับปุ่มที่โหลดผ่าน JavaScript หลัง DOM พร้อม ควรเลือก Trigger ที่รองรับ Element ซึ่งเพิ่มเข้ามาทีหลัง ไม่ใช่ All Elements ธรรมดาที่จับได้แค่ตอนโหลดหน้าครั้งแรก
สรุป
ยอด Click ในตัวจัดการโฆษณากับยอดคนกดปุ่ม LINE จริงบนเว็บ เป็นคนละตัวเลขกัน และถ้าไม่มี Event ที่จับปุ่ม LINE แยกไว้ต่างหาก คุณจะมองไม่เห็นว่าเว็บของคุณทำหน้าที่พาคนไปถึงจุดกดปุ่มได้ดีแค่ไหน
การตั้ง Trigger ให้ถูก แนบ Parameter ที่มีประโยชน์ และกันการนับซ้ำ คือสามเรื่องหลักที่ทำให้ข้อมูลนี้ใช้งานได้จริง ไม่ใช่แค่ตัวเลขสวย ๆ ที่ไม่มีใครเอาไปทำอะไรต่อ
- แยก Click ปุ่ม LINE ออกจาก Add Friend และ Chat เพราะเป็นคนละขั้นของ Funnel
- แนบ Parameter อย่างตำแหน่งปุ่มและ UTM ไปกับ Event ทุกครั้ง ไม่ใช่แค่บันทึกว่ามีคนคลิก
- กันนับซ้ำด้วย Trigger Once per Page หรือ Session Storage เพื่อให้ตัวเลขน่าเชื่อถือ
คำถามที่พบบ่อย
ปุ่ม LINE ที่อยู่ใน iframe ตั้งค่าจับคลิกยากกว่าปกติไหม
ยากกว่า เพราะ GTM ที่ติดตั้งบนหน้าหลักมักมองไม่เห็น Element ภายใน iframe โดยตรง ต้องมี GTM หรือ Data Layer แยกฝังอยู่ใน iframe นั้นด้วย หรือให้ iframe ส่งข้อความกลับมาหาหน้าหลักผ่าน postMessage
จำเป็นต้องแยก Event ตามตำแหน่งปุ่มไหม ถ้าเว็บมีปุ่มเดียว
ถ้ามีปุ่มเดียวก็ไม่จำเป็นต้องแยกตำแหน่ง แต่แนะนำให้ใส่ Parameter ไว้เผื่ออนาคต เพราะเว็บมักเพิ่มปุ่มใหม่ทีหลัง การมีโครงสร้างรองรับไว้ตั้งแต่ต้นทำให้ไม่ต้องแก้ทั้งระบบภายหลัง
ตัวเลข Click ที่ GTM เก็บ จะตรงกับที่ Ads Manager รายงานไหม
ไม่จำเป็นต้องตรงกันเป๊ะ เพราะแพลตฟอร์มโฆษณานับ Click ที่เข้าเว็บ ส่วน GTM นับ Click ปุ่ม LINE ที่เกิดขึ้นบนเว็บอีกที ซึ่งเป็นคนละ Layer และปกติจะมีค่าต่ำกว่ายอด Click เข้าเว็บเสมอ
ควรตั้ง Conversion Action จาก Click ปุ่ม LINE เลยไหม
ทำได้ในฐานะ Micro Conversion เพื่อดูแนวโน้ม แต่ไม่ควรใช้เป็น Primary Conversion ระยะยาว เพราะ Click ยังห่างจากยอดขายจริง ควรพิจารณาร่วมกับ Event ปลายน้ำอย่าง Lead หรือ Order ด้วย
ปุ่ม LINE ที่เปลี่ยนตำแหน่งบ่อยตาม A/B Test ต้องแก้ Trigger ทุกครั้งไหม
ถ้าอ้างอิง Trigger จาก Class หรือ ID ที่คงที่ ไม่จำเป็นต้องแก้ทุกครั้งที่ย้ายตำแหน่ง แต่ถ้าเปลี่ยน Class ไปด้วยตอนทำ A/B Test ต้องอัปเดต Trigger ให้ตรงเสมอ ไม่งั้น Event จะหยุดยิงกลางแคมเปญ
ทำไมบางครั้งคลิกปุ่มแล้ว Event ไม่ขึ้นใน DebugView ทันที
อาจเกิดจาก Ad Blocker ในเบราว์เซอร์ของเครื่องที่ทดสอบ หรือ Trigger ตั้งเงื่อนไขผิดจุด ให้ลองทดสอบผ่าน Preview Mode ของ GTM โดยตรงเพื่อดูว่า Tag ถูกยิงจริงหรือไม่ ก่อนไปดูที่ปลายทาง
gtm.click กับ gtm.linkClick ต่างกันยังไง
gtm.click คือ Event มาตรฐานที่เกิดจาก Trigger ประเภท All Elements ซึ่งจับได้ทุก Element ที่ถูกคลิก ส่วน gtm.linkClick เกิดจาก Trigger ประเภท Just Links ซึ่งจับเฉพาะ Element ที่เป็นแท็ก a และมี href เท่านั้น ถ้าปุ่ม LINE เป็นปุ่ม button ที่สั่งเปิด Popup ไม่ใช่ลิงก์ตรง ต้องใช้ All Elements ไม่ใช่ Just Links
ทำไม Preview Mode บอกว่า Trigger ทำงาน แต่ Tag ไม่ยิงจริง
มักเกิดจาก Tag มีเงื่อนไข Trigger เพิ่มเติมที่ไม่ผ่าน เช่น ตั้ง Blocking Trigger ไว้โดยไม่ตั้งใจ หรือ Tag อ้างอิง Variable ที่ยังไม่มีค่าตอนนั้น ให้เปิดแท็บ Tags ใน Preview Mode ดูว่า Tag ที่คาดว่าจะยิงอยู่ในลิสต์ Tags Fired หรือ Tags Not Fired เพื่อไล่หาสาเหตุตรงจุด
ควรใช้ Click URL หรือ Click Element เป็นเงื่อนไขหลักของ Trigger
ถ้าปุ่มเป็นลิงก์ที่มี URL ของ LINE ชัดเจน Click URL มักแม่นกว่าเพราะไม่ขึ้นกับหน้าตาของปุ่ม แต่ถ้าปุ่มเป็น button ที่สั่ง JavaScript โดยไม่มี URL ตรง ๆ ต้องใช้ Click Element หรือ CSS Selector อ้างอิง Element แทน ควรเลือกตามลักษณะจริงของปุ่มในแต่ละเว็บ ไม่ใช่ยึดวิธีเดียวกับทุกเว็บ
ลองตรวจด้วยตัวเอง
Ads Budget Calculator
เริ่มจากเป้ารายได้ แล้วคำนวณย้อนกลับว่าต้องมีกี่ Lead กี่คลิก และงบเท่าไร
คำนวณงบฟรี →ใช้ฟรี ไม่ต้องสมัคร ไม่เก็บข้อมูลที่คุณกรอก
อ่านต่อแบบเจาะลึก
รู้ว่าโฆษณาเข้า LINE ทำยอดขายจริงแค่ไหน
linli ติดตามลูกค้าตั้งแต่คลิกโฆษณา กดเพิ่มเพื่อน ทักแชท จนปิดการขาย พร้อมส่ง Conversion กลับแพลตฟอร์มโฆษณา เริ่มฟรี 14 วัน
ทดลองใช้ฟรี 14 วันบทความที่เกี่ยวข้อง

ยอดขายจาก TikTok เพิ่มขึ้นทุกเดือน แต่ในโฆษณากลับไม่เห็น Conversion เพิ่มเลย แก้ยังไง

5 แคมเปญยิงเข้า LINE พร้อมกัน แต่ระบบนับ Custom Event ได้แค่ตัวเดียว จะแยกยังไง
