# Shopify + Brew

เริ่มระบบอัตโนมัติของ Brew จากเหตุการณ์ลูกค้า คำสั่งซื้อ การชำระเงิน และการจัดส่งใน Shopify ขับเคลื่อนโฟลว์ต้อนรับ ใบเสร็จ การชำระเงินที่ถูกทิ้ง และการแจ้งจัดส่ง

URL หลัก: https://brew.new/th/browse/integrations/shopify

- ทิศทาง: ข้อมูลขาเข้า
- การเชื่อมต่อ: คีย์ลับเว็บฮุก
- ทริกเกอร์จากเหตุการณ์อีคอมเมิร์ซ

## ความสามารถที่ใช้ได้แล้ว

- **ทริกเกอร์จากเหตุการณ์**: เริ่มระบบอัตโนมัติของ Brew จากเหตุการณ์ลูกค้า คำสั่งซื้อ การชำระเงิน และการจัดส่งใน Shopify ขับเคลื่อนโฟลว์ต้อนรับ ใบเสร็จ การชำระเงินที่ถูกทิ้ง และการแจ้งจัดส่ง

## เปลี่ยนเหตุการณ์ของร้านค้าให้เป็นอีเมลที่มีประโยชน์

เชื่อมต่อ Shopify เพื่อเริ่มส่งอีเมลที่ตรงกับแบรนด์เมื่อลูกค้าสมัครใช้งาน คำสั่งซื้อได้รับการชำระเงิน มีการสร้างเซสชันชำระเงิน หรือมีการจัดส่งสินค้า Brew รองรับหัวข้อเว็บฮุกของ Shopify 13 หัวข้อ ครอบคลุมลูกค้า คำสั่งซื้อ เซสชันชำระเงิน และการจัดส่ง

การตั้งค่าใช้เว็บฮุกที่คุณสร้างเองใน Shopify Admin โดยไม่ต้องใช้แอป Shopify, client ID หรือ OAuth ทั้งนี้ Shopify ยังคงดูแลคำสั่งซื้อ การชำระเงิน และการจัดส่ง ส่วน Brew สร้างและส่งอีเมล


## สิ่งที่คุณสร้างได้

- อีเมลต้อนรับลูกค้า: customers/create เกิดขึ้นเมื่อมีการสร้างข้อมูลลูกค้าใน Shopify
- อีเมลยืนยันคำสั่งซื้อและใบเสร็จ: orders/create เกิดขึ้นเมื่อมีการสั่งซื้อ และ orders/paid เกิดขึ้นเมื่อเรียกเก็บเงินสำเร็จ ทั้งสองเหตุการณ์มี orderNumber, totalPrice, currency และ financialStatus ให้เลือกใช้เพียงเหตุการณ์เดียวต่ออีเมลหนึ่งฉบับเพื่อไม่ให้ส่งซ้ำ
- อีเมลแจ้งการยกเลิกคำสั่งซื้อ: orders/cancelled เกิดขึ้นเมื่อคำสั่งซื้อถูกยกเลิก และมีหมายเลขคำสั่งซื้อกับสถานะการชำระเงิน
- อีเมลแจ้งการจัดส่ง: fulfillments/create มี trackingNumber และ trackingUrl เมื่อการจัดส่งนั้นมีข้อมูลเหล่านี้ ส่วน orders/fulfilled ก็เกิดขึ้นเมื่อคำสั่งซื้อถูกจัดส่งเช่นกัน แต่ไม่มีฟิลด์สำหรับติดตามพัสดุ จึงควรเลือกทริกเกอร์เพียงตัวเดียวต่ออีเมลแจ้งการจัดส่งหนึ่งฉบับ
- อีเมลติดตามสถานะการจัดส่ง: fulfillments/update เกิดขึ้นเมื่อการจัดส่งมีการเปลี่ยนแปลง ส่วน fulfillmentStatus คือสถานะการดำเนินการจัดส่ง เช่น pending, success หรือ failure ไม่ใช่การยืนยันว่าสินค้าถึงผู้รับแล้ว หากต้องการส่งอีเมลขอบคุณหรือขอรีวิวหลังสินค้าถึงมือลูกค้า ให้ส่งเหตุการณ์ที่กำหนดเองของ Brew หลังจากแอปพลิเคชันของคุณยืนยันว่าสินค้าถึงแล้วเท่านั้น
- อีเมลเตือนให้ชำระเงินต่อ: checkouts/create เกิดขึ้นเมื่อมีการสร้างเซสชันชำระเงิน และอาจมี abandonedCheckoutUrl ซึ่งเป็นลิงก์สำหรับกลับไปชำระเงินต่อ
- ประสานกับการแจ้งเตือนลูกค้าของ Shopify เพื่อไม่ให้ลูกค้าได้รับข้อความเดียวกันจากทั้งสองระบบ

