# Shopify + Brew

Kích hoạt tự động hóa trong Brew từ các sự kiện Shopify về khách hàng, đơn hàng, checkout và giao hàng. Vận hành các luồng chào mừng, biên nhận, checkout bị bỏ dở và vận chuyển.

URL chính tắc: https://brew.new/vi/browse/integrations/shopify

- Chiều dữ liệu: Dữ liệu vào
- Kết nối: Webhook secret
- Trình kích hoạt sự kiện thương mại

## Tính năng đang hoạt động

- **Trình kích hoạt sự kiện**: Kích hoạt tự động hóa trong Brew từ các sự kiện Shopify về khách hàng, đơn hàng, checkout và giao hàng. Vận hành các luồng chào mừng, biên nhận, checkout bị bỏ dở và vận chuyển.

## Biến sự kiện cửa hàng thành email hữu ích

Kết nối Shopify để bắt đầu gửi email chuẩn thương hiệu khi khách hàng đăng ký, đơn hàng được thanh toán, một checkout được tạo hoặc đơn hàng được gửi đi. Brew hỗ trợ 13 chủ đề webhook của Shopify về khách hàng, đơn hàng, checkout và giao hàng.

Quá trình thiết lập dùng các webhook bạn tạo trong Shopify Admin. Bạn không cần ứng dụng Shopify, client ID hay OAuth. Shopify vẫn chịu trách nhiệm về đơn hàng, thanh toán và giao hàng. Brew tạo và gửi email.


## Bạn có thể xây dựng gì

- Email chào mừng khách hàng: sự kiện customers/create xảy ra khi một hồ sơ khách hàng được tạo trong Shopify.
- Xác nhận đơn hàng và biên nhận: sự kiện orders/create xảy ra khi khách đặt hàng, còn orders/paid xảy ra khi khoản thanh toán được thu. Cả hai đều mang theo orderNumber, totalPrice, currency và financialStatus. Mỗi email chỉ nên dùng một trong hai sự kiện để tránh gửi trùng.
- Thông báo hủy đơn hàng: sự kiện orders/cancelled xảy ra khi một đơn hàng bị hủy, mang theo số đơn hàng và trạng thái thanh toán.
- Thông báo vận chuyển: sự kiện fulfillments/create mang theo trackingNumber và trackingUrl khi lần giao hàng có các thông tin này. orders/fulfilled cũng xảy ra khi đơn hàng được gửi đi nhưng không có các trường theo dõi vận đơn, nên mỗi email vận chuyển chỉ nên dùng một trình kích hoạt.
- Email tiếp nối về giao hàng: sự kiện fulfillments/update xảy ra khi một lần giao hàng thay đổi. Trường fulfillmentStatus là trạng thái xử lý của lần giao hàng, chẳng hạn pending, success hoặc failure, chứ không phải xác nhận hàng đã đến tay khách. Với email cảm ơn sau khi nhận hàng hoặc lời mời đánh giá, hãy chỉ kích hoạt một sự kiện tùy chỉnh trong Brew sau khi ứng dụng của bạn xác nhận hàng đã đến tay khách.
- Lời nhắc checkout: sự kiện checkouts/create xảy ra khi một checkout được tạo và có thể mang theo abandonedCheckoutUrl, liên kết giúp khách tiếp tục checkout.
- Hãy phối hợp với thông báo khách hàng của Shopify để khách hàng không nhận cùng một nội dung từ cả hai phía.

## Lời nhắc checkout cần bước kiểm tra trạng thái

Sự kiện checkouts/create xảy ra khi checkout được tạo, chứ không phải khi checkout bị bỏ dở. Luồng nhắc nhở bắt đầu từ đây rồi chờ. Việc khách đặt hàng không dừng lượt chạy đã bắt đầu.

Sau một bước Chờ, điều kiện sẽ đọc các trường hiện tại của liên hệ như shopify_last_order_status và shopify_last_order_at. Các trường này mô tả đơn hàng gần nhất mà Brew ghi nhận, chứ không phải checkout cụ thể này, nên không thể chứng minh checkout này đã thành đơn hàng.

