ลูกค้ากดสั่งซื้อใน LINE แล้วข้อมูลหาย: ปัญหา Session ขาดตอนใน In-App Browser และวิธีแก้ด้วย Deep Link
สรุปสั้น ๆ
In-App Browser ของ LINE ไม่ใช่เบราว์เซอร์เต็มรูปแบบ มันตัดขาด session และคุกกี้บางส่วนที่แอปภายนอกคาดหวังไว้ deep link ที่ตั้งค่าถูกวิธีคือทางที่ทำให้ข้อมูลสำคัญอย่าง Click ID เดินทางข้ามจาก LINE ไปยังเว็บชำระเงินได้โดยไม่หลุดหาย
ร้านขายคอร์สเรียนออนไลน์แห่งหนึ่งพบว่ายอดคลิกลิงก์ชำระเงินจากในแชท LINE สูงมาก แต่ยอดชำระเงินจริงกลับต่ำกว่าที่ควรจะเป็นเกือบครึ่ง ทั้งที่ราคาคอร์สไม่ได้แพงและลูกค้าก็ยืนยันความสนใจในแชทชัดเจนแล้ว
พอไล่ดูพฤติกรรมจริง พบว่าปัญหาไม่ได้อยู่ที่ราคาหรือความสนใจ แต่อยู่ที่ตัว In-App Browser (IAB) ของ LINE เอง ซึ่งเป็นเบราว์เซอร์ขนาดเล็กที่ฝังอยู่ในแอป LINE เวลาลูกค้ากดลิงก์จากในแชท มันจะเปิดหน้าเว็บภายในกรอบของแอป LINE แทนที่จะเปิดเบราว์เซอร์เต็มรูปแบบอย่าง Chrome หรือ Safari ซึ่ง IAB นี้มีข้อจำกัดหลายอย่างที่ทำให้ระบบชำระเงินหรือระบบ tracking บางตัวทำงานไม่สมบูรณ์
บทความนี้จะอธิบายว่า session ขาดตอนแบบนี้เกิดขึ้นตรงไหน แล้ว deep link ที่ตั้งค่าถูกวิธีช่วยแก้ปัญหานี้ได้อย่างไร
ทำไม In-App Browser ถึงทำให้ session ขาด
IAB ของ LINE ถูกออกแบบมาให้เบาและเร็ว เหมาะกับการเปิดดูหน้าเว็บสั้น ๆ ไม่ได้ออกแบบมาให้รองรับระบบที่ซับซ้อนอย่างเกตเวย์ชำระเงินหรือสคริปต์ tracking หลายชั้น มันมีการจัดการคุกกี้และ local storage ที่ต่างจากเบราว์เซอร์เต็มรูปแบบ บางกรณีคุกกี้ที่เว็บชำระเงินตั้งไว้ก่อนหน้าจะไม่ถูกจดจำ หรือถูกล้างทิ้งเร็วกว่าปกติ
อีกปัญหาที่พบบ่อยคือ IAB บางเวอร์ชันบล็อกการ redirect กลับของธนาคารหรือ payment gateway บางเจ้า ทำให้หลังจากลูกค้าจ่ายเงินเสร็จ หน้าเว็บไม่สามารถ redirect กลับมายืนยันได้ตามที่ตั้งไว้ ผลคือระบบไม่รู้ว่าการชำระเงินสำเร็จ ทั้งที่เงินเข้าบัญชีจริงแล้ว
Deep Link เข้ามาช่วยตรงไหน
Deep link คือลิงก์ที่ถูกออกแบบมาให้เปิดแอปที่กำหนดโดยตรง แทนที่จะเปิดผ่านเบราว์เซอร์ในตัว ในบริบทนี้ เทคนิคที่ใช้บ่อยคือการสร้างลิงก์ที่บังคับให้ระบบเปิดผ่านเบราว์เซอร์ภายนอก (external browser) ของเครื่อง แทนที่จะปล่อยให้ IAB เปิดเอง เพราะเบราว์เซอร์ภายนอกรองรับคุกกี้และ redirect ได้เต็มรูปแบบกว่ามาก
หลักการคือ แทนที่จะให้ปุ่มในแชทลิงก์ตรงไปหน้าชำระเงินเลย ให้ลิงก์นั้นผ่านหน้ากลางเล็ก ๆ ก่อน (landing bounce page) ที่มีหน้าที่ตรวจจับว่าเปิดจาก IAB หรือไม่ ถ้าใช่ ให้เด้งเปิดเบราว์เซอร์ภายนอกโดยอัตโนมัติพร้อมแนบ Click ID และพารามิเตอร์สำคัญทั้งหมดต่อท้าย URL ไปด้วย
วิธีตั้งค่าแบบคร่าว ๆ
- สร้างหน้ากลาง (bounce page) เล็ก ๆ ที่โฮสต์บนโดเมนของธุรกิจเอง มีหน้าที่แค่ตรวจจับ user agent ว่าเป็น LINE IAB หรือไม่
- ถ้าตรวจพบว่าเปิดจาก IAB ให้ใช้สคริปต์เด้งเปิดผ่านเบราว์เซอร์ภายนอก เช่นผ่าน scheme พิเศษที่ระบบปฏิบัติการรองรับ
- แนบ Click ID, UTM, และรหัสอ้างอิงลูกค้าทั้งหมดต่อท้าย URL ก่อนเด้งออกไป เพื่อไม่ให้ข้อมูลเหล่านี้หายระหว่างการสลับเบราว์เซอร์
- ที่หน้าชำระเงินปลายทาง ตั้งให้ดึงค่าพารามิเตอร์เหล่านี้มาบันทึกทันทีที่โหลดหน้า ก่อนที่ผู้ใช้จะเริ่มกรอกข้อมูลชำระเงิน เผื่อกรณีที่ปิดหน้าไปกลางคันโดยไม่จ่ายเงินสำเร็จ
- ทดสอบบนอุปกรณ์จริงทั้ง iOS และ Android เพราะพฤติกรรมการเด้งเบราว์เซอร์ของสองระบบปฏิบัติการนี้ต่างกัน บางเวอร์ชันของ iOS เข้มงวดกว่า Android มาก
กรณีที่อาจไม่จำเป็นต้องทำถึงขั้นนี้
ถ้าธุรกิจปิดการขายจบในแชทเลย ไม่มีการส่งลิงก์ออกไปหน้าชำระเงินภายนอก (เช่นรับโอนแล้วแจ้งสลิปในแชท) ปัญหา session ขาดตอนแบบนี้จะไม่ค่อยเกิดขึ้น เพราะไม่มีการสลับเบราว์เซอร์เลย ควรประเมินก่อนว่าธุรกิจตัวเองมีจุดที่ต้องส่งลิงก์ออกนอกแชทจริงหรือไม่ ก่อนลงทุนเวลาตั้งระบบนี้
แต่ถ้าธุรกิจมีระบบชำระเงินออนไลน์ผ่านลิงก์ หรือใช้ ฟอร์มเก็บข้อมูลก่อนเข้าแชท ที่ต้องเปิดนอกแอป LINE เรื่องนี้คุ้มค่าที่จะทำ เพราะกระทบยอด Conversion ที่นับได้โดยตรง
สรุป
ปัญหา session ขาดตอนใน In-App Browser เป็นเรื่องที่ธุรกิจส่วนใหญ่ไม่รู้ตัวจนกว่าจะมาไล่เทียบยอดเงินจริงกับยอดที่ระบบรายงาน เพราะมันไม่ได้ทำให้เกิด error ที่มองเห็นชัด แค่ทำให้ตัวเลขเงียบ ๆ หายไปทีละนิด
ถ้าธุรกิจมีจุดที่ต้องส่งลิงก์ออกจากแชทไปหน้าชำระเงินภายนอกเป็นประจำ การลงทุนเวลาทำหน้ากลางตรวจจับและเด้งเบราว์เซอร์นี้ คุ้มกว่าที่คิด เพราะมันแก้ปัญหาที่ต้นตอ ไม่ใช่แค่ปะรอยรั่วทีละจุด
- In-App Browser ของ LINE มีข้อจำกัดเรื่องคุกกี้และการ redirect ที่ต่างจากเบราว์เซอร์เต็มรูปแบบ
- หน้ากลางที่ตรวจจับและเด้งเปิดเบราว์เซอร์ภายนอกคือทางแก้ที่ตรงจุดที่สุด
- ควรทดสอบแยก iOS และ Android เพราะพฤติกรรมการเด้งเบราว์เซอร์ต่างกัน
คำถามที่พบบ่อย
ปัญหานี้เกิดกับ Android หรือ iOS มากกว่ากัน
โดยรวมพบทั้งสองระบบ แต่ iOS มักเข้มงวดเรื่องคุกกี้และการเด้งเบราว์เซอร์มากกว่า Android เล็กน้อย ควรทดสอบแยกทั้งสองระบบก่อนเปิดใช้งานจริง
ทำ deep link แล้วต้องแก้ไฟล์เว็บชำระเงินเดิมด้วยไหม
ส่วนใหญ่ไม่ต้องแก้เว็บชำระเงินเดิมทั้งหมด แค่เพิ่มหน้ากลางสำหรับตรวจจับและเด้งเบราว์เซอร์ก่อนเข้าสู่หน้าเดิม และปรับหน้าเดิมให้อ่านค่าพารามิเตอร์ที่แนบมาเพิ่มเติม
ถ้าไม่แก้ปัญหานี้ จะเสียหายมากแค่ไหน
ขึ้นอยู่กับสัดส่วนลูกค้าที่ชำระผ่านลิงก์ภายนอก บางธุรกิจพบว่า Conversion ที่ไม่ถูกนับอาจสูงถึง 20-40% ของยอดจ่ายจริง เพราะ redirect กลับไม่สำเร็จ
มีวิธีตรวจสอบง่าย ๆ ไหมว่าธุรกิจเรามีปัญหานี้อยู่หรือเปล่า
ลองเทียบยอดเงินที่เข้าบัญชีจริงในเดือนหนึ่ง กับยอด Conversion ที่ระบบ tracking รายงาน ถ้าต่างกันมากผิดปกติโดยเฉพาะช่วงที่ลูกค้าชำระผ่านลิงก์จากในแชท ควรสงสัยเรื่องนี้ไว้ก่อน
deep link นี้ใช้ได้กับแพลตฟอร์มแชทอื่นนอกจาก LINE ไหม
หลักการเดียวกันใช้ได้กับแอปแชทอื่นที่มี in-app browser เช่นเดียวกัน แต่รายละเอียดการตรวจจับ user agent และวิธีเด้งเบราว์เซอร์อาจต่างกันไปตามแต่ละแพลตฟอร์ม
ต้องทำร่วมกับ UID mapping ด้วยไหม
แนะนำให้ทำร่วมกัน เพราะ deep link ช่วยรักษา Click ID ให้รอดจากการเปิดผ่านเบราว์เซอร์ ส่วนการผูกกับ LINE UID ช่วยยืนยันว่าคนที่จ่ายเงินคือคนเดียวกับที่คุยในแชท ทั้งสองอย่างเสริมกัน ไม่ใช่ทำแทนกันได้
บทความที่เกี่ยวข้อง