## อีเมลเตือนให้ชำระเงินต่อต้องตรวจสอบสถานะ

checkouts/create เกิดขึ้นเมื่อมีการสร้างเซสชันชำระเงิน ไม่ใช่เมื่อเซสชันถูกทิ้ง โฟลว์อีเมลเตือนจะเริ่มจากเหตุการณ์นี้แล้วรอ และการสั่งซื้อจะไม่หยุดรอบการทำงานที่เริ่มไปแล้ว

หลังขั้นตอน “รอ” เงื่อนไขจะอ่านค่าปัจจุบันของฟิลด์ผู้ติดต่อ เช่น shopify_last_order_status และ shopify_last_order_at ซึ่งบอกถึงคำสั่งซื้อล่าสุดที่ Brew เห็น ไม่ใช่เซสชันชำระเงินนี้โดยเฉพาะ จึงพิสูจน์ไม่ได้ว่าเซสชันชำระเงินนี้กลายเป็นคำสั่งซื้อแล้ว

checkouts/update เกิดขึ้นทุกครั้งที่เซสชันชำระเงินเปลี่ยนแปลง ไม่ใช่หลังช่วงเวลาที่กำหนด จึงใช้เป็นอีเมลเตือนครั้งที่สองตามเวลาด้วยตัวเองไม่ได้

เซสชันชำระเงินที่ไม่มีที่อยู่อีเมลจะไม่เริ่มระบบอัตโนมัติ เว้นแต่ Brew เคยเห็นอีเมลของ ID ลูกค้า Shopify เดียวกันมาก่อน ก่อนเผยแพร่ ให้ทดสอบทั้งเซสชันชำระเงินที่กลายเป็นคำสั่งซื้อและที่ไม่ได้กลายเป็นคำสั่งซื้อ


## ตั้งค่า Shopify ใน Brew

- เปิดหน้า “การเชื่อมต่อ” เลือก Shopify แล้วเลือก “สร้าง URL เว็บฮุก”
- ใส่โดเมน myshopify.com ของคุณ เช่น acme.myshopify.com ไม่ใช่โดเมนหน้าร้านที่กำหนดเอง Brew จะตรวจสอบโดเมนนี้กับเฮดเดอร์ X-Shopify-Shop-Domain ของเว็บฮุกทุกรายการ
- ใน Shopify Admin ให้เปิด Settings > Notifications แล้วเลื่อนลงไปที่ Webhooks ทั้งนี้ Shopify จะส่งหัวข้อหนึ่ง ๆ ไปยังเว็บฮุกที่สร้างไว้สำหรับหัวข้อนั้นเท่านั้น จึงต้องสร้างเว็บฮุกหนึ่งรายการต่อเหตุการณ์ที่คุณจะใช้ ตั้ง Format เป็น JSON วาง URL ของ Brew แล้วเลือกเวอร์ชัน API ล่าสุด
- คัดลอกคีย์ลับสำหรับลงนามที่ด้านล่างของส่วน Webhooks คีย์ลับเดียวกันนี้ใช้ลงนามเว็บฮุกทุกรายการของร้าน วางลงใน Brew แล้วเลือก “เชื่อมต่อ”
- เปิดเมนูของเว็บฮุกแต่ละรายการที่สร้างไว้ แล้วเลือก “Send test” การทดสอบครั้งแรกจะเปลี่ยนสถานะใน Brew จาก “รอเหตุการณ์ทดสอบ” เป็น “เชื่อมต่อแล้ว” และการทดสอบแต่ละครั้งจะทำเครื่องหมายว่าได้รับเหตุการณ์นั้นแล้ว การทดสอบใช้ยืนยันเว็บฮุกเท่านั้น โดย Brew จะไม่เพิ่มผู้ติดต่อและไม่เริ่มระบบอัตโนมัติ
- เมื่อเลือก “เชื่อมต่อ” Brew จะสร้างทริกเกอร์ให้ครบทั้ง 13 หัวข้อ โดยไม่มีสวิตช์เปิดหรือปิดเหตุการณ์ แต่ทริกเกอร์ของหัวข้อที่ไม่มีเว็บฮุกใน Shopify จะไม่ทำงานเลย
- สร้างระบบอัตโนมัติ เลือกเหตุการณ์ Shopify ที่ใช้ แล้วส่งทดสอบขณะที่ยังเป็น “ฉบับร่าง” เฉพาะระบบอัตโนมัติที่ “ทำงานอยู่” เท่านั้นที่จะทำงานเมื่อได้รับเหตุการณ์ที่ตรงกัน

