---
title: "แจ้งเตือนคำสั่งซื้อ Shopify ถึงมือถือภายในไม่กี่วินาที"
description: "ส่ง webhook ของ Shopify ตรงเข้ามือถือ: คำสั่งซื้อทั่วไปแจ้งเบา ๆ ตะกร้าใหญ่ดังขึ้นหน่อย ส่วนการคืนเงินหรือยกเลิกให้โทรเข้ามาเมื่อต้องการตัวคุณ"
date: 2026-09-09
author: Nooc
authorAvatarLink: /images/avatars/nooc.webp
authorLink: https://nooc.me
tags:
  - Shopify
  - แจ้งเตือนคำสั่งซื้อ
  - แจ้งเตือนอีคอมเมิร์ซ
  - การแจ้งเตือนผ่าน webhook
  - ธุรกิจขนาดเล็ก
---

# แจ้งเตือนคำสั่งซื้อ 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](https://apps.apple.com/app/apple-store/id6743597198?pt=128151925&ct=blog-shopify-order-notifications-th&mt=8) หรือ [รับบน Google Play](https://play.google.com/store/apps/details?id=one.echobell.echobellandroid) แล้วลองสั่งซื้อทดสอบสักหนึ่งรายการ ดูว่ามันมาถึงก่อนอีเมลยืนยันเสียอีก

---

## เนื้อหาที่เกี่ยวข้อง

- [แจ้งเตือนการชำระเงิน Stripe](/th/blog/stripe-payment-alerts)
- [เอกสารทริกเกอร์ webhook](/th/docs/webhook)
- [คู่มืออ้างอิงระบบเทมเพลต](/th/docs/template)
- [คู่มืออ้างอิงเงื่อนไขแชนเนล](/th/docs/conditions)
- [คู่มือนักพัฒนาเรื่องการแก้อาการล้าจากการแจ้งเตือน](/th/blog/fix-alert-fatigue-developer-guide)
