eCommerce Automation with OpenClaw + Shopify

Automate Shopify operations with OpenClaw AI agents. Order processing, inventory sync, customer service, fraud detection, and personalization at scale.

E
ECOSIRE Research and Development Team
|2026年3月19日5 分で読める929 語数|

OpenClaw + Shopify による e コマース自動化

Shopifyがプラットフォームです。 OpenClaw は、その上で実行されるオペレーション インテリジェンスです。 Shopify は店頭、チェックアウト、支払い処理を処理しますが、注文管理、在庫の最適化、顧客コミュニケーション、不正行為の検査、返品処理、パーソナライゼーションなど、Shopify ストアを大規模に運営する場合の運用の複雑さには、Shopify のネイティブ フローが提供するものを超える自動化が必要です。

OpenClaw エージェントは、Webhook および Admin API を通じて Shopify と統合し、運用レイヤーを自律的に処理します。このガイドでは、注文処理、不正行為検出、在庫管理、カスタマー サポート、パーソナライゼーション、返品と返金、マーケティング オートメーション、ベンダー調整の 8 つの自動化ドメインについて説明します。

重要なポイント

  • OpenClaw はリアルタイムで Shopify Webhook をサブスクライブし、注文イベント、在庫変更、顧客のアクションに対する 1 秒未満の応答を可能にします。
  • 注文処理エージェントは、フルフィルメントのルーティング、配送ラベルの生成、配送業者の選択、顧客への通知をエンドツーエンドで処理します。
  • Fraud Detection Agent は、履行を開始する前に、行動シグナル、住所検証、速度チェック、サードパーティのリスク スコアを使用してすべての注文を検査します。
  • 在庫エージェントは、倉庫と Shopify の場所全体の在庫レベルを監視し、再注文をトリガーし、店頭での在庫不足メッセージを管理します。
  • カスタマー サービス エージェントは、注文状況の問い合わせ、返品リクエスト、一般的なサポートの質問をブランドの声で自動的に処理します。
  • Personalization Agent は、個々の顧客履歴に合わせた製品の推奨事項、カート回復メッセージ、購入後のシーケンスを生成します。
  • すべての自動化が監視可能です。すべてのエージェントのアクションが完全な監査証跡とともにダッシュボードに表示されます。
  • ECOSIRE は、成長するエンタープライズ規模の Shopify ストア向けに OpenClaw Shopify 統合を構築および管理します。

統合アーキテクチャ

OpenClaw は 3 つのチャネルを通じて Shopify に接続します。

Shopify Webhook: 主要なリアルタイム チャネル。 OpenClaw は、応答する必要があるイベント タイプ (orders/createorders/updatedorders/fulfilledinventory_levels/updatecustomers/createrefunds/create など) の Webhook エンドポイントを登録します。 Shopify はすべての Webhook ペイロードに HMAC-SHA256 で署名します。 OpenClaw は、処理前に署名を検証します。

Shopify Admin API: Webhook では利用できないデータのクエリと Shopify レコードの作成/更新のための REST および GraphQL API。レート制限は、リーキー バケット アルゴリズムを使用して OpenClaw の Shopify ツール アダプターによって管理されます。

Shopify Storefront API: ストアフロントに推奨事項や動的コンテンツを挿入するパーソナライゼーション機能用。

export const ShopifyTool = defineTool({
  name: "shopify",
  type: "rest",
  baseUrl: `https://${process.env.SHOPIFY_SHOP_DOMAIN}/admin/api/2024-01`,
  auth: {
    type: "header",
    header: "X-Shopify-Access-Token",
    value: "${SHOPIFY_ACCESS_TOKEN}", // Vault reference
  },
  rateLimiting: {
    type: "leaky-bucket",
    bucketSize: 40,
    refillRate: 2, // 2 requests per second (REST API rate limit)
  },
  webhookVerification: {
    secret: "${SHOPIFY_WEBHOOK_SECRET}",
    algorithm: "hmac-sha256",
  },
});

注文処理エージェント: マシンスピードでのフルフィルメント

注文から発送が開始されるまでの 1 分ごとに、在庫が完売したり、配送業者の締め切りが過ぎたり、顧客の熱意が薄れたりするなど、何か問題が発生する可能性があります。注文処理エージェントは、注文が作成された瞬間にフルフィルメント シーケンスを開始します。

フルフィルメントのワークフロー:

ステップ 1 — 注文の検証: 注文品目と比較して在庫状況を確認します。在庫切れの商品がある場合は、バックオーダーをトリガーする前に、別の場所から発送できるかどうかを確認してください。

