จัดกลุ่มเนื้อหา หรือ Content Group ใน GA4

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

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

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

สำหรับบทความนี้ (จะเรียกว่าเป็นบทความได้หรือป่าวนะ อาจจะเรียกว่ามันเป็นโน๊ตที่ผมจดลงบล็อก บันทึกผลการทำงาน เพื่อจะเอาไว้อ่านเองทีหลังมากกว่า) เราจะมาทำการจัดกลุ่มเนื้อหา หรือ การทำ Content Group ใน GA4 กัน

การจัดกลุ่มเนื้อหา หรือ Content Group ใน GA4 คืออะไร

จัดหมวดหมู่หน้าเว็บและหน้าจอที่เกี่ยวข้องไว้ในที่เก็บข้อมูลที่กําหนดเอง กลุ่มเนื้อหาช่วยให้คุณสามารถจัดหมวดหมู่หน้าเว็บและหน้าจอไว้ในที่เก็บข้อมูลที่กําหนดเอง คุณจึงดูเมตริกสําหรับกลุ่มข้อมูลที่เกี่ยวข้องได้ เช่น คุณสามารถสร้างที่เก็บข้อมูลสําหรับหน้าเว็บที่แสดงเสื้อผ้าผู้ชาย ผู้หญิง และเด็กแยกกันได้
ในหน้าเว็บที่แสดงเสื้อผ้าผู้ชาย คุณอาจระบุกลุ่มเนื้อหาผ่านพารามิเตอร์เหตุการณ์ content_group โดยเพิ่มโค้ดด้านล่าง ซึ่งคุณสามารถใช้คำว่า “mens” (หรืออะไรก็ได้) เพื่อสื่อว่าเป็นเสื้อผ้าผู้ชายได้
gtag(‘set’, ‘content_group’, ‘mens’);
ในหน้าเว็บที่แสดงเสื้อผ้าผู้หญิง คุณอาจเพิ่มโค้ดนี้
gtag(‘set’, ‘content_group’, ‘womens’);

https://support.google.com/analytics/answer/11523339?hl=th

เข้าไปอ่านหัวข้อการจัดกลุ่มเนื้อหา หรือ Content Group ใน GA4 นั้นได้เขียนไว้แค่คร่าว ๆ แค่บอกว่าช่วยให้เราจัดหมวดหมู่หน้าเว็บและหน้าจอที่เกี่ยวข้อง

ดูรีพอร์ตการจัดกลุ่มเนื้อหา หรือ Content Group GA4 ได้ที่ไหน

วิธีการเข้าไปดูรีพอร์ต Content group GA4 หรือ การจัดกลุ่มเนื้อหาได้ที่ Engagement > Pages and Screens report จากนั้นกดที่ Drop-down เราจะเห็นว่ามีตัวเลือก Content group ให้เราเลือก (เดี๋ยวผมแคปเป็นรูปภาพให้ดูทั้งภาษาไทยและอังกฤษ)

Content Group report in GA4
รีพอร์ต กลุ่มเนื้อหา ใน Google Analytic 4

หากเรายังไม่เคยทำอะไรเลย เพิ่งจะทำการเปลี่ยนจะใช้งาน GA4 เมื่อเรากดเข้าดูรีพอร์ตการจัดกลุ่มเนื้อหา Content Grouping สิ่งที่เราจะเห็นก็คือ ทุกข้อมูลจะรวมอยู่ใน (not set)

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

ในคู่มือของ GA4 เองที่เราได้เข้าไปอ่าน ก็ยังไม่ได้มีวิธีที่แนะนำเอาไว้ว่าทำอย่างไร มีแค่บอกว่าให้ติดโค้ด ระบุกลุ่มเนื้อหาผ่านพารามิเตอร์เหตุการณ์ content_group และสามารถตั้งค่าพารามิเตอร์ content_group ได้โดยใช้เหตุการณ์ page_view หรือคําสั่ง set ในทํานองเดียวกัน คุณสามารถเพิ่มพารามิเตอร์ content_group ลงในเหตุการณ์ screen_view ได้