## เหตุการณ์ Shopify ที่รองรับ

Brew รองรับหัวข้อเว็บฮุก 13 หัวข้อต่อไปนี้:

- customers/create
- customers/update
- customers/delete
- customers/enable
- customers/disable
- orders/create
- orders/paid
- orders/cancelled
- orders/fulfilled
- checkouts/create
- checkouts/update
- fulfillments/create
- fulfillments/update

## การซิงค์ผู้ติดต่อและการปรับเนื้อหาเฉพาะบุคคล

เหตุการณ์ที่ยืนยันแล้วแต่ละรายการซึ่งมีที่อยู่อีเมลจริงจะสร้างหรืออัปเดตผู้ติดต่อใน Brew โดยจับคู่ตามอีเมล ไม่ว่าจะมีระบบอัตโนมัติใช้เหตุการณ์นั้นหรือไม่ก็ตาม หากมีข้อมูล Brew จะบันทึกชื่อ-นามสกุล, shopify_customer_id และ shopify_shop_domain ด้วย

เหตุการณ์คำสั่งซื้อจะอัปเดต shopify_last_order_number, shopify_last_order_total, shopify_last_order_currency และ shopify_last_order_at โดย orders/create, orders/paid และ orders/cancelled จะบันทึก shopify_last_order_status ด้วย ส่วน orders/fulfilled จะบันทึก shopify_last_fulfillment_status เหตุการณ์การจัดส่งจะอัปเดต shopify_last_tracking_number, shopify_last_tracking_url และ shopify_last_fulfillment_status และเหตุการณ์เซสชันชำระเงินจะอัปเดต shopify_last_checkout_url

customers/delete, customers/disable และ customers/enable จะตั้งค่า shopify_account_status เป็น deleted, disabled หรือ active ตามลำดับ โดย Brew จะไม่ลบผู้ติดต่อหรือเปลี่ยนสถานะเป็นยกเลิกการรับข่าวสาร จึงควรกรองตามฟิลด์นี้ในกรณีที่จำเป็น

ใช้สคีมาเพย์โหลดที่ประกาศไว้ของเหตุการณ์ที่เลือกสำหรับแท็กตัวแปร ทุกเหตุการณ์มี email, firstName, lastName, currency, shopDomain และ createdAt หากมีข้อมูลเหล่านี้ เหตุการณ์คำสั่งซื้อจะเพิ่ม orderNumber, totalPrice, financialStatus และ fulfillmentStatus เหตุการณ์เซสชันชำระเงินจะเพิ่ม totalPrice และ abandonedCheckoutUrl ส่วนเหตุการณ์การจัดส่งจะเพิ่ม trackingNumber, trackingUrl และ fulfillmentStatus

totalPrice คือยอดเงินที่ Shopify ส่งมาในสกุลเงินของคำสั่งซื้อ เช่น 49.95 ไม่ใช่หน่วยเซนต์ เพย์โหลดไม่มีรายการสินค้าในคำสั่งซื้อ และ ID ของออบเจ็กต์ Shopify ไม่ใช่แท็กตัวแปร