ステップ 2 — 不正行為のスクリーニング: 注文を不正検出エージェントにルーティングします (以下で説明します)。不正チェックが完了するまで(通常は 2 秒以内)、履行を保留します。

ステップ 3 — 倉庫のルーティング: 複数のフルフィルメント拠点を持つ販売者の場合、在庫の可用性、配送先住所への近さ、現在の作業負荷に基づいて最適な倉庫を選択します。

ステップ 4 — 配送業者の選択: お客様が選択した配送サービス、製品の寸法と重量、および配送先に基づいて、特定の配送業者サービスを選択し、配送ラベルを生成します。

ステップ 5 — 顧客への通知: ラベルが生成された瞬間に、追跡リンクを含む注文確認を送信します。フルフィルメント番号と追跡番号を使用して Shopify を更新します。

export const ProcessOrder = defineSkill({
  name: "process-order",
  tools: ["shopify", "warehouse", "shipping", "email"],
  async run({ input, tools }) {
    const order = await tools.shopify.get(`/orders/${input.orderId}.json`);

    // Check inventory
    const stockCheck = await checkInventoryForOrder(tools.shopify, order.line_items);
    if (!stockCheck.allAvailable) {
      return { processed: false, reason: "INVENTORY_SHORTAGE", shortItems: stockCheck.shortItems };
    }

    // Warehouse routing
    const warehouse = await selectWarehouse(tools.warehouse, order, stockCheck.locations);

    // Generate shipping label
    const label = await tools.shipping.createLabel({
      fromAddress: warehouse.address,
      toAddress: order.shipping_address,
      packages: buildPackages(order.line_items),
      service: order.shipping_lines[0]?.code ?? "GROUND",
    });

    // Fulfill in Shopify
    await tools.shopify.post(`/orders/${input.orderId}/fulfillments.json`, {
      fulfillment: {
        location_id: warehouse.shopifyLocationId,
        tracking_number: label.trackingNumber,
        tracking_company: label.carrier,
        tracking_urls: [label.trackingUrl],
        line_items: order.line_items.map((li) => ({ id: li.id, quantity: li.quantity })),
        notify_customer: false, // We send our own notification
      },
    });

    // Send customer notification
    await tools.email.send({
      to: order.email,
      template: "order-shipped",
      data: { order, trackingNumber: label.trackingNumber, trackingUrl: label.trackingUrl },
    });

    return { processed: true, trackingNumber: label.trackingNumber, warehouse: warehouse.name };
  },
});

不正検出エージェント: すべての注文をリアルタイムでスクリーニング

不正な注文により、Shopify 加盟店はチャージバックと商品損失として収益の約 0.5 ~ 2% の費用がかかります。 Fraud Detection Agent は、フルフィルメントを開始する前に、多要素リスク モデルを使用してすべての注文を検査します。

評価されたリスク要因:

係数評価方法
アドレス速度24 時間以内に異なる支払い方法で同じ住所に複数の注文
カード BIN チェックカード発行国が請求先住所の国と一致します
IP と請求の一致請求先住所と一致する IP 地理位置情報
注文金額の異常顧客の過去の注文金額を大幅に上回る
電子メール ドメインのリスク使い捨てメールドメインまたは新規登録ドメイン
配送転送既知の貨物転送住所への発送
名前が一致しません請求先名がカード所有者名と一致しません (可能な場合)。
電子メールの速度7 日間に同じメールから 3 回以上の注文
export const ScreenForFraud = defineSkill({
  name: "screen-for-fraud",
  tools: ["shopify", "ipinfo", "fraud-db"],
  async run({ input, tools }) {
    const order = input.order;
    const risks: RiskFactor[] = [];

    // Address velocity
    const addressOrders = await tools.shopify.get(
      `/orders.json?shipping_address=${encodeURIComponent(order.shipping_address.address1)}&created_at_min=${hoursAgo(24)}`
    );
    if (addressOrders.orders.length > 3) {
      risks.push({ factor: "ADDRESS_VELOCITY", score: 30, detail: `${addressOrders.orders.length} orders to same address in 24h` });
    }

    // IP geolocation
    const ipInfo = await tools.ipinfo.lookup(order.browser_ip);
    if (ipInfo.country !== order.billing_address.country_code) {
      risks.push({ factor: "IP_BILLING_MISMATCH", score: 25, detail: `IP country ${ipInfo.country} vs billing ${order.billing_address.country_code}` });
    }

    // Known fraud patterns
    const fraudMatch = await tools.fraudDb.check({
      email: order.email,
      ip: order.browser_ip,
      phone: order.phone,
    });
    if (fraudMatch.known) {
      risks.push({ factor: "KNOWN_FRAUD_SIGNAL", score: 80, detail: fraudMatch.reason });
    }

    const totalRiskScore = risks.reduce((sum, r) => sum + r.score, 0);
    const recommendation = totalRiskScore >= 80 ? "cancel"
      : totalRiskScore >= 40 ? "hold-for-review"
      : "approve";

    return { recommendation, riskScore: totalRiskScore, risks };
  },
});