วิธีการสร้าง Content Group ใน GA4 ผ่าน GTM

วิธีการที่เราจะสร้าง Content Group เพิ่มเข้าไปใน GA4 นั้น ถ้าเราไปอ่านในคู่มือและทำความเข้าใจ จริง ๆ มันสามารถทำได้สองวิธี คือการติดโค้ดเพิ่มในหน้าเว็บไซต์และส่งคำสั่งผ่าน gtag set

gtag('set', 'content_group', 'ชื่อกลุ่มเนื้อหา');

หรือจะใช้อีกวิธีที่อาจจะง่ายกว่าก็คือการจัดทำผ่าน Google Tag Manager (GTM) ซึ่งโดยปกติแล้วเราก็ทำการการติด Google Analytic ผ่าน GTM อยู่แล้ว (แต่ถ้าใครยังติดโค้ด GTag โดยตรงไม่ได้ติดผ่าน GTM แนะนำให้เปลี่ยนเป็นการติดผ่าน GTM เดี๋ยวผมหาเวลาเขียนบทความเพิ่ม เกี่ยวกับวิธีการติด Google Analytic 4 ผ่าน GTM หรือ ลองค้นหาใน Google ดูได้เลย เพราะว่ามีเขียนบอกเอาไว้เยอะมาก)

สำหรับวิธีการเพิ่ม Content Group ใน GA4 ผ่าน GTM สามารถทำได้ดังนี้

ไปที่ Google Tag Manager นั้นเปิดไปที่แท็ก GA4 หลักที่เราเคยติด GA4 ไว้ (บนสมมติฐานที่ทุกคนติด GA4 ผ่าน GTM กันเรียบร้อยแล้วนะ ถ้ายังไม่ติด ต้องติด GA4 ผ่าน GTM ให้เรียบร้อยก่อนครับ)

Tag Configuration > เลือกแท็ก GA4 หลักที่เราติดตั้งไว้กับเว็บของเรา > เพิ่ม Field to set : Field Name ตั้งชื่อเป็น content_group

เพิ่ม Field Name content_group เพิ่มเข้าไปใน GA4 Configuration และใส่ค่าเข้าไป

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

สร้างตัวแปรเพื่อกำหนดค่า Content Group

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

function(){
  var page_path = {{Page Path}}
  if (page_path.includes(".html")){
    return "บทความ";
  }else if(page_path.startsWith("/category/")){
    return "หมวดหมู่";
  }else if(page_path.startsWith("/tag/")){
    return "แท็กบทความ";
  }else if(page_path.startsWith("/place-type/")){
    return "ประเภทสถานที่";
  }else if(page_path.startsWith("/place/")){
    return "สถานที่";
  }else if(page_path.startsWith("/province/")){
    return "สถานที่ในจังหวัด";
  }else if(page_path.startsWith("/dict/")){
    return "ภาษาอีสาน";
  }else if(page_path.startsWith("/topic/")){
    return "หม่องโสเหล่";
  }else if(page_path.startsWith("/user/")){
    return "สมาชิก";
  }else if(page_path.startsWith("/wiki/")){
    return "วิกิ";
  }else if(page_path.startsWith("/feed/")){
    return "ฟีด";
  }else if(page_path == "/"){
    return "หน้าแรก";
  }else{
    return "อื่น ๆ";
  }
}
Custom Content Group with Custom JavaScript

