---
title: "คู่มือการเชื่อมต่อ Shopify | Tajo"
description: "วิธีที่ Tajo เชื่อมต่อร้าน Shopify เข้ากับ Brevo: การซิงค์ผ่าน Webhook ของแอป Shopify กฎการซิงค์ที่เอเจนต์สร้างและคนอนุมัติ และเครื่องมือ Shopify ผ่าน MCP"
url: https://tajo.io/th/docs/ecommerce-platforms/shopify/
markdown: https://tajo.io/th/docs/ecommerce-platforms/shopify.md
lang: th-TH
author: "Set Noa"
author_url: https://tajo.io/th/set-noa/
robots: noindex
---

ขอสิทธิ์ใช้งานล่วงหน้า

กรอกชื่อและที่อยู่อีเมลที่ทำงานของคุณ เราจะส่งลิงก์เพื่อยืนยันคำขอเข้าใช้งาน Tajo ทางอีเมล

# คู่มือการเชื่อมต่อ Shopify

[Set Noa](https://tajo.io/th/set-noa/)

Tajo เชื่อมต่อ Shopify เข้ากับ Brevo ในสองส่วน แอป Tajo Shopify แปลง Webhook ของ Shopify เป็นการเขียนข้อมูลลง Brevo ทันทีที่เข้ามา ส่วนกฎการซิงค์ที่เอเจนต์สร้างและคนอนุมัติ จะย้ายเรคคอร์ดเข้า Brevo ตามกำหนดเวลา หน้านี้อธิบายทั้งสองส่วน แล้วต่อด้วยเครื่องมือ Shopify ที่ Tajo ให้บริการผ่าน MCP

## ข้อกำหนดเบื้องต้น

ก่อนเริ่มการเชื่อมต่อ ตรวจสอบให้แน่ใจว่าคุณมี:

- **ร้าน Shopify** ในแพ็กเกจใดก็ได้ (Basic, Shopify, Advanced หรือ Plus)
- **บัญชี Tajo** (Tajo อยู่ในช่วง early access)
- **บัญชี Brevo** ซึ่งเป็นปลายทางของการซิงค์
- **สิทธิ์ผู้ดูแลระบบ** ในร้าน Shopify ของคุณ

## ขั้นตอนที่ 1: เชื่อมต่อร้าน Shopify ของคุณ

Tajo อยู่ในช่วง early access แอป Shopify ไม่ได้ขึ้นรายการใน Shopify App Store และไม่มีลิงก์ติดตั้งแบบทำเอง [ติดต่อทีม](https://tajo.io/th/contact) เพื่อให้ช่วยตั้งค่า เมื่อพื้นที่ทำงาน Tajo ของคุณพร้อมแล้ว:

1. ใน Tajo เปิด **Connections**
2. กรอกโดเมน myshopify.com ของร้านคุณ แล้วเลือก **Connect Shopify** Shopify จะแสดงขอบเขตสิทธิ์ที่ Tajo ขอ และพาคุณกลับมายัง Tajo เมื่อคุณอนุมัติ
3. ตรวจสอบว่าแต่ละขอบเขตสิทธิ์ใช้ทำอะไร และ Tajo เขียนอะไรกลับไปยัง Shopify ได้ที่ [คำอธิบายสิทธิ์ Shopify](https://tajo.io/th/resources/help/integrations/shopify-permissions-explained/)

## ขั้นตอนที่ 2: สิ่งที่แอป Tajo Shopify ส่งไปยัง Brevo

แอปจะตรวจสอบ Webhook ของ Shopify แต่ละรายการ จัดเก็บ นำเข้าคิว และประมวลผลทันที topic ลูกค้าและสินค้าจะรอประมาณสี่วินาทีก่อน ไม่มีช่วงเวลารวมเป็นชุด งานที่ล้มเหลวจะถูกลองใหม่โดยเว้นระยะห่างเพิ่มขึ้น (backoff)

### topic ของ Webhook

แอป Tajo Shopify สมัครรับ topic ของ Webhook ใน Shopify เหล่านี้:

| topic ของ Webhook | วัตถุประสงค์ |
| --- | --- |
| `customers/create`, `customers/update`, `customers/delete` | ทำให้ผู้ติดต่อใน Brevo เป็นปัจจุบัน |
| `orders/create`, `orders/updated`, `orders/fulfilled`, `orders/cancelled` | เหตุการณ์คำสั่งซื้อและตัวชี้วัดคำสั่งซื้อสำหรับ Brevo |
| `orders/paid`, `refunds/create` | ให้และหักคะแนนสะสม |
| `checkouts/create`, `checkouts/update` | กู้คืนการชำระเงินที่ถูกทิ้งใน Brevo |
| `products/create`, `products/update`, `products/delete` | ทำให้แคตตาล็อกสินค้าใน Brevo เป็นปัจจุบัน |
| `inventory_levels/update` | ทำให้สต็อกสินค้าใน Brevo เป็นปัจจุบัน |
| `collections/create`, `collections/update`, `collections/delete` | ทำให้คอลเลกชันเป็นปัจจุบัน |
| `companies/*`, `company_contacts/*`, `company_locations/*` (create, update, delete) | ซิงค์บริษัท B2B |
| `app/uninstalled`, `app/scopes_update`, `app_subscriptions/update` | วงจรชีวิตของแอป |

Webhook ความเป็นส่วนตัวที่ Shopify บังคับ (คำขอข้อมูลลูกค้า การลบข้อมูลลูกค้า การลบข้อมูลร้านค้า) ก็ได้รับการจัดการเช่นกัน แอปไม่ได้สมัครรับ `carts/*` ตะกร้าที่ถูกทิ้งมาจาก topic `checkouts/*`

สิ่งที่ไปถึง Brevo:

| เหตุการณ์ใน Shopify | ใน Brevo |
| --- | --- |
| สร้างหรืออัปเดตลูกค้า | สร้างหรืออัปเดตผู้ติดต่อพร้อมชื่อ อีเมล และความยินยอมทางการตลาด ในแพ็กเกจแบบชำระเงิน แอปจะเพิ่มแท็ก จำนวนคำสั่งซื้อ ยอดใช้จ่าย และคำสั่งซื้อล่าสุด |
| ลบลูกค้า | ผู้ติดต่อจะถูกยกเลิกการสมัครรับ ไม่ได้ถูกลบ |
| สร้าง อัปเดต ชำระเงิน จัดส่ง หรือยกเลิกคำสั่งซื้อ | คำสั่งซื้อผ่าน API คำสั่งซื้อของ Brevo และเหตุการณ์ `order_paid`, `order_completed` และ `order_cancelled` |
| สร้างการคืนเงิน | เหตุการณ์ `order_refunded` หากคุณใช้โปรแกรมสะสมคะแนนของ Brevo ผ่าน Tajo คะแนนจะถูกหักตามสัดส่วน |
| ชำระเงินคำสั่งซื้อ โดยมีโปรแกรมสะสมคะแนนของ Brevo | ให้คะแนนตามอัตราคะแนนต่อดอลลาร์ที่คุณกำหนด |
| สร้างหรืออัปเดตการชำระเงิน โดยมีอีเมลและรายการสินค้า | เหตุการณ์ `cart_updated` และ `cart_abandoned` ระบบอัตโนมัติใน Brevo ของคุณเป็นตัวตัดสินว่าจะส่งเมื่อใด |
| สร้าง อัปเดต หรือลบสินค้าหรือคอลเลกชัน | แคตตาล็อกสินค้าและหมวดหมู่ของ Brevo |
| อัปเดตระดับสต็อก | สต็อกของสินค้าในแคตตาล็อกของ Brevo เมื่อตัวเลือกสินค้าเปลี่ยนจาก 0 เป็นมากกว่า 0 ผู้ซื้อแต่ละคนที่ขอรับการแจ้งเตือนจะได้รับเหตุการณ์ `back_in_stock` หนึ่งครั้งต่อการเติมสต็อกแต่ละรอบ |

แอปไม่ได้เพิ่มปุ่ม “แจ้งเตือนฉัน” ลงในธีมของคุณ คำขอแจ้งเตือนเมื่อสินค้ากลับมามีสต็อกต้องมาจากหน้าร้านของคุณ เช่น จากปุ่มที่คุณเพิ่มเอง

### ข้อมูลที่มีอยู่แล้ว

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

## ขั้นตอนที่ 3: สร้างกฎการซิงค์ด้วยเอเจนต์

กฎการซิงค์คือคำจำกัดความแบบ declarative ของการซิงค์หนึ่งรายการ: ทรัพยากรต้นทาง การดำเนินการใน Brevo การแมปฟิลด์ และตัวกรอง คุณไม่ต้องเขียนเอง คุณอธิบาย เอเจนต์สร้าง และคนอนุมัติ

1. ใน Tajo เปิด **Agents** แล้วขอการซิงค์จาก **Brevo Integration Architect** ด้วยภาษาทั่วไป ตัวอย่างเช่น: “ส่งลูกค้า Shopify ที่ยอมรับการตลาดทางอีเมลไปยัง Brevo เป็นผู้ติดต่อ”
2. เอเจนต์ตรวจสอบคอนเนกเตอร์ Shopify ตัวอย่างที่ได้จะคืนชื่อและประเภทของฟิลด์เท่านั้น ไม่เคยคืนค่าข้อมูลลูกค้า
3. เอเจนต์เสนอกฎพร้อมการแมปฟิลด์และตัวกรอง จากนั้นตรวจสอบการแมปฟิลด์กับการดำเนินการของ Brevo และทดลองรันแบบ dry run กับฉบับร่าง ทั้งสองขั้นตอนไม่อ่านเรคคอร์ดลูกค้า
4. เอเจนต์บันทึกกฎเป็นฉบับร่าง คุณยังเริ่มจากเทมเพลตได้ที่ **Connections > Syncs and mappings > New sync from template**
5. **Request publish approval** จะรันการพรีวิวกับร้านของคุณ โดยอ่านเรคคอร์ดไม่เกิน 10 รายการ ไม่เขียนอะไรลง Brevo และไม่เลื่อนเคอร์เซอร์ บันทึกเฉพาะจำนวน: เรคคอร์ดที่ดึงมา ที่มีสิทธิ์ ที่แมปแล้ว และที่ถูกตัวกรองปฏิเสธ รวมถึงข้อผิดพลาดในการแมป หากการพรีวิวล้มเหลว จะไม่มีการสร้างคำขออนุมัติ
6. คนอนุมัติคำขอในหน้า **Approvals** พร้อมเหตุผลเป็นลายลักษณ์อักษร การอนุมัติผูกกับค่าแฮช SHA-256 ของกฎและหมดอายุหลัง 30 นาที จากนั้นหน้าของกฎจะแสดง **Publish approved version**

การแก้ไขกฎที่เผยแพร่แล้วจะทำให้กฎกลับเป็นฉบับร่าง และต้องผ่านการพรีวิวและการอนุมัติอีกครั้งก่อนจะทำงานได้

### ตัวอย่างกฎจริง

นี่คือเทมเพลต **Shopify customers -> Brevo contacts** ตามที่ Tajo กำหนดไว้:

```ts
sourceSlug: "shopify",
sourceResource: "customers",
destinationSlug: "brevo",
destinationAction: "upsert_contact",
fieldMap: [
  { source: "email", destination: "email", transform: "toLowerCase" },
  { source: "first_name", destination: "attributes.FIRSTNAME" },
  { source: "last_name", destination: "attributes.LASTNAME" },
  { source: "phone", destination: "attributes.PHONE" },
  { source: "total_spent", destination: "attributes.TOTAL_SPENT", transform: "toNumber" },
  { source: "orders_count", destination: "attributes.ORDERS_COUNT", transform: "toNumber" },
  { source: "tajo_email_marketing_consent", destination: "attributes.OPT_IN", transform: "toBoolean" },
  { source: "tags", destination: "attributes.SHOPIFY_TAGS" },
  { source: "id", destination: "attributes.SHOPIFY_ID", transform: "toString" },
  { source: "created_at", destination: "attributes.SHOPIFY_CREATED_AT" },
  { source: "updated_at", destination: "attributes.SHOPIFY_UPDATED_AT" },
],
filterExpression:
  "($json.tajo_email_marketing_consent === true) && ($json.tajo_email_suppressed === false)",
```

ตัวกรองนี้คือการตรวจสอบความยินยอม Tajo ได้ค่าทั้งสองจาก `email_marketing_consent.state` ของ Shopify หรือจากแฟล็กรุ่นเก่า `accepts_marketing` กฎที่เขียนผู้ติดต่อลง Brevo จะเผยแพร่ไม่ได้หากไม่มีตัวกรองนี้ ส่วนเทมเพลต Shopify อีกตัวคือ **Shopify orders → Brevo orders** จะบันทึกคำสั่งซื้อใน Brevo สำหรับผู้ซื้อที่ยอมรับการตลาดตอนชำระเงิน

### กฎทำงานเมื่อใด

- กฎการซิงค์ผู้ติดต่อทำงานทุก 15 นาทีโดยค่าเริ่มต้น การรันแต่ละครั้งเริ่มจากเคอร์เซอร์ของกฎ
- หน้าของกฎที่ใช้งานอยู่มีปุ่ม **Test run (1 batch)**
- กฎ **Shopify orders → Brevo orders** ที่ใช้งานอยู่และเผยแพร่แล้วก็ทำงานทุก 15 นาทีเช่นกัน การรันตามกำหนดเวลาครั้งแรกเริ่มก่อนขณะนั้นไม่กี่นาที และไม่ส่งคำสั่งซื้อที่เก่ากว่านั้น การรันแต่ละครั้งหลังจากนั้นจะส่งคำสั่งซื้อที่อัปเดตตั้งแต่การรันครั้งก่อน
- คำสั่งซื้อในอดีตจะไปถึง Brevo ก็ต่อเมื่อคุณรันกฎเองเท่านั้น: ด้วยปุ่ม **Test run (1 batch)** หรือขอให้เอเจนต์ **Sync Operator** รันกฎให้
- กฎคำสั่งซื้อจะทำงานตามกำหนดเวลาก็ต่อเมื่อใช้ตัวกรองความยินยอมทางการตลาดของผู้ซื้อตามเทมเพลตเท่านั้น กฎที่มีการแก้ไขตัวกรองจะทำงานเฉพาะเมื่อคุณสั่งรันเอง
- หลังจากรันล้มเหลวติดต่อกันห้าครั้ง กฎจะหยุดตัวเองชั่วคราว และหน้าของกฎจะแสดงข้อผิดพลาดล่าสุด แก้ไขสาเหตุ แล้วเผยแพร่อีกครั้ง

การรันแต่ละครั้งจะแสดงในประวัติการรันของกฎ พร้อมจำนวนเรคคอร์ดที่อ่าน เขียน และล้มเหลว และระยะเวลาที่ใช้

## สิ่งที่คอนเนกเตอร์ Shopify อ่านและเขียน

กฎการซิงค์เขียนลงปลายทางเท่านั้น ซึ่งในที่นี้คือ Brevo และไม่เคยเขียนลง Shopify

แอป Tajo Shopify ขอขอบเขตสิทธิ์ 12 รายการ และเขียนข้อมูลลง Shopify เพียงไม่กี่อย่าง เช่น การยกเลิกความยินยอมและแท็กสะสมคะแนน [คำอธิบายสิทธิ์ Shopify](https://tajo.io/th/resources/help/integrations/shopify-permissions-explained/) แสดงขอบเขตสิทธิ์และการเขียนทุกรายการ พร้อมสิ่งที่กระตุ้นให้เกิดการเขียนนั้น

เอเจนต์และโฮสต์ MCP เข้าถึงร้านผ่านคอนเนกเตอร์ Shopify:

| อ่าน | เขียน |
| --- | --- |
| รายละเอียดร้าน ลูกค้า (รายการและการค้นหา) คำสั่งซื้อ สินค้า metafield ของลูกค้า ระดับสต็อก สถานะการส่งออกแบบกลุ่ม | metafield ของลูกค้าและแท็กลูกค้า รวมถึงการเริ่มส่งออกแบบกลุ่ม การเขียนแต่ละครั้งจะถูกเตรียมเป็นข้อเสนอและทำงานหลังได้รับการอนุมัติเท่านั้น |

คอนเนกเตอร์ยังประกาศการปรับสต็อกไว้ด้วย ซึ่งต้องใช้ขอบเขตสิทธิ์ `write_inventory` ที่แอป Tajo Shopify ไม่ได้ขอ

## ขั้นตอนที่ 4: ใช้เครื่องมือ Shopify ผ่าน MCP

Tajo ให้บริการคอนเนกเตอร์ Shopify เป็นเซิร์ฟเวอร์ MCP ที่ `https://alto.tajo.io/mcp/connectors/shopify` เพิ่มลงใน Claude Code:

```bash
claude mcp add --transport http tajo-shopify https://alto.tajo.io/mcp/connectors/shopify
```

โฮสต์จะค้นพบเซิร์ฟเวอร์ OAuth ของ Tajo และเปิดหน้าเข้าสู่ระบบ Tajo การเข้าถึงจำกัดเฉพาะบัญชี early access เซิร์ฟเวอร์มีเครื่องมือ 12 รายการ:

| เครื่องมือ | หน้าที่ |
| --- | --- |
| `preview_tajo_shopify_app` | พรีวิวแบบโต้ตอบของแอป Tajo Shopify แสดงผลเป็น MCP UI |
| `get_shop` | รายละเอียดของร้าน |
| `search_customers` | ค้นหาลูกค้าด้วยไวยากรณ์คำค้นของ Shopify เช่น `tag:tajo-vip` หรือ `total_spent:>100` |
| `list_customers` | แสดงรายการลูกค้าแบบแบ่งหน้า |
| `list_orders` | แสดงรายการคำสั่งซื้อแบบแบ่งหน้า |
| `list_products` | แสดงรายการสินค้าพร้อมตัวเลือกสินค้า รูปภาพ และสต็อก |
| `get_customer_metafields` | อ่าน metafield ของลูกค้า |
| `get_inventory_levels` | อ่านสต็อกของตัวเลือกสินค้าในทุกสถานที่ |
| `poll_bulk_export` | ตรวจสอบการส่งออกแบบกลุ่มและรับลิงก์ดาวน์โหลดเมื่อเสร็จ |
| `calculate_rewards_profile` | คำนวณระดับ คะแนน และยอดรางวัลของลูกค้าจากข้อมูลการค้าที่ซิงค์แล้ว |
| `shopify_propose` | เตรียมการเขียนลง Shopify หนึ่งรายการเป็นข้อเสนอ โดยยังไม่มีการส่งใด ๆ |
| `shopify_apply` | รันข้อเสนอที่ได้รับอนุมัติแล้ว |

## การแก้ไขปัญหา

- ผู้ติดต่อไม่ปรากฏใน Brevo: ดู [ผู้ติดต่อหายไปใน Brevo](https://tajo.io/th/resources/help/troubleshooting/contacts-missing-in-brevo/)
- กฎที่ไม่ทำงาน หรือหยุดตัวเองชั่วคราว: ดู [ข้อมูลไม่ซิงค์](https://tajo.io/th/resources/help/troubleshooting/data-not-syncing/)

## ขั้นตอนถัดไป

- [ทำความเข้าใจการซิงค์ข้อมูล](https://tajo.io/th/resources/help/getting-started/understanding-data-sync/) วิธีการทำงานของกฎการซิงค์
- [คำอธิบายสิทธิ์ Shopify](https://tajo.io/th/resources/help/integrations/shopify-permissions-explained/) ขอบเขตสิทธิ์และการเขียนทุกรายการ
- [Shopify + Brevo](https://tajo.io/th/docs/integrations/shopify-brevo) คู่มือการเชื่อมต่อ
- [ติดต่อทีม](https://tajo.io/th/contact) เพื่อให้ช่วยตั้งค่า
