WooCommerce 連携ガイド
このガイドでは WooCommerce ストアを Tajo に接続します。この連携は、連動して動く 2 つの部分で構成されています。
- Tajo for WooCommerce プラグイン: WordPress 内でリアルタイムのエンゲージメントイベント(注文、カート、返金、レビュー、フォーム送信)を取得し、永続的で署名付きの outbox を通じて Tajo に配信します。
- WooCommerce REST 接続: Tajo がストアの顧客、注文、商品、クーポン、返金、レビューを読み取り、過去データのインポートと継続的な同期を行います。REST のみの設定については WooCommerce コネクタリファレンスを参照してください。
マーケティング自動化そのもの(Brevo などのプロバイダー経由のメール、SMS、WhatsApp)は、プラグインではなく Tajo 側で設定します。プラグインの役割は、信頼できるイベントを WordPress から取り出すことです。
前提条件
- 管理者権限のある WordPress 6.3 以上
- PHP 7.4 以上
- WooCommerce 7.0 以上(WooCommerce のない WordPress サイトでもプラグインは動作し、コマース用アダプターが単に無効のままになります)
- WordPress 接続を作成済みの Tajo アカウント
- Tajo エンドポイントでの HTTPS(ホスト版 Tajo では常に有効です)
ステップ 1: Tajo for WooCommerce プラグインをインストールする
手動インストール
# Download the plugincd wp-content/pluginswget https://tajo.io/downloads/woocommerce/tajo-woocommerce-latest.zip
# Verify and unzipunzip tajo-woocommerce-latest.zip続いて WordPress の管理画面から有効化します。
- Plugins → Installed Plugins を開きます
- 「Tajo for WooCommerce」を探します
- Activate をクリックします
Plugins → Add New → Upload Plugin から zip を直接アップロードすることもできます。各リリースには SHA-256 チェックサムが併せて公開されています(tajo.io/downloads/woocommerce/)。このプラグインは WordPress.org のディレクトリにはまだ掲載されておらず、現時点では手動インストールがサポートされる方法です。
ステップ 2: 接続を設定する
WooCommerce → Tajo(WooCommerce のないサイトでは Settings → Tajo)に移動し、Tajo の WordPress 接続から取得した 3 つの値を入力します。
| 項目 | 値 |
|---|---|
| Tajo エンドポイント | Tajo に表示される HTTPS の Webhook URL。例: https://alto.tajo.io/api/connectors/wordpress/webhooks/engagement |
| バインディング ID | Tajo から取得した接続のバインディング ID |
| 署名シークレット | 共有シークレット(32 文字から 256 文字)。プラグインは有効化時に強度の高いローカルシークレットを生成します。それを Tajo に貼り付けるか、Tajo 側のシークレットをここに貼り付けます |
wp-config.php に追加する API キーの定数はありません。3 つの値がすべて保存されるまで、イベントはローカルの outbox に安全にキューイングされたままになります。
続いて、経路全体を検証します。
- Queue test event をクリックし、次に Process now をクリックします。
- 配信 outbox のテーブルに、そのイベントが配信済みとして表示されるはずです。
- Tajo 側で、
connection.testイベントが WordPress 接続に届いたことを確認します。
プラグインが送信する内容
すべてのイベントは、HMAC-SHA256 で署名された、コンパクトでプライバシーに配慮した最小限のエンベロープです。WordPress から出ていくのはエンゲージメント用の識別項目(メールアドレス、電話番号、ローカル ID)と範囲の限られたイベントのメタデータだけで、氏名、住所、IP アドレス、ユーザーエージェント、コメント本文、任意のフォーム項目、注文メモ、決済情報が送られることはありません。
WooCommerce のイベント
| フック | イベント |
|---|---|
woocommerce_created_customer / woocommerce_update_customer | customer.created / customer.updated |
woocommerce_new_product / woocommerce_update_product | product.created / product.updated |
woocommerce_add_to_cart、商品の削除、クーポンの適用と解除 | cart.updated(カゴ落ちフロー用のカート概要付き) |
woocommerce_cart_emptied | cart.emptied |
woocommerce_new_order / woocommerce_update_order | order.placed / order.updated |
woocommerce_order_status_changed | order.status_changed(完了時は order.fulfilled も送信) |
woocommerce_payment_complete | order.paid |
woocommerce_order_refunded | refund.created |
| WooCommerce Subscriptions のステータス更新 | subscription.status_changed |
注文イベントには注文番号、ステータス、通貨、合計金額、明細行、そのまま使えるレビュー用と再注文用の URL が含まれます。追加の API 呼び出しなしで、購入後の自動化やウィンバックの自動化を構築できます。
WordPress のイベント
- ユーザーアカウントに対する
contact.created/contact.updated/contact.deleted - 公開コンテンツに対する
content.published/content.updated/content.unpublished - 訪問者のコメントと商品レビューに対する
comment.created/comment.status_changed(WooCommerce の内部的な注文メモ、ピンバック、トラックバックが送信されることはありません) - Contact Form 7、WPForms、Gravity Forms、Fluent Forms の送信成功に対する
form.submitted。抽出されるのは型付けされたメールアドレスと電話番号の識別項目、およびフォームのメタデータだけで、任意に送信された項目は破棄されます
信頼性: 配信 outbox
プラグインがページ表示から直接 Tajo にイベントを送ることはありません。すべてのイベントはまずローカルの outbox テーブルに書き込まれ、その後 WP-Cron が次の仕組みで配信します。
- 上限付きの指数バックオフ(最大 8 回の試行、
Retry-Afterを尊重) - 管理画面のワンクリック操作 Replay dead letters に対応したデッドレター
- 到達できないエンドポイントが個人データを溜め込まないようにする保持期限(配信済み: 7 日、キュー内: 30 日、デッドレター: 最終更新から 30 日)
- 冪等なイベント ID。再試行や再送でも下流で重複が発生しません
ホスティング環境が WP-Cron を無効化している場合(DISABLE_WP_CRON)は、実際のスケジューラーから少なくとも 1 分に 1 回 wp-cron.php を呼び出してください。
同意は決して推測しません
アカウント作成、チェックアウト、購入、一般的なフォーム送信は、マーケティングへの同意として扱いません。標準で用意されたイベントは、空の同意リストを持ちます。明示的な同意(たとえばニュースレターのチェックボックスがオンになった場合)を記録するには、拡張用のフックから送信します。
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' ));同じフックを使えば、任意のプラグインやテーマからカスタムイベントを送信できます。いずれも同じサニタイザー、同じ outbox、同じ署名を通ります。
ステップ 3: 過去データのインポート
リアルタイムのイベントは、インストール以降のすべてをカバーします。プラグイン導入より前の履歴については、Tajo の WooCommerce REST 接続が既存の顧客、注文、商品、クーポン、返金、レビューをインポートします。設定はすべて Tajo 側で、WooCommerce の REST API キー(WooCommerce → Settings → Advanced → REST API、読み取り権限)を使って行います。詳細は WooCommerce コネクタリファレンスを参照してください。
プライバシーと GDPR
- プラグインは WordPress の Tools → Export Personal Data および Tools → Erase Personal Data に登録されます。該当するメールアドレスについて outbox に残っているイベントは、ローカルでエクスポートまたは消去されます。
- 消去と配信はフェイルクローズドなミューテックスを共有するため、ペイロードの送信中に消去が完了として報告されることはありません。
- ローカルの消去が対象とするのは WordPress の outbox だけです。下流のデータについては、Tajo 側で対応するリクエストを送信してください。
- 無効化すると配信は一時停止しますが、設定とキュー内のイベントは保持されます。プラグインを削除すると、outbox、設定、シークレット、スケジュールが完全に削除されます。
互換性
- HPOS: プラグインは WooCommerce の High-Performance Order Storage への対応を宣言しており、CRUD オブジェクトと公開フックのみを使用します。
- WooCommerce Subscriptions: この拡張機能が有効なとき、サブスクリプションのステータス変更を取得します。
- マルチサイト: アンインストール時にネットワーク内のすべてのサイトをクリーンアップします。
運用リファレンス
サーバー間のディスカバリーと outbox の制御は、Application Password 認証によって管理者が利用できます。
| メソッド | ルート | 用途 |
|---|---|---|
GET | /wp-json/tajo/v1/capabilities | プラグインのバージョン、検出されたアダプター、イベント一覧、outbox の健全性 |
GET | /wp-json/tajo/v1/outbox | outbox の件数(ペイロードが公開されることはありません) |
POST | /wp-json/tajo/v1/outbox/process | バッチを即座に処理します |
POST | /wp-json/tajo/v1/outbox/replay | デッドレターを再送します |
トラブルシューティング
| 症状 | 原因と対処 |
|---|---|
| イベントが「Queued」のまま | エンドポイント、バインディング ID、シークレットのいずれかが未保存です。3 つすべてが設定されるまで配信は一時停止します |
| イベントが「Retrying」のまま | ホストから Tajo エンドポイントに到達できないか、WP-Cron が動作していません。outbox テーブルのエラー列と cron の設定を確認してください |
| デッドレターが溜まる | 再試行できないエラー(多くはバインディング ID かシークレットの誤り)です。設定を修正してから Replay dead letters を実行してください |
| 「Enter a valid HTTPS Tajo webhook endpoint」と表示される | エンドポイントは HTTPS で、認証情報を埋め込んでいない必要があります |
| テストイベントは配信されたのに Tajo に何も届かない | エンドポイントが属するのと同じ Tajo のワークスペースおよび接続からバインディング ID を貼り付けたか確認してください |
次のステップ
- WooCommerce コネクタリファレンス: REST 同期、Webhook 署名の詳細、設定キー
- 顧客同期: WooCommerce の顧客を自社の基準データに対応づける方法
cart.updated、order.placed、order.fulfilledの各イベントを使って、カゴ落ち、購入後、ウィンバックの自動化を Tajo で設定します