เว็บฮุกลูกค้าของ Shopify ไม่ได้ส่งข้อมูลความยินยอมรับการตลาดมาอีกต่อไป Brew จึงไม่ได้รับข้อมูลนี้ ให้บันทึกความยินยอมแยกต่างหาก และตรวจสอบก่อนส่งอีเมลโปรโมชัน


## Brew รองรับเหตุการณ์การคืนเงินและตะกร้าสินค้าไหม?

ไม่รองรับ เพราะ Shopify ไม่มีหัวข้อ orders/refunded และเว็บฮุกการคืนเงินของ Shopify ไม่มีข้อมูลลูกค้า ส่วน carts/update ก็ไม่มีข้อมูลระบุตัวผู้รับ Brew จึงส่งอีเมลจากเหตุการณ์นี้อย่างปลอดภัยไม่ได้ อย่าเพิ่มเว็บฮุกสำหรับหัวข้อเหล่านี้


## ทำไมมีเหตุการณ์เข้ามาแต่ไม่มีการส่งอีเมล?

การได้รับเหตุการณ์กับการส่งอีเมลเป็นคนละขั้นตอนกัน ตรวจสอบว่าระบบอัตโนมัติที่ตรงกันอยู่ในสถานะ “ทำงานอยู่” จากนั้นดูตัวกรอง ประวัติการทำงาน การเข้าเกณฑ์ของผู้รับ และโดเมนผู้ส่ง เหตุการณ์ที่ส่งด้วย “Send test” จะแสดงเป็นเหตุการณ์ทดสอบและจะไม่เริ่มระบบอัตโนมัติเลย ส่วนเหตุการณ์ที่ไม่มีที่อยู่อีเมลของลูกค้าที่ Brew ไม่รู้จักจะถูกบันทึกว่าระบุผู้รับไม่ได้


## ข้อจำกัดและการแก้ปัญหา

- Brew แก้ไขลูกค้า คำสั่งซื้อ หรือการจัดส่งใน Shopify ไม่ได้
- รหัส 401 พร้อม shop_domain_mismatch หมายความว่าโดเมนที่ใส่ไว้ใน Brew ไม่ตรงกับร้านค้าที่ส่งเว็บฮุก ให้เชื่อมต่ออีกครั้งด้วยโดเมน myshopify.com หลักของร้าน
- หากคุณเปลี่ยนคีย์ลับสำหรับลงนามใหม่ใน Shopify ให้เชื่อมต่ออีกครั้งด้วยค่าใหม่ Brew กำหนดให้คีย์ลับยาวอย่างน้อย 16 อักขระ
- หากทริกเกอร์แสดง “ยังไม่มีเหตุการณ์” ให้สร้างเว็บฮุกใน Shopify สำหรับหัวข้อนั้น แล้วส่งเหตุการณ์ทดสอบจากเว็บฮุกนั้น
- เว็บฮุกคำสั่งซื้ออาจไม่มีชื่อลูกค้า ให้ตั้งค่าสำรองของแท็กตัวแปรสำหรับ firstName เช่น คำทักทายเริ่มต้น
- ตรวจสอบความยินยอมและวัตถุประสงค์ของอีเมลแต่ละฉบับ การซิงค์ลูกค้า Shopify ไม่ได้ทำให้คุณมีสิทธิ์ส่งอีเมลโปรโมชัน

## แหล่งอ้างอิงและคู่มือการตั้งค่า

- [คู่มือการตั้งค่า Shopify](https://docs.brew.new/integrations/import/shopify)
- [สร้างระบบอัตโนมัติ](https://docs.brew.new/create-emails/build-an-automation)
- [แท็กตัวแปร](https://docs.brew.new/create-emails/merge-tags)
- [สิ่งที่คุณส่งได้ด้วย Brew](https://docs.brew.new/get-started/what-you-can-send)
- [เว็บฮุกของ Shopify](https://shopify.dev/docs/apps/build/webhooks)

## ที่เกี่ยวข้อง

- [การเชื่อมต่อทั้งหมด](https://brew.new/th/browse/integrations.md)
- [สมัครใช้งาน](https://brew.new/th/sign-up.md)
- เว็บไซต์: https://brew.new
