LIFF URL / Parameter Lab

ทดสอบพารามิเตอร์ LIFF URL ฟรี

วาง LIFF URL พร้อมพารามิเตอร์ที่ต้องการส่งผ่าน liff.state แล้วเครื่องมือจะแยกโครงสร้าง URL ให้เห็นว่าพารามิเตอร์ตัวไหนถูกเข้ารหัสถูกต้อง และตัวไหนมีความเสี่ยงหายเมื่อ LINE เปิดแอปจริง

  • ใช้ฟรี
  • ไม่ต้องสมัคร
  • ไม่ต้องกรอกอีเมล
  • คำนวณในเบราว์เซอร์
พารามิเตอร์แคมเปญ
ข้อควรระวัง
  • ยังไม่ได้กรอก LIFF ID
  • ยังไม่ได้กรอก URL ปลายทาง (Endpoint URL)
ขั้นที่ 1URL ที่แชร์ (Share URL)
ลิงก์ที่ใส่ใน Broadcast, Rich Menu หรือปุ่มที่จะให้ผู้ใช้กด
https://liff.line.me/?utm_source=line_broadcast&utm_campaign=aug_promo
ขั้นที่ 2สิ่งที่ browser เห็นตอน redirect
กรอก URL ปลายทางที่ถูกต้องเพื่อดูผลจำลอง
ขั้นที่ 3 — สิ่งที่โค้ดต้องอ่านหลัง liff.init()
liff.init({ liffId: "<LIFF_ID>" }).then(() => {
  const url = new URL(location.href);
  const liffState = url.searchParams.get("liff.state");
  // liff.state (if present) holds the original "?param=value" string —
  // strip the leading "?" before parsing it as a query string.
  const params = new URLSearchParams(
    liffState ? liffState.replace(/^\?/, "") : url.search
  );

  const utmSource = params.get("utm_source");
  // ...read any other campaign parameter the same way
});
พารามิเตอร์ที่ควรอ่านได้: utm_source=line_broadcast, utm_campaign=aug_promo

Last checked: 2026-08 · developers.line.biz — Opening a LIFF app

รู้ว่าพารามิเตอร์รอดหรือไม่แล้ว ที่เหลือคือใช้มันเก็บ Lead

linli อ่านค่าที่ส่งผ่าน LIFF และผูกกับ Lead ที่เพิ่มเพื่อนเข้ามา เพื่อให้รู้ว่าใครมาจากแคมเปญไหนตั้งแต่วินาทีแรกที่เปิดแอป

เครื่องมือนี้ตรวจอะไร

วาง LIFF URL พร้อมพารามิเตอร์ที่ต้องการส่งผ่าน liff.state เครื่องมือจะแยกโครงสร้าง URL ให้เห็นว่าพารามิเตอร์แต่ละตัวถูก Encode ถูกต้องตามที่ LIFF SDK คาดหวังหรือไม่ และมีพารามิเตอร์ตัวไหนที่มีความเสี่ยงถูกตัดทิ้งเมื่อ LINE เปิดแอปในหน้าต่างภายใน

เครื่องมือยังอธิบายพฤติกรรมที่ต่างกันระหว่างการเปิด LIFF ในโหมด Full, Tall และ Compact เพราะบางโหมดมีข้อจำกัดเรื่องการอ่านค่าพารามิเตอร์ที่ต่างจากที่นักพัฒนาคาดไว้ตอนทดสอบในเบราว์เซอร์ปกติ

ทำไมถึงสำคัญ

การส่งพารามิเตอร์ผ่าน LIFF URL เป็นวิธีหลักที่ใช้ผูก Lead กับแคมเปญตอนที่ผู้ใช้เปิดแอปจากภายใน LINE เช่น จากข้อความ Broadcast หรือ Rich Menu ถ้าพารามิเตอร์หายระหว่างทาง ระบบจะไม่รู้ว่าคนที่เปิดแอปมาจากข้อความไหนหรือแคมเปญไหน ทำให้วัดผลของ Broadcast หรือ Rich Menu แต่ละอันไม่ได้

ปัญหาที่พบบ่อยคือนักพัฒนาทดสอบ LIFF URL ในเบราว์เซอร์ทั่วไปแล้วเห็นว่าพารามิเตอร์ทำงานถูกต้อง แต่พอเปิดจริงผ่านแอป LINE บนมือถือ พฤติกรรมการอ่านค่าผ่าน liff.state กลับต่างออกไป เพราะ LIFF SDK มีการจัดการ State เป็นของตัวเอง ไม่ได้อ่าน Query String ตรง ๆ เหมือนเว็บทั่วไป

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

liff.state กับ Query String ปกติต่างกันอย่างไร

liff.state คือกลไกเฉพาะของ LIFF SDK ที่ใช้ส่งพารามิเตอร์เข้าไปในแอปหลังจากผ่านขั้นตอน Login หรือ Redirect ภายในของ LINE ต่างจาก Query String ปกติที่อ่านได้ตรง ๆ จาก URL เพราะ liff.state ต้องอ่านผ่าน LIFF SDK ด้วยฟังก์ชันเฉพาะ ไม่ใช่ window.location โดยตรง

ทดสอบ LIFF URL นอกแอป LINE ได้ผลแม่นแค่ไหน

ใช้ดูโครงสร้างเบื้องต้นได้ แต่ไม่แทนการทดสอบจริงในแอป LINE เพราะพฤติกรรมของ liff.state และการจัดการ Login ทำงานต่างกันระหว่างเบราว์เซอร์ปกติกับ WebView ภายในแอป LINE ควรทดสอบซ้ำในแอปจริงก่อนใช้งานกับแคมเปญจริงเสมอ

พารามิเตอร์ที่ส่งผ่าน LIFF ควรมีอะไรบ้าง

อย่างน้อยควรมีตัวระบุแคมเปญหรือแหล่งที่มา เช่น Campaign ID หรือ Broadcast ID เพื่อให้ระบบผูกได้ว่าคนที่เปิดแอปมาจากข้อความหรือปุ่มไหน ถ้ามี Click ID จากต้นทางเดิมด้วยยิ่งช่วยให้ Attribution สมบูรณ์ขึ้น

อ่านต่อ

อยากให้ระบบเก็บและตรวจข้อมูลนี้ให้อัตโนมัติ

linli เก็บ Click ID, Webhook Event และ Journey ของลูกค้าตั้งแต่คลิกโฆษณาจนถึงยอดขายที่ปิดใน LINE ให้อัตโนมัติ ทดลองฟรี 14 วัน ไม่ต้องใช้บัตรเครดิต