Sự kiện checkouts/update xảy ra mỗi khi checkout thay đổi, chứ không phải sau một khoảng chờ cố định, nên riêng sự kiện này không thể dùng làm lời nhắc thứ hai theo thời gian.

Checkout không có địa chỉ email sẽ không khởi chạy tự động hóa nào, trừ khi Brew đã ghi nhận email cho cùng ID khách hàng Shopify đó. Trước khi xuất bản, hãy thử nghiệm một checkout có chuyển thành đơn hàng và một checkout không chuyển thành đơn hàng.


## Thiết lập Shopify trong Brew

- Mở mục Tích hợp, chọn Shopify rồi chọn Tạo URL webhook.
- Nhập tên miền myshopify.com của bạn, chẳng hạn acme.myshopify.com, chứ không phải tên miền tùy chỉnh của cửa hàng trực tuyến. Brew đối chiếu tên miền này với header X-Shopify-Shop-Domain trên mọi webhook.
- Trong Shopify Admin, mở Settings > Notifications và cuộn xuống Webhooks. Shopify chỉ gửi một chủ đề tới webhook được tạo cho chính chủ đề đó, nên hãy tạo một webhook cho mỗi sự kiện bạn định dùng. Đặt Format là JSON, dán URL Brew và chọn phiên bản API mới nhất.
- Sao chép signing secret ở cuối mục Webhooks. Cùng một secret này ký mọi webhook của cửa hàng. Dán secret vào Brew rồi chọn Kết nối.
- Mở menu trên từng webhook bạn đã tạo và chọn Send test. Lần thử đầu tiên chuyển trạng thái trong Brew từ “Đang chờ sự kiện thử nghiệm” sang “Đã kết nối”, và mỗi lần thử sẽ đánh dấu sự kiện tương ứng là đã nhận. Lần thử chỉ dùng để xác minh webhook. Brew không thêm liên hệ và không khởi chạy tự động hóa nào.
- Khi bạn chọn Kết nối, Brew tạo trình kích hoạt cho cả 13 chủ đề. Không có công tắc bật/tắt cho từng sự kiện, nhưng chủ đề nào chưa có webhook trên Shopify sẽ không bao giờ được kích hoạt.
- Tạo một tự động hóa, chọn sự kiện Shopify cho tự động hóa đó rồi gửi thử khi tự động hóa vẫn ở trạng thái Bản nháp. Chỉ những tự động hóa ở trạng thái Đang hoạt động mới chạy khi có sự kiện khớp được gửi đến.

## Các sự kiện Shopify được hỗ trợ

Brew hỗ trợ 13 chủ đề webhook sau:

- 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

## Đồng bộ liên hệ và cá nhân hóa

Mỗi sự kiện đã xác minh có địa chỉ email thật đều tạo hoặc cập nhật một liên hệ trong Brew (khớp theo email), bất kể có tự động hóa nào dùng sự kiện đó hay không. Khi có dữ liệu, Brew điền tên, họ, shopify_customer_id và shopify_shop_domain.

Các sự kiện đơn hàng cập nhật shopify_last_order_number, shopify_last_order_total, shopify_last_order_currency và shopify_last_order_at. Ngoài ra, orders/create, orders/paid và orders/cancelled điền shopify_last_order_status, và orders/fulfilled điền shopify_last_fulfillment_status. Các sự kiện giao hàng cập nhật shopify_last_tracking_number, shopify_last_tracking_url và shopify_last_fulfillment_status. Các sự kiện checkout cập nhật shopify_last_checkout_url.

Các sự kiện customers/delete, customers/disable và customers/enable đặt shopify_account_status thành deleted, disabled hoặc active. Brew không xóa liên hệ và cũng không hủy đăng ký cho liên hệ, vì vậy hãy lọc theo trường này ở những nơi cần thiết.