อธิบายโค้ด :

  • if(page_path.includes(“.html”)) –> Return “บทความ” ถ้า URL มี .html อยู่ด้วย แสดงว่ามีการดูหน้าที่เป็นบทความ เพราะเว็บนี้เป็น WordPress ผมตั้ง Permalink ของบทความให้ลงท้ายด้วย .html ทั้งหมด แต่ถ้าเว็บไหนที่ไม่ได้ตั้งแบบนี้ก็อาจจะต้องปรึกษากับโปรแกรมเมอร์ว่าเราจะรู้ได้อย่างไร ว่าเป็น URL ของบทความ
  • if(page_path.startsWith(“/category/”)) –> Return “หมวดหมู่” หากมี page path ที่ขึ้นต้นด้วย /category แสดงว่ามีการเปิดหน้าหมวดหมู่อยู่ ให้ Return ค่าเป็น “หมวดหมู่” กลับไป และการทำงานของโค้ดบรรทัดที่เหลือ ก็มีลักษณะเดียวกัน

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

Debug หรือ ทำการตรวจสอบค่าตัวแปรว่าถูกต้องหรือไม่

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

Preview mode in GTM

ทำการกรอก URL หน้าเว็บของเรา ที่ต้องการตรวจสอบ แล้วกด Connect (URL ที่เรากรอก จะต้องเป็นเว็บของเรา ที่ทำการติด GTM ด้วย Container ID เดียวกันนะ)

Connect Tag Assistant to your site

หลังจากที่กด Connect หากเชื่อมต่อได้สำเร็จบราวเซอร์จะเปิดหน้าต่างใหม่ขึ้นมา และแสดง Popup ว่า Tag Assistant Connected

Tag Assistant Connected

หลังจากที่ Connect Tag Assistant ได้สำเร็จแล้ว ผมก็ลองกดลิงก์เปิดไปหน้าบทความ ซึ่งจะมี URL ที่ประกอบด้วย .html และ ผลลัพธ์ที่คาดหวังคือ ตัวแปรชื่อ Content Group Variable ที่เราสร้างไว้ใน GTM ก่อนหน้านี้ จะต้องมีค่าเป็น “บทความ” ตามโค้ด JavaScript ที่เราตั้งเงื่อนไขเอาไว้

ผลการตรวจสอบค่าตัวแปร Content Group Variable ที่ได้จาก Custom JavaScript

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

เพิ่มค่าตัวแปรเพื่อกำหนดค่าให้กับ Content Group

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

เปิดกลับไปที่ tag Configuration ในช่อง Field to Set ใส่ Field Name เป็น content_group จากนั้นก็กดเลือก Variable หรือตัวแปร

เลือก Variable
เลือก Content Group Variable ที่เราเพิ่งสร้างเสร็จไปก่อนหน้านี้
กดบันทึก เพื่อเลือกช่อง Value เป็น ตัวแปรที่เราเพิ่งสร้างเสร็จ

เมื่อมาถึงขั้นตอนนี้ และเราทำการปรับใช้แท็ก ก็จะเป็นการ Trigger การทำงานไปทุก ๆ หน้าที่มีการติดแท็ก (All Page)

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

เพิ่ม content_group เข้าไปใน Custom Dimensions ของ GA4

ใน Google Analytic ที่เมนู Config > Custom definitions ให้เราทำการกด Create custom dimension แล้ว

กำหนดค่าดังนี้

* หากเราไม่เพิ่ม Custom Dimension ตามขั้นตอนนี้ใน GA4 เมื่อเราทำการ Debug หรือตรวจสอบดู จะเห็นเหมือนว่ามีข้อมูล content_group วิ่งเข้า GA4 ปกติ แต่มันจะไม่เก็บย้อนหลังให้เรา ดูแบบเรียลไทม์หรือ Debug อาจจะเห็น แต่จะไม่เห็นใน Report นั่นเอง

  • Dimension name : content_group
  • Scope : Event
  • Description : ใส่คำอธิบาย เพื่อให้เราเข้าใจภายหลัง (ใส่อะไรก็ได้ หรือไม่ใส่ก็ได้)
  • Event parameter : content_group
Add Custom dimension in GA4

ตรวจสอบ Content Group ใน GA4

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