在庫管理エージェント: 在庫切れも過剰在庫もありません

在庫エージェントは、すべての拠点の Shopify 在庫レベルを監視し、在庫切れが発生する前に補充を調整します。

主な行動:

在庫不足アラート: 製品の在庫が再注文ポイントを下回ると、エージェントは注文書 (サプライヤーから調達される製品の場合) または転送リクエスト (別の場所で入手可能な製品の場合) のいずれかの補充タスクを作成します。

店頭管理: 在庫が極めて低いレベルに達すると、エージェントは商品の店頭メッセージ (「残り 3 個だけ!」) を更新して緊急性を高めます。製品の在庫が切れた場合、更新された配達予定日とともに「販売を継続する」ように設定したり、ポリシーが設定されている場合には製品を非表示にしたりすることができます。

季節調整: 需要の高い期間 (休日、プロモーション イベント) の前に、エージェントは前年の過去の需要パターンに基づいて再注文ポイントを上方調整します。

export const ManageInventoryLevel = defineSkill({
  name: "manage-inventory-level",
  tools: ["shopify"],
  async run({ input, tools }) {
    const product = await tools.shopify.get(`/products/${input.productId}.json`);
    const level = await tools.shopify.get(
      `/inventory_levels.json?inventory_item_ids=${product.variants.map(v => v.inventory_item_id).join(",")}`
    );

    const totalAvailable = level.inventory_levels.reduce((sum, l) => sum + l.available, 0);

    if (totalAvailable <= input.reorderPoint && totalAvailable > 0) {
      // Low stock — update storefront
      await tools.shopify.put(`/products/${input.productId}.json`, {
        product: { metafields: [{ namespace: "inventory", key: "stock_urgency", value: `Only ${totalAvailable} left in stock!` }] },
      });
      return { action: "LOW_STOCK_FLAGGED", available: totalAvailable };
    }

    if (totalAvailable === 0) {
      await tools.shopify.put(`/variants/${product.variants[0].id}.json`, {
        variant: { inventory_policy: "continue", inventory_management: "shopify" },
      });
      return { action: "OUT_OF_STOCK_CONTINUE_SELLING", available: 0 };
    }

    return { action: "NONE", available: totalAvailable };
  },
});

カスタマー サービス エージェント: ブランドボイスへの大規模な対応

カスタマー サービス エージェントは、サポート チケット量の 80% 以上を占める上位 5 つの顧客問い合わせタイプを処理します。

  1. 注文ステータス: Shopify に注文をクエリし、現在のステータス、追跡リンク、配送予定情報を返します。
  2. 返品の開始: 返品ポリシーに照らして返品資格を検証し、返品承認を生成し、返品配送ラベルを送信します。
  3. 製品に関する質問: 製品の FAQ と説明を検索して、購入前の質問に答えます。
  4. 注文のキャンセル: フルフィルメントに入っていない注文をキャンセルします。履行された注文については、返品プロセスを開始します。
  5. 再発送リクエスト: 紛失または破損した荷物の場合は、交換注文を作成し、運送業者への請求を開始します。

応答は、構成可能なシステム プロンプトを使用してブランドの声で生成されます。応答テンプレートの A/B テストは、エージェントの構成を通じてサポートされます。


パーソナライゼーション エージェント: すべての顧客が独自のエクスペリエンスを得ることができます

Personalization Agent は、購入履歴、閲覧データ (Shopify の Customer Events API 経由)、およびサポート インタラクションから個々の顧客プロファイルを構築します。これらのプロファイルを使用して以下を生成します。

製品の推奨事項: 購入後の電子メールと店頭の推奨ウィジェットでは、エージェントは顧客の購入履歴を補完し、価格感度に一致する製品を選択します。

カートの回復: 放棄されたカートの場合、エージェントは顧客の履歴に基づいてタイミング、メッセージの内容、および割引オファーを選択します。以前に購入したことのある高額顧客には、1 品目を追加した初めての買い物客とは異なるメッセージが表示されます。

ロイヤルティ セグメンテーション: 顧客をライフサイクル セグメント (新規、アクティブ、リスク中、失効) で自動的にタグ付けし、適切な保持シーケンスをトリガーします。 90 日間購入していない「リスクのある」顧客には、返金キャンペーンが適用されます。最初の購入を完了したばかりの「新規」顧客には、オンボーディング シーケンスが適用されます。