Dùng lược đồ payload đã khai báo của sự kiện được chọn cho thẻ cá nhân hóa. Mọi sự kiện đều có email, firstName, lastName, currency, shopDomain và createdAt khi có dữ liệu. Sự kiện đơn hàng có thêm orderNumber, totalPrice, financialStatus và fulfillmentStatus. Sự kiện checkout có thêm totalPrice và abandonedCheckoutUrl. Sự kiện giao hàng có thêm trackingNumber, trackingUrl và fulfillmentStatus.

Trường totalPrice là số tiền Shopify gửi theo đơn vị tiền tệ của đơn hàng, chẳng hạn 49.95, chứ không tính bằng cent. Payload không bao gồm các dòng sản phẩm (line item), và ID đối tượng của Shopify không phải là thẻ cá nhân hóa.

Webhook khách hàng của Shopify không còn kèm thông tin đồng ý nhận email tiếp thị, nên Brew không nhận được thông tin này. Hãy ghi nhận sự đồng ý riêng và kiểm tra trước khi gửi email quảng cáo.


## Brew có hỗ trợ sự kiện hoàn tiền và giỏ hàng không?

Không. Shopify không có chủ đề orders/refunded, và webhook hoàn tiền của Shopify không mang theo thông tin khách hàng. Sự kiện carts/update không có danh tính người nhận, nên Brew không thể gửi email từ sự kiện này một cách an toàn. Đừng thêm webhook cho các chủ đề đó.


## Vì sao sự kiện đã xuất hiện nhưng không có email nào được gửi?

Nhận sự kiện và gửi email là hai bước riêng biệt. Hãy xác nhận có một tự động hóa khớp đang ở trạng thái Đang hoạt động, rồi kiểm tra bộ lọc và lịch sử thực thi của tự động hóa đó, điều kiện của người nhận và tên miền gửi. Lần gửi từ Send test hiển thị dưới dạng sự kiện thử nghiệm và không bao giờ khởi chạy tự động hóa. Sự kiện không có địa chỉ email của một khách hàng mà Brew chưa biết sẽ được ghi nhận là chưa xác định được người nhận.


## Giới hạn và khắc phục sự cố

- Brew không thể thay đổi khách hàng, đơn hàng hay thông tin giao hàng trên Shopify.
- Lỗi 401 kèm shop_domain_mismatch nghĩa là tên miền đã nhập trong Brew không khớp với cửa hàng gửi webhook. Hãy kết nối lại bằng tên miền myshopify.com chính tắc.
- Nếu bạn xoay vòng signing secret trong Shopify, hãy kết nối lại bằng giá trị mới. Brew yêu cầu secret dài ít nhất 16 ký tự.
- Nếu một trình kích hoạt hiển thị “Chưa có sự kiện nào”, hãy tạo webhook Shopify cho chủ đề đó và gửi thử từ webhook này.
- Webhook đơn hàng có thể thiếu tên khách hàng. Hãy đặt giá trị dự phòng cho thẻ cá nhân hóa firstName, chẳng hạn một lời chào mặc định.
- Xem lại sự đồng ý và mục đích của từng email. Việc đồng bộ khách hàng Shopify không có nghĩa là bạn được phép gửi email quảng cáo.

## Nguồn và hướng dẫn thiết lập

- [Hướng dẫn thiết lập Shopify](https://docs.brew.new/integrations/import/shopify)
- [Tạo một tự động hóa](https://docs.brew.new/create-emails/build-an-automation)
- [Thẻ cá nhân hóa](https://docs.brew.new/create-emails/merge-tags)
- [Những gì bạn có thể gửi bằng Brew](https://docs.brew.new/get-started/what-you-can-send)
- [Webhook của Shopify](https://shopify.dev/docs/apps/build/webhooks)

## Liên quan

- [Tất cả tích hợp](https://brew.new/vi/browse/integrations.md)
- [Đăng ký](https://brew.new/vi/sign-up.md)
- Website: https://brew.new