ก่อนที่จะเปิด DebugView เราอาจจะต้องเปิด Preview Mode ค้างเอาไว้ใน GTM (ขั้นตอนตอนที่เราตรวจสอบค่าตัวแปร ให้เปิดหน้าต่างเว็บไซต์หน้านั้นไว้ แล้วลองคลิกเปิดหน้าเว็บเพื่อให้เกิด Event ส่งเข้าไป GA4)

  • ไปที่เมนู Config > DebugView
  • ตรวจสอบว่ามี Debug Device แสดงอยู่ถูกต้องหรือไม่
  • รอให้มี Event เกิดขึ้น จากนั้นคลิกเลือกที่ Event ส่งเข้ามา > กดเข้าไปเพื่อดู Parameter
  • ตรวจสอบค่า Parameter
เปิด DebugView เพื่อตรวจสอบ Content Group

หลังจากที่ติดตั้ง ตั้งค่าทุกอย่างเสร็จเรียบร้อยหมดแล้ว ผ่านไป 24 ชั่วโมงเราจะเริ่มเห็นข้อมูลวิ่งเข้ามาแสดงใน Report ของเราเรียบร้อยแล้วครับ

ผลลัพท์ Content Group หลังผ่านไป 24 ชั่วโมง

ข้อจำกัดของ Content Group ใน GA4

จากการหาข้อมูลและการทดลองทำ Content Group ใน GA4 ผมได้ทำการรวบรวมข้อจำกัดของการทำ Content Group ไว้ดังนี้

  • Content Group GA4 เปิดการใช้งานใน Report ได้เฉพาะการส่ง Parameter เชื่อมโยงไปกับ Event page_view เท่านั้น หากใส่ไปกับ Event อื่น ๆ ก็ได้เหมือนกันแต่ใน Report จะยังเหลือค่า (not set) เสมอ เพราะเวลาที่ระบบ summary ช่อง Content Group ในรีพอร์ต จะไปดึงค่ามาจาก Event page_view พอเราไปเชื่อมกับ Event อื่น ช่องนี้ก็จะกลายเป็น not set แทน
  • Content Group ใน GA4 มีได้ไม่จำกัด เราจะเพิ่มไปกี่ Group ก็ได้ (แต่ปกติก็มักจะแบ่งกันไม่เยอะอยู่แล้ว คงไม่แยกเป็นพันเป็นหมื่น อย่างมากก็หลักร้อย)
  • จากข้อมูลการค้นหาและทดลอง ใน GA เวอร์ชันเดิมนั้นสามารถทำเป็น Content Group ย่อย ๆ ได้ ผ่านการเซ็ตค่า content_group_2 หรือ content_group2 ถึงแม้เราจะลองส่งค่าเพิ่มแบบนี้ ก็จะไม่พบ Sub Content Group ใน GA4 สรุปคือ ไม่สามารถทำ Sub Content Group ได้แบบ GA-UA
  • จากข้อมูลการค้นหา Parameter content_group สามารถใช้งานได้ใน BigQuery

หากต้องการมี Content Group ย่อย ๆ หรือ Sub Content Group ทำไงดี ?

จากการทดลอง ผมคิดว่าหากเราต้องการทำ Sub Content Group แนะนำให้เราทำวิธีการคล้าย ๆ กับที่เราทำ Content Group นี่แหละ คือทำการเพิ่ม Custom Dimension ขึ้นมา สำหรับเก็บข้อมูลเหมือนกัน ตั้งชื่อเป็น sub_content_group หรืออะไรก็ว่าไป แล้วก็ส่งผ่านพารามิเตอร์ของ Event page_view เหมือนกัน
ซึ่งข้อแตกต่างก็คือ แค่ไม่สามารถกดดูได้เลยตรง ๆ ผ่าน Content Group แต่เราสามารถทำ Custom Report หรือสามารถเห็นข้อมูลได้เมื่อใช้งานใน Google Data Studio

การเพิ่มความสามารถใน Google Analytic นั้นยังมีอีกเยอะมาก ผมเองก็เพิ่มเริ่ม หากต้องการทำการ Custom Site Search สามารถอ่านเพิ่มเติมได้ที่นี่