สารบัญ
- เลือก topic ที่คู่ควรกับการขัดจังหวะคุณ
- ขั้นที่ 1 — สร้างแชนเนล
- ขั้นที่ 2 — เพิ่ม webhook ใน Shopify
- ขั้นที่ 3 — ใส่เฉพาะฟิลด์ที่คุณอ่านจริงลงในเทมเพลต
- ขั้นที่ 4 — แยกเส้นทางตาม topic ด้วยเงื่อนไข
- ปลุกฉันเฉพาะตอนมีออร์เดอร์ใหญ่
- สิ่งที่วิธีนี้ไม่ได้ทำให้
- คำถามที่พบบ่อย
- ต้องใช้แอปของ Shopify ไหม
- ให้คนที่คลังเห็นคำสั่งซื้อโดยไม่เห็นหน้าผู้ดูแล Shopify ได้ไหม
- ควรใส่ชื่อลูกค้าลงในการแจ้งเตือนไหม
- ถ้าถูกขอคืนเงินผ่านบัตร จะได้รับสายไหม
- สรุป
- เนื้อหาที่เกี่ยวข้อง
อีเมลแจ้งคำสั่งซื้อของ Shopify มาถึงตอนที่แอปอีเมลของคุณอยากซิงก์ ตกลงไปในโฟลเดอร์ที่คุณตั้งตัวกรองไว้ และหน้าตาเหมือนกันหมดไม่ว่าคำสั่งซื้อนั้นจะ 400 บาทหรือ 40,000 บาท ถ้าคุณดูแลร้านเอง นี่คือรูปแบบสัญญาณที่ผิด
Webhook แก้เรื่องนี้ได้ Shopify จะ POST ทุกคำสั่งซื้อไปยัง URL ที่คุณเลือก แล้ว Echobell ก็เปลี่ยน POST นั้นให้เป็นการแจ้งเตือนที่คุณเป็นคนกำหนดว่าจะดังแค่ไหน
เลือก topic ที่คู่ควรกับการขัดจังหวะคุณ
Shopify เรียกประเภทเหตุการณ์ของ webhook ว่า topic สี่อันนี้ครอบคลุมร้านที่ดูแลคนเดียวได้เกือบทั้งหมด
| Topic | หมายความว่าอะไร | ความเร่งด่วน |
|---|---|---|
orders/create | มีคนสั่งซื้อ | ปกติ |
orders/paid | ชำระเงินผ่านแล้ว ใช้อันนี้ถ้าคุณสนใจเฉพาะเงินที่เข้ามาจริง | ปกติ |
orders/cancelled | ลูกค้ายกเลิก ควรรู้ก่อนที่คุณจะแพ็กของ | ไวต่อเวลา |
refunds/create | มีการคืนเงินเกิดขึ้น | ไวต่อเวลา |
สมัครรับ orders/create หรือ orders/paid อย่างใดอย่างหนึ่ง อย่าเอาทั้งคู่ นอกจากคุณอยากได้สองการแจ้งเตือนต่อการขายหนึ่งครั้งจริง ๆ สำหรับร้านส่วนใหญ่ orders/paid คืออันที่ตรงไปตรงมากว่า
ขั้นที่ 1 — สร้างแชนเนล
สร้างแชนเนลใน Echobell ตั้งชื่อประมาณ "คำสั่งซื้อ Shopify" คัดลอก URL ของ webhook แล้วเปิด เฉพาะ POST เพราะ Shopify ส่งด้วย POST เสมอ
ถ้าอยากได้แชนเนลแยกที่ดังกว่าสำหรับการยกเลิกและการคืนเงิน ก็สร้างไว้เลยตอนนี้ แล้วตั้งเป็นแบบไวต่อเวลา
ขั้นที่ 2 — เพิ่ม webhook ใน Shopify
ในหน้าผู้ดูแล Shopify ไปที่ การตั้งค่า → การแจ้งเตือน → Webhook → สร้าง webhook เลือก topic ตั้งรูปแบบเป็น JSON แล้ววาง URL แชนเนลของคุณ
Shopify จะส่ง payload ทดสอบมาให้ตอนกดบันทึก ถ้ามือถือสั่น แปลว่าเส้นทางใช้งานได้
ขั้นที่ 3 — ใส่เฉพาะฟิลด์ที่คุณอ่านจริงลงในเทมเพลต
payload คำสั่งซื้อของ Shopify ยาวมาก มีฟิลด์เกินร้อยต่อหนึ่งคำสั่งซื้อ คุณต้องใช้แค่ไม่กี่อัน
หัวเรื่อง
คำสั่งซื้อใหม่ #{{order_number}} · {{total_price}} {{currency}}
เนื้อหา
{{customer.first_name}} {{customer.last_name}}
{{line_items[0].title}}
line_items เป็นอาเรย์ ดังนั้น line_items[0] คือรายการแรก เทมเพลตของ Echobell เข้าถึงด้วยดัชนีได้ แต่ไม่มีการวนซ้ำ คำสั่งซื้อที่มีสามรายการจะแสดงแค่รายการแรกเท่านั้น ถ้าเรื่องนี้สำคัญ ให้ใส่จำนวนไว้ข้าง ๆ
{{line_items[0].title}} · รวม {{line_items.length}} รายการ
ต่างจาก Stripe ตรงที่ Shopify ส่ง total_price มาเป็นสตริงทศนิยม คือ "49.00" ไม่ใช่ 4900 จึงอ่านได้ถูกต้องโดยไม่ต้องคำนวณอะไรเลย
ขั้นที่ 4 — แยกเส้นทางตาม topic ด้วยเงื่อนไข
ถ้าคุณชี้หลาย topic มาที่แชนเนลเดียว Shopify จะบอกในเฮดเดอร์ว่าอันไหนเป็นอันไหน
header["x-shopify-topic"] == "orders/paid"
นี่คือวิธีที่สะอาดที่สุดในการแยกพฤติกรรม โดยไม่ต้องสร้าง webhook แยกให้แต่ละแชนเนลในหน้าผู้ดูแล
ปลุกฉันเฉพาะตอนมีออร์เดอร์ใหญ่
รูปแบบที่เจ้าของร้านส่วนใหญ่ต้องการจริง ๆ คือ คำสั่งซื้อทุกอันเข้าแชนเนลเงียบ ๆ และเฉพาะอันที่เกินเกณฑ์เท่านั้นที่เข้าแชนเนลที่ดัง
สร้างแชนเนลที่สอง ตั้งเป็นไวต่อเวลา ชี้ webhook ของ orders/paid อีกอันมาที่นี่ แล้วใส่เงื่อนไขให้มัน
total_price > 500
จากนี้วันธรรมดาจะเป็นเสียงหึ่ง ๆ อยู่เบื้องหลัง ส่วนคำสั่งซื้อ 900 ยูโรจะเป็นสิ่งที่คุณรู้สึกได้
สิ่งที่วิธีนี้ไม่ได้ทำให้
ไม่มีการตรวจสอบ HMAC Shopify เซ็นทุก webhook ด้วยเฮดเดอร์ X-Shopify-Hmac-Sha256 แต่ Echobell ไม่ตรวจสอบมัน สิ่งเดียวที่กันคนแปลกหน้าไว้ได้จึงคือ URL แชนเนลของคุณ ให้เก็บเป็นความลับ เปิด เฉพาะ POST ไว้ และถ้าการแจ้งเตือนคำสั่งซื้อปลอมจะสร้างความเสียหายจริง ให้เอาเอนด์พอยต์ของคุณเองไปวางไว้ข้างหน้าเพื่อตรวจ HMAC แล้วค่อยให้มันเรียก Echobell
Shopify อาจส่ง webhook เดิมมาสองครั้ง มันจะลองส่งซ้ำเมื่อล้มเหลว และการส่งซ้ำนั้นไม่ได้ตัดตัวซ้ำออก ให้ถือว่าการแจ้งเตือนคือสัญญาณให้ไปดูคำสั่งซื้อ ไม่ใช่ตัวนับจำนวนคำสั่งซื้อ หน้าผู้ดูแล Shopify คือแหล่งข้อมูลที่ถูกต้อง
topic เกี่ยวกับสต็อกจะกลายเป็นเสียงรบกวนอย่างรวดเร็ว inventory_levels/update ทำงานทุกครั้งที่สต็อกขยับ รวมถึงตอนที่คุณแก้เอง ถ้าอยากได้การแจ้งเตือนของใกล้หมด ต้องกรองให้เข้มมาก ไม่งั้นยังไม่ทันเที่ยงคุณก็จะเสียใจ
คำถามที่พบบ่อย
ต้องใช้แอปของ Shopify ไหม
ไม่ต้อง webhook ที่อยู่ใต้ การตั้งค่า → การแจ้งเตือน มีมาให้ในหน้าผู้ดูแลอยู่แล้ว ไม่ต้องมีแอป ไม่ต้องมีบัญชีพาร์ตเนอร์ และไม่ต้องเขียนโค้ด
ให้คนที่คลังเห็นคำสั่งซื้อโดยไม่เห็นหน้าผู้ดูแล Shopify ได้ไหม
ได้ แชร์แชนเนลให้เขา เขาจะได้รับแค่การแจ้งเตือนเท่านั้น ไม่มีสิทธิ์เข้าหน้าผู้ดูแล และไม่เห็นข้อมูลลูกค้าเกินจากที่เทมเพลตของคุณใส่ไว้
ควรใส่ชื่อลูกค้าลงในการแจ้งเตือนไหม
เรื่องนี้คุณตัดสินใจเอง แต่ควรตัดสินใจอย่างตั้งใจ ทุกอย่างที่อยู่ในเทมเพลตจะโผล่บนหน้าจอล็อก โดยทั่วไปเลขที่คำสั่งซื้อกับยอดรวมก็พอให้ตัดสินใจได้แล้ว
ถ้าถูกขอคืนเงินผ่านบัตร จะได้รับสายไหม
ร้านที่ใช้ Shopify Payments จะได้รับข้อพิพาทผ่าน topic disputes/create ให้ชี้อันนั้นไปที่แชนเนลแบบสายเรียกเข้า เพราะมันเป็นเหตุการณ์เดียวในกลุ่มคำสั่งซื้อที่มีกำหนดเวลาติดมาด้วย
สรุป
หนึ่ง webhook หนึ่งเทมเพลต และอีกหนึ่งเงื่อนไขถ้าคุณอยากได้เวอร์ชันที่ดัง ใช้เวลาราวห้านาที และมันมาแทนการนั่งกดรีเฟรชหน้าคำสั่งซื้อ
ดาวน์โหลด Echobell สำหรับ iPhone หรือ รับบน Google Play แล้วลองสั่งซื้อทดสอบสักหนึ่งรายการ ดูว่ามันมาถึงก่อนอีเมลยืนยันเสียอีก