Hướng dẫn tích hợp WooCommerce
Hướng dẫn này kết nối một cửa hàng WooCommerce với Tajo. Tích hợp gồm hai nửa phối hợp với nhau:
- Plugin Tajo for WooCommerce: ghi nhận các sự kiện tương tác theo thời gian thực (đơn hàng, giỏ hàng, hoàn tiền, đánh giá, biểu mẫu được gửi) ngay trong WordPress và chuyển chúng tới Tajo qua một outbox bền bỉ, có ký số.
- Kết nối WooCommerce REST: Tajo đọc khách hàng, đơn hàng, sản phẩm, mã giảm giá, hoàn tiền và đánh giá của cửa hàng bạn để nhập dữ liệu lịch sử và đồng bộ liên tục. Xem tài liệu connector WooCommerce cho thiết lập chỉ dùng REST.
Bản thân phần tự động hóa marketing (email, SMS, WhatsApp qua Brevo và các nhà cung cấp khác) được cấu hình trong Tajo, không phải trong plugin. Nhiệm vụ của plugin là đưa các sự kiện đáng tin cậy ra khỏi WordPress.
Điều kiện tiên quyết
- WordPress 6.3+ với quyền admin
- PHP 7.4+
- WooCommerce 7.0+ (plugin cũng chạy trên các site WordPress không có WooCommerce, khi đó các adapter thương mại đơn giản là không hoạt động)
- Tài khoản Tajo đã tạo sẵn một kết nối WordPress
- HTTPS trên endpoint Tajo (luôn đúng với bản Tajo được lưu trữ sẵn)
Bước 1: Cài plugin Tajo for WooCommerce
Cài đặt thủ công
# Download the plugincd wp-content/pluginswget https://tajo.io/downloads/woocommerce/tajo-woocommerce-latest.zip
# Verify and unzipunzip tajo-woocommerce-latest.zipSau đó kích hoạt từ WordPress admin:
- Vào Plugins → Installed Plugins
- Tìm “Tajo for WooCommerce”
- Nhấn Activate
Bạn cũng có thể tải trực tiếp file zip lên qua Plugins → Add New → Upload Plugin. Mỗi bản phát hành đều đi kèm một checksum SHA-256 được công bố tại tajo.io/downloads/woocommerce/. Plugin chưa được đăng trong thư mục WordPress.org; cài đặt thủ công là cách được hỗ trợ hôm nay.
Bước 2: Cấu hình kết nối
Vào WooCommerce → Tajo (trên site không có WooCommerce: Settings → Tajo) và nhập ba giá trị từ kết nối WordPress trong Tajo:
| Trường | Giá trị |
|---|---|
| Tajo endpoint | URL webhook HTTPS hiển thị trong Tajo, ví dụ https://alto.tajo.io/api/connectors/wordpress/webhooks/engagement |
| Binding ID | Binding ID của kết nối, lấy từ Tajo |
| Signing secret | Khóa bí mật dùng chung (32–256 ký tự). Plugin tự sinh một khóa cục bộ đủ mạnh khi kích hoạt; hãy dán nó vào Tajo, hoặc dán khóa của Tajo vào đây |
Không có hằng số API key nào phải thêm vào wp-config.php. Sự kiện vẫn nằm an toàn trong hàng đợi của outbox cục bộ cho đến khi cả ba giá trị được lưu.
Sau đó kiểm chứng toàn tuyến đường ống:
- Nhấn Queue test event, rồi Process now.
- Bảng outbox gửi đi sẽ hiển thị sự kiện ở trạng thái đã gửi.
- Trong Tajo, xác nhận sự kiện
connection.testđã tới kết nối WordPress.
Plugin gửi những gì
Mỗi sự kiện là một envelope gọn nhẹ, tối giản dữ liệu cá nhân và được ký bằng HMAC-SHA256. Chỉ các trường định danh tương tác (email, số điện thoại, ID cục bộ) cùng metadata sự kiện có giới hạn mới rời khỏi WordPress, không bao giờ có tên, địa chỉ bưu chính, địa chỉ IP, user agent, nội dung bình luận, các trường biểu mẫu tùy ý, ghi chú đơn hàng hay chi tiết thanh toán.
Sự kiện WooCommerce
| Hook | Sự kiện |
|---|---|
woocommerce_created_customer / woocommerce_update_customer | customer.created / customer.updated |
woocommerce_new_product / woocommerce_update_product | product.created / product.updated |
woocommerce_add_to_cart, xóa sản phẩm, áp dụng/gỡ mã giảm giá | cart.updated (kèm tóm tắt giỏ hàng cho các luồng bỏ giỏ) |
woocommerce_cart_emptied | cart.emptied |
woocommerce_new_order / woocommerce_update_order | order.placed / order.updated |
woocommerce_order_status_changed | order.status_changed (+ order.fulfilled khi hoàn tất) |
woocommerce_payment_complete | order.paid |
woocommerce_order_refunded | refund.created |
| Cập nhật trạng thái WooCommerce Subscriptions | subscription.status_changed |
Sự kiện đơn hàng mang theo số đơn hàng, trạng thái, tiền tệ, tổng tiền, các dòng hàng và những URL đánh giá/đặt lại dùng được ngay, đủ cho các tự động hóa sau mua và kéo khách quay lại mà không cần gọi API thêm lần nữa.
Sự kiện WordPress
contact.created/contact.updated/contact.deletedcho tài khoản người dùngcontent.published/content.updated/content.unpublishedcho nội dung công khaicomment.created/comment.status_changedcho bình luận của khách truy cập và đánh giá sản phẩm (ghi chú đơn hàng nội bộ của WooCommerce, pingback và trackback không bao giờ được phát ra)form.submittedcho các lượt gửi thành công của Contact Form 7, WPForms, Gravity Forms và Fluent Forms: chỉ các trường định danh email/số điện thoại có kiểu rõ ràng và metadata biểu mẫu được trích xuất; các trường gửi lên tùy ý đều bị loại bỏ
Độ tin cậy: outbox gửi đi
Plugin không bao giờ bắn sự kiện thẳng tới Tajo ngay trong một lượt tải trang. Mọi sự kiện được ghi vào bảng outbox cục bộ trước, rồi được WP-Cron gửi đi kèm theo:
- Backoff lũy thừa có giới hạn (tối đa 8 lần thử, tôn trọng
Retry-After) - Dead letter kèm nút Replay dead letters chỉ một lần nhấn trong trang admin
- Giới hạn lưu trữ để một endpoint không truy cập được không bao giờ tích trữ dữ liệu cá nhân (đã gửi: 7 ngày; đang chờ: 30 ngày; dead letter: 30 ngày sau lần cập nhật cuối)
- ID sự kiện có tính bất biến khi lặp lại, nên thử lại và phát lại không bao giờ tạo bản trùng ở phía sau
Nếu nhà cung cấp hosting của bạn tắt WP-Cron (DISABLE_WP_CRON), hãy gọi wp-cron.php từ một trình lập lịch thật ít nhất mỗi phút một lần.
Sự đồng ý không bao giờ được suy đoán
Việc tạo tài khoản, checkout, mua hàng và các lượt gửi biểu mẫu thông thường không được coi là đồng ý nhận marketing. Sự kiện dựng sẵn mang theo danh sách đồng ý rỗng. Để ghi nhận sự đồng ý tường minh (ví dụ từ một ô đăng ký bản tin đã tích), hãy phát nó qua hook mở rộng:
do_action( 'tajo_engagement_emit', 'consent.updated', array( 'email' => $email ), array( 'policyVersion' => '2026-07' ), array( array( 'channel' => 'email', 'status' => 'opt_in', // or 'opt_out' 'purpose' => 'marketing', 'source' => 'newsletter_checkbox', 'evidence' => array( 'formId' => 'newsletter-footer', 'field' => 'marketing_email' ), ), ), gmdate( 'c' ));Cùng hook đó cho phép bất kỳ plugin hay theme nào phát sự kiện tùy chỉnh; tất cả đều đi qua cùng một bộ làm sạch, cùng outbox và cùng chữ ký.
Bước 3: Nhập dữ liệu lịch sử
Sự kiện theo thời gian thực bao phủ mọi thứ kể từ lúc cài đặt trở đi. Với phần lịch sử có trước plugin, kết nối WooCommerce REST của Tajo sẽ nhập khách hàng, đơn hàng, sản phẩm, mã giảm giá, hoàn tiền và đánh giá hiện có, được cấu hình hoàn toàn ở phía Tajo bằng một WooCommerce REST API key (WooCommerce → Settings → Advanced → REST API, quyền đọc). Xem tài liệu connector WooCommerce để biết chi tiết.
Quyền riêng tư và GDPR
- Plugin đăng ký với Tools → Export Personal Data và Tools → Erase Personal Data của WordPress; các sự kiện outbox còn lưu ứng với một email khớp sẽ được xuất hoặc xóa tại chỗ.
- Việc xóa và việc gửi dùng chung một mutex fail-closed, nên một lệnh xóa không bao giờ báo hoàn tất trong khi một payload đang gửi dở.
- Xóa cục bộ chỉ bao gồm outbox trên WordPress; hãy gửi yêu cầu tương ứng trong Tajo cho dữ liệu ở phía sau.
- Vô hiệu hóa sẽ tạm dừng việc gửi nhưng vẫn giữ cấu hình và các sự kiện đang chờ; xóa plugin sẽ loại bỏ vĩnh viễn outbox, cài đặt, khóa bí mật và các lịch chạy.
Tương thích
- HPOS: plugin khai báo tương thích với WooCommerce High-Performance Order Storage và chỉ dùng các đối tượng CRUD cùng hook công khai.
- WooCommerce Subscriptions: thay đổi trạng thái đăng ký được ghi nhận khi extension này đang hoạt động.
- Multisite: gỡ cài đặt sẽ dọn sạch mọi site trong mạng.
Tham chiếu vận hành
Việc khám phá server-to-server và điều khiển outbox dành cho quản trị viên thông qua xác thực bằng Application Password:
| Phương thức | Route | Mục đích |
|---|---|---|
GET | /wp-json/tajo/v1/capabilities | Phiên bản plugin, các adapter phát hiện được, danh mục sự kiện, tình trạng outbox |
GET | /wp-json/tajo/v1/outbox | Số lượng trong outbox (payload không bao giờ bị lộ) |
POST | /wp-json/tajo/v1/outbox/process | Xử lý ngay một lô |
POST | /wp-json/tajo/v1/outbox/replay | Phát lại dead letter |
Xử lý sự cố
| Triệu chứng | Nguyên nhân và cách khắc phục |
|---|---|
| Sự kiện đứng ở “Queued” | Endpoint, binding ID hoặc khóa bí mật chưa được lưu; việc gửi tạm dừng cho đến khi cả ba được cấu hình |
| Sự kiện đứng ở “Retrying” | Không truy cập được endpoint Tajo từ hosting của bạn, hoặc WP-Cron không chạy; hãy kiểm tra cột lỗi trong bảng outbox và thiết lập cron của bạn |
| Dead letter dồn lại | Một lỗi không thể thử lại (thường là sai binding ID hoặc khóa bí mật); hãy sửa cấu hình, rồi chọn Replay dead letters |
| “Enter a valid HTTPS Tajo webhook endpoint” | Endpoint phải là HTTPS và không nhúng thông tin đăng nhập |
| Sự kiện thử đã gửi nhưng Tajo không có gì | Hãy kiểm tra bạn đã dán binding ID từ đúng workspace/kết nối Tajo mà endpoint đó thuộc về |
Các bước tiếp theo
- Tài liệu connector WooCommerce: đồng bộ REST, chi tiết chữ ký webhook, các khóa cấu hình
- Đồng bộ khách hàng: ánh xạ khách hàng WooCommerce vào hệ thống nguồn sự thật của bạn
- Cấu hình các tự động hóa giỏ hàng bỏ dở, sau mua và kéo khách quay lại trong Tajo bằng các sự kiện
cart.updated,order.placedvàorder.fulfilled