← กลับไปหน้าบทความ
ขั้นสูง (MarTech)

คุกกี้ที่เขียนด้วย JavaScript อยู่ได้แค่ 7 วันบน Safari ข้อมูลที่มาจึงหายไปเงียบ ๆ

ทีมบรรณาธิการ linli01 พ.ย. 09:28อัปเดต 01 พ.ย. 09:28อ่าน 2 นาที
คุกกี้ที่เขียนด้วย JavaScript อยู่ได้แค่ 7 วันบน Safari ข้อมูลที่มาจึงหายไปเงียบ ๆ
บทความนี้จัดทำเพื่อความรู้ ชื่อธุรกิจ ตัวเลข หรือบทสนทนาที่ไม่มีแหล่งอ้างอิงกำกับเป็นกรณีตัวอย่างเพื่ออธิบายแนวคิด ดูรายละเอียดที่ นโยบายกองบรรณาธิการ

สรุปสั้น ๆ

Safari จำกัดอายุคุกกี้ที่เขียนด้วย JavaScript เหลือสูงสุด 7 วัน และ 24 ชั่วโมงถ้าผู้ใช้เข้ามาจากลิงก์ที่ต่อท้ายด้วย click id ของโดเมนที่ Safari จัดว่าติดตามข้ามเว็บ ผลคือคนที่กลับมาหลังตัดสินใจนานจะไม่มี gclid หรือ fbclid ติดมาด้วย ยอดไปตกเป็น direct ทางแก้ที่ไม่พึ่งคุกกี้คือบันทึก click id ลงฐานข้อมูลของคุณทันทีที่เห็น แล้วผูกกับ LINE user ID

ลองอ่านแชทนี้ดูครับ ลูกค้าบนไอโฟนทักเข้ามาตอนเช้าวันจันทร์ สัปดาห์ก่อนเธอกดโฆษณาเข้าเว็บแล้วปิดไปโดยไม่ได้ทักใคร ‘สวัสดีค่ะ อาทิตย์ที่แล้วเข้าไปดูเว็บมาแล้ว วันนี้จะสั่งชุดที่ดูไว้ค่ะ’ ลูกค้าคนนี้จ่ายเงินให้คุณ 3,900 บาท ทักมาจากแอดที่คุณจ่ายไปแล้ว แต่ในรายงาน ที่มาของเธอคือ direct

ที่เป็นแบบนี้เพราะคุกกี้ที่เก็บ gclid หรือ fbclid ถูกเขียนด้วย JavaScript และ Safari ตัดอายุของมันเหลือไม่เกิน 7 วัน เมื่อเธอกลับมาในวันที่ 9 ไม่มีอะไรให้อ่านเหลืออยู่แล้ว ที่น่ากังวลกว่าคือ คนที่หายด้วยกลไกนี้ไม่ใช่คนสุ่ม แต่เป็นคนที่ตัดสินใจช้าที่สุด ซึ่งในสินค้าราคาสูงคือกลุ่มที่คุณอยากรู้ที่มามากที่สุด

เพดานที่ Safari วางไว้กับที่เก็บข้อมูลฝั่งเบราว์เซอร์

Intelligent Tracking Prevention หรือ ITP เป็นระบบป้องกันการติดตามของ WebKit ซึ่งเป็นเอนจินของ Safari ตารางนี้สรุปกติกาที่เกี่ยวกับ click id ตามที่ WebKit เคยเผยแพร่ไว้ ตัวเลขและเงื่อนไขอาจถูกปรับ จึงควรทดสอบกับ iOS เวอร์ชันที่ลูกค้าของคุณใช้อยู่จริง

