บทความนี้อธิบายวิธีส่งข้อความ LINE จากสถานการณ์ของ Klaviyo Flow เพื่อเชื่อมอีเมลและ LINE ให้เป็นกระแสเดียวกัน โดยจะอธิบายตามลำดับตั้งแต่การตั้งค่า การตรวจสอบก่อนเผยแพร่ ไปจนถึงข้อควรระวังเรื่องจังหวะการส่ง
การเลือกใช้เส้นทางในการส่ง LINE
การส่ง LINE จาก Lumo มีเส้นทาง "การส่งข้อความของ Lumo" "การส่งอัตโนมัติจาก Klaviyo Flow" และ "ข้อความแจ้งเตือน LINE" ซึ่งเลือกใช้ตามวัตถุประสงค์
| สิ่งที่ต้องการทำ | เส้นทางที่ใช้ |
|---|---|
| การส่งจำนวนมากแบบแคมเปญ (ประกาศสินค้าขายดี แจ้งโปรโมชัน เป็นต้น) | การส่งข้อความของ Lumo โดยระบุกลุ่มเป้าหมายที่สร้างจากเงื่อนไขของ Klaviyo (List พร็อพเพอร์ตี การเชื่อม ID) เป็นปลายทางการส่ง |
| การส่งอัตโนมัติที่เริ่มจากสถานการณ์ (ติดตามตะกร้าที่ถูกทิ้ง การ cross-sell หลังการซื้อ เป็นต้น) | Webhook action ใน Klaviyo Flow ซึ่งเป็นวิธีที่อธิบายในบทความนี้ |
| การแจ้งเตือนธุรกรรมที่ต้องการส่งถึงลูกค้าก่อนเพิ่มเพื่อนด้วย (การสั่งซื้อสำเร็จ・การจัดส่งสำเร็จ เป็นต้น) | ข้อความแจ้งเตือน LINE วิธีตั้งค่าอธิบายไว้ที่ ส่งข้อความแจ้งเตือน LINE จาก Klaviyo Flow |
เนื่องจาก Campaign (การส่งจำนวนมาก) ของ Klaviyo ไม่มี Webhook action จึงไม่สามารถ "ส่ง LINE จาก Campaign ของ Klaviyo" ได้ การส่งจำนวนมากจะทำผ่านการส่งข้อความของ Lumo ไม่ว่าจะใช้เส้นทางใด คุณก็สามารถใช้กลุ่มเป้าหมายของ Klaviyo ได้ทันที และผลการส่ง (การส่ง การเปิด การคลิก เป็นต้น) จะถูกบันทึกลงในโปรไฟล์ Klaviyo
สิ่งที่ทำได้กับการส่ง LINE จาก Klaviyo Flow
เมื่อใช้ Webhook action ของ Klaviyo Flow คุณสามารถส่งข้อความ LINE ได้ในจังหวะใดก็ได้ตามต้องการภายในสถานการณ์
ตัวอย่างเช่น คุณสามารถสร้างสถานการณ์ข้ามช่องทางใน Flow เดียวได้ เช่น ส่งคูปองผ่าน LINE ในวันถัดจากอีเมลต้อนรับ เตือนลูกค้าที่ทิ้งสินค้าไว้ในตะกร้าผ่าน LINE หรือส่งคำแนะนำ cross-sell ผ่าน LINE หลังการซื้อไม่กี่วัน เนื้อหาที่สื่อสารทางอีเมลได้ยาก ก็สามารถส่งให้เห็นภาพได้ด้วยข้อความ LINE ที่ใช้รูปภาพและปุ่ม
ลูกค้าที่เป็นปลายทางการส่งต้องเชื่อม ID ระหว่าง LINE กับ Klaviyo เรียบร้อยแล้ว สำหรับลูกค้าที่ยังไม่ได้เชื่อม จะไม่สามารถระบุปลายทางการส่งได้ ข้อความจึงจะไม่ถูกส่งถึง
รับข้อมูลการเชื่อมต่อที่จำเป็นต่อการส่ง
ข้อมูลการเชื่อมต่อทั้งชุดที่ตั้งใน Webhook action ของ Klaviyo รับได้จาก 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」 ในหน้าจอรายละเอียดของข้อความส่งอัตโนมัติ
เปิด 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」 แล้วเลือก LINE Official Account ที่ใช้ส่ง ระบบจะแสดงค่าต่อไปนี้ ใช้งานได้หลังจากการเชื่อมต่อ Klaviyo มีผลแล้ว
| รายการ | คำอธิบาย |
|---|---|
| Destination URL | URL ที่ตั้งเป็นปลายทางของ Webhook action ใน Klaviyo ให้เลือก POST เป็น HTTP method |
| เฮดเดอร์ (Key / Value) | key และคีย์ยืนยันที่ตั้งใน custom header ของ Webhook ใช้เพื่อป้องกันคำขอที่ไม่ถูกต้อง |
| JSON body | เนื้อหาที่ส่งของ Webhook คัดลอกได้ทันทีด้วย 「คัดลอก JSON」 |
เพิ่ม Webhook action ใน Klaviyo Flow
เพิ่ม Webhook action ใน Klaviyo Flow ที่ตำแหน่งที่ต้องการส่งข้อความ LINE
ขั้นตอนการตั้งค่ามีดังนี้
- ใน Klaviyo Flow เพิ่ม action 「Webhook」 ที่ตำแหน่งที่ต้องการส่งข้อความ LINE
- เลือก 「POST」 เป็น method แล้วตั้งค่า 「Destination URL」
- ตั้งค่า Key และ Value ที่จดไว้ใน custom header
- วางเนื้อหาข้อความที่จะส่งลงใน JSON body
วิธีระบุ JSON body โดยละเอียดจะอธิบายในหัวข้อ "ระบุข้อความที่จะส่ง" ต่อจากนี้
ไม่จำเป็นต้องใช้ฟิลเตอร์จำกัดผู้รับเฉพาะลูกค้าที่เชื่อม ID แล้ว
Webhook action จะทำงานกับลูกค้าทุกคนที่มาถึงขั้นตอนนั้นใน Flow แต่ Lumo จะข้ามการส่งให้ลูกค้าที่ยังไม่เชื่อม ID โดยอัตโนมัติ จึงใช้งานได้อย่างปลอดภัยโดยไม่ต้องเพิ่ม profile filter
- ฝั่ง Klaviyo ไม่ได้ตรวจสอบว่าเชื่อม ID แล้วหรือไม่ ดังนั้น Webhook จะทำงานกับทุกคนที่มาถึงขั้นตอนนั้น
- เมื่อ Lumo ได้รับคำขอ จะตรวจสอบผู้รับและไม่ส่งให้ลูกค้าที่ยังไม่เชื่อม ID (และไม่เกิดข้อผิดพลาดด้วย)
- ข้อความจะไม่ถูกส่งถึงลูกค้าที่ยังไม่เชื่อม ID โดยไม่ตั้งใจ
หากต้องการให้จำนวน Sent ของ Klaviyo ใกล้เคียงผู้รับจริง
จำนวน Sent ที่แสดงบน Webhook action ของ Klaviyo คือ "จำนวนครั้งที่ Webhook ทำงาน" ไม่ใช่จำนวนข้อความ LINE ที่ส่งจริง หากต้องการดูรายงานด้วยตัวเลขที่ใกล้เคียงผู้รับจริง ให้เพิ่ม Conditional Split ก่อน Webhook action (เช่น มีการตั้งค่าพร็อพเพอร์ตี้ "LINE User ID") แล้ววาง Webhook action ไว้ฝั่งที่ตรงตามเงื่อนไข
ทั้งนี้ หากใช้ profile filter ของทั้ง Flow จำกัดเฉพาะลูกค้าที่เชื่อม ID แล้ว การส่งอีเมลใน Flow เดียวกันก็จะถูกจำกัดเฉพาะลูกค้าที่เชื่อม ID แล้วด้วย หากต้องการส่งอีเมลให้ทุกคนตามเดิม ให้ใช้ Conditional Split ก่อน Webhook action แทน profile filter ของทั้ง Flow
ระบุข้อความที่จะส่ง
การระบุข้อความที่จะส่งมี 2 วิธี คือ ใช้ข้อความส่งอัตโนมัติของ Lumo และระบุข้อความตัวอักษรโดยตรง
เมื่อต้องการส่งข้อความที่จัดทำอย่างประณีต เช่น การ์ดสินค้าหรือ Rich Message ให้ใช้ข้อความส่งอัตโนมัติ แต่หากเป็นเพียงข้อความสั้น ๆ การระบุข้อความตัวอักษรโดยตรงจะสะดวกกว่า
ใช้ข้อความส่งอัตโนมัติ (แนะนำ)
เมื่อต้องการส่งข้อความ LINE ที่จัดทำอย่างประณีต เช่น การ์ดสินค้าหรือ Rich Message ให้ใช้ข้อความส่งอัตโนมัติของ Lumo
- สร้างข้อความส่งอัตโนมัติใน Lumo (สร้างได้ทันทีจากเทมเพลต)
- ในหน้ารายละเอียดของข้อความส่งอัตโนมัติ ให้เลือก 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」
- ในไดอะล็อกที่แสดงขึ้น เลือก LINE Official Account ที่ใช้ส่ง ระบบจะแสดง Destination URL, เฮดเดอร์ และ JSON body ที่ตั้งใน Webhook action
- คัดลอก JSON body ด้วย 「คัดลอก JSON」 แล้ววางลงในข้อมูลที่ส่งของ Webhook action ใน Klaviyo
JSON body ที่สร้างขึ้นจะมีตัวแปรแทรกค่า {{ person|lookup:'LINE User ID' }} ที่ระบุปลายทางการส่งรวมอยู่แล้ว ไม่จำเป็นต้องแก้ไขด้วยมือ เพียงวางตามที่เป็น ก็จะแทรกปลายทางการส่งที่ถูกต้องให้กับลูกค้าแต่ละคนที่ผ่าน Flow
ส่งข้อความตัวอักษรโดยตรง
หากเพียงต้องการส่งข้อความตัวอักษรสั้น ๆ คุณสามารถระบุข้อความตัวอักษรได้โดยตรงโดยไม่ต้องใช้ข้อความส่งอัตโนมัติ
ลบบรรทัด autoMessageId ออกจาก JSON body ที่รับมาจาก 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」 แล้วระบุข้อความที่ต้องการส่งใน messageText แทน ส่วนตัวแปรแทรกค่าปลายทางการส่ง {{ person|lookup:'LINE User ID' }} ให้คงไว้ตามเดิม
ทั้งนี้ ตัวแปรแทรกค่ารูปแบบ {{ data.ชื่อคีย์ }} ใช้ได้เฉพาะกับข้อความแจ้งเตือน LINE เท่านั้น การส่งข้อความ LINE ทั่วไปที่อธิบายในบทความนี้ใช้ไม่ได้
ใส่สินค้าด้วยการ์ดสินค้า
เมื่อใช้การ์ดสินค้า (ประเภทการ์ด 「สินค้า」 ของข้อความประเภทการ์ด) คุณจะสามารถประกอบข้อความรูปแบบการ์ดที่มีรูปสินค้า ชื่อสินค้า และปุ่มได้โดยอัตโนมัติ
เพิ่มการ์ดสินค้าเป็นข้อความประเภทการ์ดตอนสร้างข้อความส่งอัตโนมัติ วิธีกำหนดสินค้า (แหล่งข้อมูล) แบ่งออกได้เป็น 2 ประเภทใหญ่ ๆ
สินค้าจากทริกเกอร์
เป็นแหล่งข้อมูลที่ประกอบการ์ดจากข้อมูลสินค้าที่อยู่ในเหตุการณ์ (event) ที่เป็นจุดเริ่มต้นของ Flow เลือก 「สินค้าจากทริกเกอร์」 เป็นแหล่งข้อมูลของการ์ดสินค้า แล้วเลือกเทมเพลตที่เหมาะกับการใช้งาน
| เทมเพลต | การใช้งาน |
|---|---|
| 「ติดตามตะกร้าค้าง」 | เตือนสินค้าที่ค้างอยู่ในตะกร้าพร้อมรูปภาพ และสามารถใช้ตัวแปรแทรก URL สำหรับกู้คืนตะกร้าที่ถูกทิ้งได้ |
| การเตือนเรื่องที่ดูแล้ว สินค้าใกล้หมด เป็นต้น | ใน Flow ที่เริ่มจากการดูสินค้าหรือสถานะสินค้าคงคลัง จะประกอบการ์ดของสินค้าที่เป็นเป้าหมาย |
ฟีดเนื้อหา
เป็นแหล่งข้อมูลที่เลือกสินค้าที่ตรงกับเงื่อนไขจากข้อมูลสินค้าของร้านโดยอัตโนมัติ แล้วประกอบการ์ด เลือก 「จากฟีดเนื้อหา (อัตโนมัติ)」 เป็นแหล่งข้อมูลของการ์ดสินค้า แล้วระบุฟีดเนื้อหาที่จะใช้
| ประเภทฟีด | สินค้าที่จัดแสดง |
|---|---|
| 「ขายดี」 | สินค้าที่มียอดขายสูง |
| 「มาใหม่」 | สินค้าที่เพิ่มเข้ามาใหม่ |
| 「ลดราคา」 | สินค้าที่อยู่ในรายการลดราคา |
| 「เลือกเอง」 | สินค้าที่เลือกไว้ (สูงสุด 10 รายการ) |
ข้อมูลสินค้าที่ใช้ในฟีดเนื้อหาจะซิงค์โดยตรงจากร้าน Shopify หากต้องการใช้งาน กรุณาติดตั้งแอป Lumo ทั้งใน Klaviyo และ Shopify
ข้อควรระวังเมื่อใช้ "ขายดี"
ขายดีเลือกสินค้าจากยอดขาย จึงไม่แสดงสินค้าที่ยังไม่มียอดขาย ในร้านที่มีข้อมูลยอดขายน้อย เช่น ช่วงหลังเปิดร้านใหม่ ๆ อาจไม่มีสินค้าให้แสดงและกลายเป็นการแสดงเฉพาะข้อความตัวอักษร ในกรณีนั้นจะแสดงสินค้าสำรองแทน ช่วงหลังเปิดตัว แนะนำให้ใช้ฟีด "มาใหม่" หรือสินค้าสำรอง แล้วค่อยเปลี่ยนไปใช้ "ขายดี" เมื่อมีข้อมูลยอดขายสะสมแล้ว
หัวเรื่อง เนื้อหา ข้อความบนปุ่ม จำนวนสินค้าสูงสุด เป็นต้น สามารถตั้งค่าได้ในทุกแหล่งข้อมูล ข้อความส่งอัตโนมัติที่สร้างขึ้นสามารถนำไปใส่ใน Webhook action ได้ผ่าน 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」
กลไกป้องกันการส่งข้อความเดียวกันซ้ำ
JSON body ที่สร้างจาก 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」 จะมีคีย์ป้องกันการส่งซ้ำ (idempotencyKey) รวมอยู่ด้วย แม้อีเวนต์เดียวกันจะถูกส่งมาซ้ำ ระบบก็จะป้องกันการส่งซ้ำโดยอัตโนมัติ
- Flow ของติดตามตะกร้าที่ถูกทิ้ง การสั่งซื้อสำเร็จ และการจัดส่งสำเร็จ จะตั้งคีย์จากเช็คเอาต์หรือหมายเลขคำสั่งซื้อโดยอัตโนมัติ แม้ Klaviyo จะส่ง Webhook ซ้ำหรือ Flow ทำงานซ้ำซ้อน ลูกค้าคนเดียวกันจะไม่ได้รับข้อความเดียวกัน 2 ครั้งภายใน 24 ชั่วโมง
- Flow ของการเตือนเรื่องที่ดูแล้ว สินค้าใกล้หมด และสินค้ากลับมาในสต็อก จะไม่มีคีย์นี้ เพื่อไม่ให้ขัดขวางการส่งซ้ำที่เป็นเรื่องปกติ เช่น เมื่อลูกค้าคนเดียวกันดูสินค้าเดิมอีกครั้ง
- หากใช้ JSON body ที่ดึงมาก่อนหน้านี้ ให้ดึง JSON ล่าสุดจาก 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」 มาวางใหม่เพื่อให้มีผล
ตรวจสอบการทำงานก่อนเผยแพร่
ก่อนเผยแพร่ Flow ให้ตรวจสอบการตั้งค่าด้วย Payload Preview และการส่งทดสอบ
ขั้นตอนการตรวจสอบมีดังนี้
- ใน Webhook action ของ Klaviyo เปิด 「Preview Webhook」(Payload Preview)แล้วตรวจสอบว่าค่าจริงถูกแทรกลงในแต่ละฟิลด์ เช่น ปลายทางการส่งและข้อมูลสินค้า
- ทำการส่งทดสอบ แล้วตรวจสอบกับเครื่องจริงว่าข้อความถึง LINE ของตนเอง และข้อความรูปแบบการ์ดแสดงผลถูกต้อง
- หากไม่มีปัญหา ให้ตั้งค่า Flow เป็น Live (เผยแพร่)
- หลังบันทึก ให้เปิดหน้าจอ Flow ขึ้นใหม่ แล้วตรวจสอบว่า Webhook action ไม่ได้กลับเป็น Draft หากยังเป็น Draft อยู่ ข้อความจะไม่ถูกส่ง
เกี่ยวกับจังหวะการส่ง
การส่งจาก Klaviyo Flow อาจมีระยะเวลาห่างระหว่างการเกิด event กับการส่งจริง
เนื่องจาก Klaviyo รวมการนำเข้า event และการประมวลผล Flow ไว้ภายใน จึงอาจใช้เวลาตั้งแต่หลายสิบนาทีจนถึงประมาณ 1 ชั่วโมงกว่าที่ Webhook action จะทำงาน นี่เกิดจากกลไกฝั่ง Klaviyo ส่วน Lumo จะส่งไปยัง LINE อย่างรวดเร็วทันทีที่รับคำขอจาก Klaviyo
- การตรวจสอบว่าการตั้งค่าถูกต้องหรือไม่ ให้ทำด้วย Payload Preview และการส่งทดสอบ แทนที่จะรอการส่งจริง
- หากระยะห่างระหว่างการเกิด event กับการนำเข้าสู่ Klaviyo เกิน 6 ชั่วโมงขึ้นไป Flow จะไม่ถูกเริ่มทำงานสำหรับ event นั้น (เป็นข้อกำหนดของ Klaviyo)
ออกคีย์ยืนยันใหม่
ในกรณีที่คีย์ยืนยันอาจรั่วไหล เป็นต้น คุณสามารถออกคีย์ยืนยันใหม่ได้จากส่วน 「เชื่อม ID จาก Flow」 ในหน้าจอตั้งค่าของการเชื่อมต่อ Klaviyo
เลือก 「สร้างคีย์ยืนยันใหม่」 แล้วเลือก 「สร้างใหม่」 ในไดอะล็อกยืนยัน เมื่อออกใหม่แล้ว คีย์ยืนยันเดิมจะใช้งานไม่ได้ทันที ในทุก Webhook ของ Klaviyo Flow ที่ใช้ส่ง LINE และเชื่อม ID กรุณาอัปเดต Value ของ custom header ให้เป็นคีย์ยืนยันใหม่ด้วยทุกครั้ง หากลืมอัปเดต การส่ง LINE จะหยุดด้วยข้อผิดพลาดการยืนยันตัวตน
เมื่อทำไม่สำเร็จ
ปัญหาที่พบบ่อยในการส่งผ่าน Flow และวิธีรับมือมีดังนี้
| อาการ | จุดที่ควรตรวจสอบ |
|---|---|
| ข้อความไม่ถูกส่งถึง | อันดับแรกให้ตรวจสอบว่าลูกค้าปลายทางได้เชื่อม ID ระหว่าง LINE กับ Klaviyo เรียบร้อยแล้วหรือไม่ สำหรับลูกค้าที่ยังไม่ได้เชื่อม จะไม่สามารถระบุปลายทางการส่งได้ |
| ข้อความถึงช้า | ด้วยการประมวลผลฝั่ง Klaviyo อาจใช้เวลาตั้งแต่หลายสิบนาทีจนถึงประมาณ 1 ชั่วโมงกว่าที่ Webhook จะทำงาน ไม่ใช่ความผิดพลาดของ Lumo การตรวจสอบการตั้งค่าให้ทำด้วย Payload Preview และการส่งทดสอบ |
| Flow ไม่ส่ง | ตรวจสอบว่า Webhook action เป็น Live (เผยแพร่) อยู่หรือไม่ บางครั้งอาจกลับเป็น Draft หลังบันทึก |
| เกิดข้อผิดพลาดการยืนยันตัวตน | ตรวจสอบว่า Key และ Value ของ custom header ใน Webhook ตรงกับค่าใน 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」 หรือไม่ หลังออกคีย์ยืนยันใหม่ ค่าฝั่ง Klaviyo Flow ก็ต้องอัปเดตด้วย |
| แทรกปลายทางการส่งไม่ถูกต้อง | ตรวจสอบว่า JSON body มีตัวแปรแทรกค่า {{ person|lookup:'LINE User ID' }} รวมอยู่หรือไม่ เนื้อหาที่สร้างด้วย 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」 จะมีอยู่โดยอัตโนมัติ |
| ตัวแปรแทรกค่าไม่ถูกแทนที่ | ตัวแปรรูปแบบ {{ data.ชื่อคีย์ }} ใช้ได้เฉพาะกับข้อความแจ้งเตือน LINE เท่านั้น การส่งข้อความ LINE ทั่วไปใช้ไม่ได้ |
| ได้รับข้อความเดียวกัน 2 ครั้ง | ตรวจสอบว่า JSON body มีคีย์ป้องกันการส่งซ้ำ (idempotencyKey) อยู่หรือไม่ ดึง JSON ล่าสุดจาก 「ข้อมูลการเชื่อมต่อ Klaviyo Flow」 มาวางใหม่ ระบบจะป้องกันการส่งซ้ำโดยอัตโนมัติ |
| การ์ดสินค้าไม่แสดงสินค้า | ฟีดแบบขายดีจะแสดงเฉพาะสินค้าที่มียอดขายเท่านั้น ในร้านที่มีข้อมูลยอดขายน้อย กรุณาใช้ฟีด "มาใหม่" หรือสินค้าสำรอง ฟีดเนื้อหาต้องมีการซิงค์ข้อมูลสินค้ากับร้าน Shopify (การติดตั้งแอป Lumo ฝั่ง Shopify) |