返品と返金の自動化

返品を手動で処理するにはコストがかかります。返品エージェントは返品ライフサイクル全体を処理します。

  1. お客様はフォームまたはサポート チケットを通じて返品リクエストを送信します。
  2. エージェントが適格性を検証します。返品期間内であれば、商品は返品可能カテゴリであり、不正品としてフラグが立てられていません。
  3. エージェントは返品承認 (RMA) を生成し、前払いの返品ラベルを送信します。
  4. 配送業者が返送荷物をスキャンすると、担当者は顧客に通知します。
  5. 返品が受け取られ、倉庫で検査されると、エージェントは Shopify で自動的に返金を処理します。
  6. 返品された商品が破損していた場合、エージェントは自動返金ではなく、商品を紛争ワークフローに送ります。

よくある質問

OpenClaw は、注文量が多い場合に Shopify の API レート制限をどのように処理しますか?

Shopify ツール アダプターは、X-Shopify-Shop-Api-Call-Limit 応答ヘッダーを使用して残りの API バケット サイズを追跡するリーキー バケット レート リミッターを実装します。優先度の高い操作 (注文確認 Webhook 処理) には、バケットへの優先アクセスが与えられます。緊急ではない操作 (分析クエリ、レポート生成) はキューに入れられ、トラフィックの少ない時間帯に実行されます。 REST API の制限を超えるストアの場合、エージェントは GraphQL API に切り替えることができます。これは、より効率的なバッチ クエリを可能にするコストベースのレート制限モデルを使用します。

誤検知を減らすように不正検出エージェントを調整できますか?

はい。リスク要因の重みと承認/保留/キャンセルのしきい値は完全に構成可能です。最初の導入後、ECOSIRE は調整サービスを提供します。最初の 30 日間の不正行為スクリーニングの決定を実際のチャージバック結果と比較して分析し、重みを調整します。販売者は、信頼できるリピート顧客や、モデルが誤ってフラグを立てた特定の注文パターンに対して手動のホワイトリスト ルールを作成することもできます。

Shopify の停止または Webhook 配信の失敗時に何が起こるのですか?

Shopify は、指数バックオフを使用して、失敗した Webhook 配信を 48 時間再試行します。 OpenClaw の Webhook ハンドラーは冪等になるように設計されており、同じ Webhook を複数回受信しても、アクションが重複するのではなく、同じ結果が生成されます。 Webhook 配信が完全に失敗するシナリオのために、OpenClaw には、作成されたものの Webhook が受信されなかった未処理の注文がないか Shopify Orders API をポーリングする調整ジョブが含まれています。

パーソナライゼーション エージェントは、顧客ベースが小規模な店舗でも機能しますか?

コールド スタートは、小規模な顧客ベースのパーソナライゼーションにおける主な課題です。新規顧客 (注文が 3 件未満) の場合、エージェントは個々の履歴ではなく、カテゴリベースのベストセラーの推奨事項に戻ります。顧客が購入履歴を蓄積するにつれて、パーソナライゼーションはより正確になります。このエージェントは、少なくとも 1,000 人のアクティブな顧客と 90 日間の注文履歴がある店舗に最も効果的です。

自動化は Shopify Flow と併用できますか?

はい。 OpenClaw は Shopify Flow オートメーションと競合しません。推奨されるパターンは、Shopify エコシステム内の単純なルールベースの自動化 (顧客のタグ付け、基本的なメールの送信) には Shopify Flow を使用し、推論、外部 API 呼び出し、または複数ステップの意思決定ロジックを必要とする複雑なクロスシステム自動化には OpenClaw を使用することです。 OpenClaw は、必要に応じて Shopify API を通じて Shopify Flow ワークフローをトリガーすることもできます。


次のステップ

OpenClaw オートメーションを実行する Shopify ストアは、手動操作で実行するビジネスとは根本的に異なります。注文処理は数時間ではなく数秒で行われます。不正行為は履行前に発見されます。在庫が黙って在庫切れになることはありません。顧客はいつでも即座に正確な応答を得ることができます。

ECOSIRE の OpenClaw Shopify 統合サービス は、製品カテゴリに合わせて調整された不正検出、倉庫ネットワークに設定されたフルフィルメント ルーティング、ブランド ボイスに基づいてトレーニングされたカスタマー サービス エージェント、顧客データから構築されたパーソナライゼーション モデルなど、完全な自動化スタックを提供します。

ECOSIRE にお問い合わせ して、Shopify 自動化の評価と実装のロードマップを入手してください。

E

執筆者

ECOSIRE Research and Development Team

ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。

WhatsAppでチャット