ที่เก็บข้อมูลอายุสูงสุดบน Safariผลต่อ click id
คุกกี้ที่เขียนด้วย JavaScript (document.cookie)7 วัน และ 24 ชั่วโมงถ้ามากับลิงก์ที่ต่อท้ายด้วย click id จากโดเมนที่จัดว่าติดตามข้ามเว็บคุกกี้อย่าง _gcl_aw และ _fbc หมดอายุเร็วกว่าที่ตั้งไว้
คุกกี้ที่เซิร์ฟเวอร์ของเว็บเดียวกันตั้งผ่าน Set-Cookieไม่ถูกลดตามกติกาข้างบน แต่มีข้อยกเว้นเมื่อ IP ของเซิร์ฟเวอร์ไม่ตรงกับเว็บ หรือผ่าน CNAME ไปโดเมนอื่นใช้เก็บ visitor ID ได้ถ้าเซิร์ฟเวอร์อยู่ฝั่งเดียวกับเว็บ
localStorageถูกลบเมื่อไม่มีการโต้ตอบกับเว็บนั้นนาน 7 วันที่ใช้ Safariใช้แทนคุกกี้ไม่ได้ในระยะยาว
ค่าที่บันทึกในฐานข้อมูลของคุณผูกกับ LINE user IDไม่ถูกจำกัดโดย ITPปลอดภัยที่สุด ต้องได้ความยินยอมตาม PDPA

ใครคือคนที่หายจริง และหายตอนไหน

เพดานนี้กระทบเฉพาะตอน ‘อ่านคุกกี้’ เท่านั้น ถ้าลูกค้ากดปุ่มเข้า LINE ในวันเดียวกับที่กดแอด คุณอ่านค่า gclid ได้ครบและบันทึกไว้ได้เลย ปัญหาเกิดเมื่อลูกค้าเห็นแอด เข้าเว็บ ปิดแท็บ แล้วกลับมาวันหลังและกดทักตอนนั้น เพราะตอนนั้นคุกกี้อาจไม่เหลือแล้ว

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

สมมติ 100 คนที่คลิกแอดบน iPhone แล้วปิดการขาย แบ่งตามวันที่ใช้ตัดสินใจ
ปิดภายใน 1 วัน45
ปิดวันที่ 2 ถึง 730
ปิดวันที่ 8 ถึง 3025

อ่านแล้วต้องคิดต่อยังไง

ถ้าคุกกี้เหลือ 24 ชั่วโมง กลุ่มที่ปิดหลังวันแรกทั้งหมด 55 คนจากตัวอย่างอาจหายถ้าพวกเขากดทักตอนกลับมา ถ้าเหลือ 7 วัน คนที่หายคือกลุ่มสุดท้าย 25 คน กลุ่มนี้มักเป็นลูกค้าที่เทียบหลายร้านก่อนโอน และมักซื้อชิ้นที่ราคาสูงกว่า

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

เช็กว่าร้านคุณโดนแค่ไหนด้วยข้อมูลที่มีอยู่

  1. แยกแชทใหม่ทั้งหมดตามเบราว์เซอร์ของหน้า landing ที่เห็นครั้งแรก เช่น Safari กับ Chrome บนแอนดรอยด์ โดยอ่านจาก user agent ที่เก็บไว้
  2. คำนวณจำนวนวันตั้งแต่การเข้าเว็บครั้งแรกจนถึงแชทแรก ถ้าไม่มีการเข้าเว็บครั้งแรกที่บันทึกไว้ ให้ถือว่าข้อมูลในจุดนี้ขาด
  3. เทียบสัดส่วนที่มาแบบ direct หรือไม่ทราบที่มาของ Safari กับของเบราว์เซอร์อื่น ถ้า Safari สูงกว่าชัดเจน และสูงขึ้นตามจำนวนวันที่ห่างจากการเข้าเว็บครั้งแรก นั่นคือลายนิ้วมือของ ITP
  4. ทดสอบคุกกี้บนเครื่องจริง เปิดลิงก์ทดสอบที่ต่อท้ายด้วย click id ปลอมบน iPhone แล้วดูวันหมดอายุของคุกกี้ผ่าน Web Inspector เครื่องมือแนะนำเพิ่มเติมอยู่ในวิธีตรวจ click id ที่หายไป
  5. เบราว์เซอร์อื่นบน iPhone ใช้เอนจินของ Apple ใต้ฝาเหมือนกัน อย่าเหมาว่า Chrome บน iPhone จะต่างจาก Safari ให้ทดสอบแยกต่างหาก

