Eコマース(WooCommerceおよびMagento)
自分のストアを使って(BYOモデル)、WooCommerceまたはMagentoストアの顧客と注文をCRMに同期します。
Shopifyに加え、CRMはWooCommerceおよびMagentoのストアも同期します(BYOモデル:自分のストアを持ち込む)。各顧客は連絡先に、各注文は販売注文になります。当社側にコストやマージン、仲介は一切ありません。データはあなたのストアから直接届きます。この連携は初期状態では無効です。項目を入力して有効化するまで何も起こりません。シークレットはCRM内で暗号化して保存され、二度と表示されません。
前提条件
- WooCommerce:webhookを作成できる管理者アクセス権(WooCommerce → 設定 → 高度な設定 → Webhooks)を持つWordPress/WooCommerceストア。
- Magento(Adobe Commerce):各顧客/注文についてJSONをPOSTするモジュール、連携、またはオブザーバーをインストール・設定できるアクセス権(Magentoには標準化されたネイティブwebhookがありません)。
- Sellioで、設定 → 連携で認証情報を保存して連携を有効化するための管理者アクセス権。
WooCommerce
WooCommerceはネイティブwebhookを送信します。CRMのURLを指すwebhookをストア側で作成し、「シークレット」を定義します。WooCommerceはそのシークレットで各呼び出しに署名し(HMAC-SHA256、ヘッダーX-WC-Webhook-Signature)、CRMは同期前に署名を検証します。
- CRMで、設定 → 連携を開き、「Eコマース(WooCommerce)」カードを見つけます。
- ストアURL(任意、参照用のみ)とwebhookシークレット(任意の文字列)を入力し、「認証情報を保存」をクリックします。
- 表示された「webhook URL(WooCommerce)」をコピーします。
- ストアで、WooCommerce → 設定 → 高度な設定 → Webhooksへ行き、次の各トピックについてwebhookを作成します:Customer created、Customer updated、Order created、Order updated。それぞれで、CRMのURLをDelivery URLとして貼り付け、CRMに保存したものと「同じ」シークレットを使用します。
- CRMに戻り、「有効化」をクリックします。
Magento(Adobe Commerce)
Magentoには標準化されたネイティブwebhookがありません。各顧客または注文についてCRMのURLへJSONをPOSTするモジュール/連携(またはオブザーバー)を設定します。POSTはシークレットで認証され、2通りの方法があります(お使いのモジュールが対応する方を使用してください):本文のHMAC-SHA256署名をbase64にしたものをX-Magento-Signatureヘッダーに入れる方法、またはシークレットそのものを平文でX-Magento-Secretヘッダーに入れる方法です。
- CRMで、設定 → 連携を開き、「Eコマース(Magento)」カードを見つけます。
- ストアURL(任意)と認証シークレット(任意の文字列)を入力し、「認証情報を保存」をクリックします。
- 表示された「webhook URL(Magento)」をコピーします。
- Magentoのモジュール/連携を設定し、各顧客・注文についてそのURLへ(JSONで)POSTするようにし、シークレットをX-Magento-Signatureヘッダー(HMAC署名)またはX-Magento-Secret(平文の値)で送信します。
- CRMに戻り、「有効化」をクリックします。
Magentoで想定されるJSON形式。顧客の場合:{ "type": "customer", "id", "email", "firstname", "lastname", "telephone", "street", "city", "region", "country_id" }。注文の場合:{ "type": "order", "increment_id"(または"entity_id"), "grand_total", "order_currency_code", "status", "customer_email", "customer_id", "customer_firstname", "customer_lastname" }。"type"フィールド(customerまたはorder)がマッピングを決定し、欠けているフィールドは空になります。
各イベントで起こること
- 顧客(Wooではcustomer.created/updated、Magentoではtype "customer"):顧客はメールアドレスで照合され、連絡先として作成または更新されます。CRMはストアの顧客ID(woo_customer_id / magento_customer_id)を保存し、再送信時の重複を防ぎます。
- 注文(Wooではorder.created/updated、Magentoではtype "order"):注文は販売注文(番号、金額、通貨、ステータス)として作成または更新され、該当する連絡先が存在する場合はリンクされます。Wooでは「completed」が「請求済み」、「cancelled/refunded/failed」が「キャンセル済み」になります。Magentoでは「complete/closed/invoiced」が「請求済み」、「canceled/holded」が「キャンセル済み」になり、それ以外は「確認済み」になります。
webhook URLとシークレットは機密情報として扱ってください。署名/シークレットが無効な呼び出しは拒否されます。シークレットを入力せずに有効化しようとすると、連携は無効のままとなり、すべてが整うまで何も同期されません。
テスト方法
- WooCommerce:WooCommerce → 設定 → 高度な設定 → Webhooksで、webhookを編集し、テスト用の顧客/注文を作成した後に「Webhookログ」を確認します。CRMでは連絡先/販売注文を確認します。
- Magento:テスト用の顧客と注文についてオブザーバー/連携をトリガーし("type"フィールドを含むJSON POST)、CRMでレコードを確認します。
- 同じイベントを再送し、キーが外部IDであるため、CRMが更新される(重複しない)ことを確認します。
トラブルシューティング
- WooCommerce:無効な署名:ストア側のwebhook「シークレット」は、CRMに保存されたwebhookシークレットと「完全に一致」する必要があります(HMAC-SHA256、ヘッダーX-WC-Webhook-Signature)。両側に同じ値を再入力してください。
- Magento:呼び出しが拒否される:シークレットを正しく送信してください。本文のHMAC-SHA256をbase64にしたものをX-Magento-Signatureヘッダーに入れるか、平文のシークレットをX-Magento-Secretヘッダーに入れるか、お使いのモジュールが対応する方を使用してください。
- 同期されない:webhook/POSTがcustomerとorderの両方(作成/更新)をカバーし、正しい「webhook URL」を指していることを確認してください。連携が有効化されていることも確認してください。
- Magento:CRMのフィールドが空:想定されるJSON(顧客:id/email/firstname/lastname…、注文:increment_id/grand_total/order_currency_code/status/customer_email…)を確認してください。"type"フィールド(customer/order)がマッピングを決定します。
- URLで404:連携が無効化されているか、トークンが変更されています。再有効化してURLを再コピーしてください。