แก้ยังไง เรียงจากถูกและทำเร็วไปหาแพง

  • บันทึก click id ทันทีที่หน้าแรกโหลด ส่งค่าไปเก็บในฐานข้อมูลของคุณพร้อม visitor ID ที่สุ่มขึ้น ไม่ปล่อยให้อยู่แค่ในคุกกี้ ดูวิธีทำในการเก็บ gclid ผ่าน GTM ก่อนเข้า LINE
  • ผูก visitor ID กับ LINE user ID ตอนกดเข้า LINE ผ่านหน้ากลางหรือ LIFF ที่ส่งค่าไปกับ state ตั้งแต่ครั้งแรกที่ลูกค้าติดต่อ จากนั้นจะกลับมาช้าแค่ไหนก็ไม่เกี่ยว เพราะค่าอยู่ในฐานข้อมูลแล้ว เทคนิคอยู่ในการจับคู่ LINE user ID กับ gclid
  • ตั้ง visitor ID ผ่านเซิร์ฟเวอร์ของเว็บเดียวกัน ด้วย Set-Cookie จากเซิร์ฟเวอร์ที่ IP ตรงกับเว็บ จะอยู่ได้นานกว่าคุกกี้จาก JavaScript แต่ต้องตรวจเรื่อง IP ก่อน
  • ส่งยอดกลับแพลตฟอร์มด้วยค่าที่ผูกไว้ ไม่ต้องอ่านคุกกี้อีก ยอดที่ปิดวันที่ 20 ก็ยังย้อนไปหาคลิกที่เกิดวันที่ 1 ได้

สิ่งที่ไม่ช่วย แม้ดูสมเหตุสมผล

การตั้งอายุคุกกี้เป็น 90 หรือ 180 วันในแท็กไม่ช่วยบน Safari เพราะเพดานถูกบังคับที่เบราว์เซอร์ ไม่ว่าคุณจะระบุไว้เท่าไหร่ การย้ายค่าไปเก็บใน localStorage ก็ไม่ช่วยในระยะยาวด้วยเหตุผลเดียวกันในตาราง

ส่วนการรอให้ Chrome ปรับตัวเรื่องคุกกี้ก็ไม่เกี่ยวกับ Safari ลูกค้าไอโฟนของคุณอยู่ภายใต้กฎของ Apple ตั้งแต่วันนี้ ไม่ว่า Google จะตัดสินใจเรื่องคุกกี้ของตัวเองยังไง บริบทเรื่องนั้นอยู่ในChrome เลื่อนเลิกคุกกี้มาหลายรอบ ธุรกิจไทยควรรอไหม

สรุป

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

ก่อนไปปรับอะไรที่หน้าบ้าน ลองนับก่อนว่าแชทของคุณกี่เปอร์เซ็นต์ทักหลังเข้าเว็บครั้งแรกเกินหนึ่งวัน ตัวเลขนั้นบอกขนาดของปัญหาได้ตรงกว่าทฤษฎีไหนทั้งหมด

  • คุกกี้จาก JavaScript บน Safari อยู่ได้สูงสุด 7 วัน และเหลือ 24 ชั่วโมงในกรณีที่มากับลิงก์ที่มี click id
  • คนที่หายคือคนที่กลับมาช้า ซึ่งมักเป็นลูกค้าสินค้าราคาสูง
  • ทางแก้ที่ได้ผลคือบันทึก click id ลงฐานข้อมูลทันทีแล้วผูกกับ LINE user ID
  • การตั้งอายุคุกกี้ให้ยาวในแท็กไม่ช่วยบน Safari

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

ITP กระทบแค่ Safari ใช่ไหม

ITP เป็นของ WebKit ซึ่งเป็นเอนจินของ Safari แต่เบราว์เซอร์อื่นบน iPhone ก็ใช้เอนจินของ Apple เป็นฐานเช่นกัน จึงอาจได้รับข้อจำกัดคล้ายกัน ควรทดสอบแยกตามเบราว์เซอร์ที่ลูกค้าของคุณใช้จริง

ลูกค้าแอนดรอยด์ไม่เจอปัญหานี้ใช่ไหม

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

ถ้าลูกค้ากดทักภายในวันเดียวกับที่กดแอด ต้องกังวลไหม

ไม่ต้อง ถ้าอ่านและบันทึก click id ได้ทันทีในเซสชันนั้น คุกกี้ยังไม่ถูกตัดอายุ ปัญหาเกิดเฉพาะเมื่อลูกค้ากลับมาทักหลังจากเวลาผ่านไปหลายวัน

การเก็บ click id ในฐานข้อมูลต้องขอความยินยอมไหม

ถ้า click id ผูกกับตัวบุคคลที่ระบุตัวได้ เช่น LINE user ID ควรแจ้งวัตถุประสงค์และมีฐานทางกฎหมายตาม PDPA ให้ชัด เรื่องนี้ควรปรึกษาผู้ดูแลด้านกฎหมายหรือ DPO ของคุณก่อนเริ่มเก็บ

ทำไมรายงานของ Meta ยังเห็นคนที่กลับมาช้า ทั้งที่คุกกี้หาย

Meta มีสัญญาณอื่นช่วยจับคู่ เช่นข้อมูลที่ส่งผ่าน Conversions API และข้อมูลของคนที่ล็อกอินอยู่ จึงอาจเห็นบางส่วนที่คุณเองมองไม่เห็นในฝั่งเว็บ แต่ความครบถ้วนของการจับคู่ยังขึ้นกับสิ่งที่คุณส่งไปให้

วัด Conversion LINE ทุกแบรนด์ รวมศูนย์ที่เดียว

องค์กรที่มีหลายแบรนด์ หลายสาขา หลาย LINE OA linli รวม Tracking และส่ง Conversion กลับทุกแพลตฟอร์ม พร้อม Custom Limit เริ่มฟรี 14 วัน

ติดต่อทีม Sales

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

ลิงก์ที่ส่งต่อกันในแชทแล้วพารามิเตอร์หายหมด เพราะเบราว์เซอร์ตัดทิ้งก่อนถึงเว็บ

ลิงก์ที่ส่งต่อกันในแชทแล้วพารามิเตอร์หายหมด เพราะเบราว์เซอร์ตัดทิ้งก่อนถึงเว็บ

Safari ตัด gclid และ fbclid ออกจากลิงก์ที่เปิดผ่าน Mail, Messages และโหมดส่วนตัว ไล่ว่ากระทบใคร ทดสอบกับเครื่องจริงยังไง และเก็บที่มาด้วยวิธีอื่นอย่างไร
Consent Mode แบบ Basic กับ Advanced ต่างกันตรงไหน ร้านไทยควรเลือกแบบไหน

Consent Mode แบบ Basic กับ Advanced ต่างกันตรงไหน ร้านไทยควรเลือกแบบไหน

Basic ไม่ส่งอะไรเลยจนกว่าผู้ใช้จะยินยอม ส่วน Advanced ส่งสัญญาณแบบไม่มีคุกกี้ก่อน บทความนี้ตั้งเกณฑ์เลือกตามปริมาณคลิกและความเสี่ยง PDPA ของร้านไทย
Brand Lift Study คุ้มทำไหม เมื่อยอดจริงไปจบในห้องแชท

Brand Lift Study คุ้มทำไหม เมื่อยอดจริงไปจบในห้องแชท

Brand Lift Study วัดการจำและความคิดผ่านแบบสำรวจ ไม่ได้วัดยอดที่ปิดในแชท บทความนี้ไล่เกณฑ์ว่าเมื่อไหร่คุ้ม ต้องมีตัวอย่างเท่าไหร่ และทางเลือกที่ถูกกว่า