---
title: "Shopify 連携ガイド | Tajo"
description: "Tajo が Shopify ストアを Brevo に接続する仕組み。Shopify アプリの Webhook 同期、エージェントが作成し人が承認する同期ルール、そして Shopify の MCP ツールを解説します。"
url: https://tajo.io/jp/docs/ecommerce-platforms/shopify/
markdown: https://tajo.io/jp/docs/ecommerce-platforms/shopify.md
lang: ja-JP
author: "Set Noa"
author_url: https://tajo.io/jp/set-noa/
robots: noindex
---

先行利用を申し込む

お名前と会社のメールアドレスを入力してください。Tajoへのアクセス申請を確認するためのリンクをメールでお送りします。

# Shopify 連携ガイド

[Set Noa](https://tajo.io/jp/set-noa/)

Tajo は 2 つの仕組みで Shopify を Brevo に接続します。Tajo の Shopify アプリは、届いた Shopify Webhook をその都度 Brevo への書き込みに変換します。エージェントが作成し人が承認する同期ルールは、スケジュールに沿ってレコードを Brevo に移します。このページでは両方を説明し、続いて Tajo が MCP で提供する Shopify ツールを紹介します。

## 前提条件

連携を始める前に、次のものを用意してください。

- いずれかのプランの **Shopify ストア**（Basic、Shopify、Advanced、Plus）
- **Tajo アカウント**（Tajo はアーリーアクセス版です）
- 同期先となる **Brevo アカウント**
- Shopify ストアの**管理者権限**

## ステップ 1: Shopify ストアを接続する

Tajo はアーリーアクセス版です。Shopify アプリは Shopify アプリストアに掲載されておらず、セルフサービスのインストールリンクもありません。セットアップについては[チームにお問い合わせ](https://tajo.io/jp/contact)ください。Tajo のワークスペースの準備ができたら、次の手順に進みます。

1. Tajo で **Connections** を開きます。
2. ストアの myshopify.com ドメインを入力し、**Connect Shopify** を選びます。Shopify に Tajo がリクエストするスコープが表示され、承認すると Tajo に戻ります。
3. 各スコープの用途と、Tajo が Shopify に書き戻す内容については、[Shopify 権限の解説](https://tajo.io/jp/resources/help/integrations/shopify-permissions-explained/)を参照してください。

## ステップ 2: Tajo の Shopify アプリが Brevo に送るもの

アプリは各 Shopify Webhook を検証して保存し、キューに入れてすぐに処理します。顧客と商品のトピックは、処理の前に約 4 秒待機します。バッチの待ち時間はありません。失敗したジョブは、間隔を空けながら再試行されます。

### Webhook トピック

Tajo の Shopify アプリは、次の Shopify Webhook トピックをサブスクライブします。

| Webhook トピック | 用途 |
| --- | --- |
| `customers/create`, `customers/update`, `customers/delete` | Brevo のコンタクトを最新の状態に保ちます |
| `orders/create`, `orders/updated`, `orders/fulfilled`, `orders/cancelled` | Brevo 向けの注文イベントと注文指標 |
| `orders/paid`, `refunds/create` | ロイヤルティポイントの付与と差し引き |
| `checkouts/create`, `checkouts/update` | Brevo での放棄チェックアウトの回復 |
| `products/create`, `products/update`, `products/delete` | Brevo の商品カタログを最新の状態に保ちます |
| `inventory_levels/update` | Brevo の商品在庫を最新の状態に保ちます |
| `collections/create`, `collections/update`, `collections/delete` | コレクションを最新の状態に保ちます |
| `companies/*`, `company_contacts/*`, `company_locations/*`（create、update、delete） | B2B 企業の同期 |
| `app/uninstalled`, `app/scopes_update`, `app_subscriptions/update` | アプリのライフサイクル |

Shopify の必須プライバシー Webhook（顧客データのリクエスト、顧客データの削除、ショップデータの削除）にも対応しています。アプリは `carts/*` をサブスクライブしません。放棄カートは `checkouts/*` トピックから取得されます。

Brevo に届く内容は次のとおりです。

| Shopify のイベント | Brevo での結果 |
| --- | --- |
| 顧客の作成または更新 | 名前、メールアドレス、マーケティング同意とともにコンタクトが作成または更新されます。有料プランでは、アプリがタグ、注文数、購入金額、最終注文も追加します。 |
| 顧客の削除 | コンタクトは削除されず、配信停止になります |
| 注文の作成、更新、支払い、発送、キャンセル | Brevo の注文 API を通じた注文と、イベント `order_paid`、`order_completed`、`order_cancelled` |
| 返金の作成 | イベント `order_refunded`。Tajo で Brevo のロイヤルティプログラムを運用している場合は、ポイントが比例して差し引かれます。 |
| 注文の支払い（Brevo のロイヤルティプログラムがある場合） | 設定した 1 ドルあたりのポイント率でポイントが付与されます |
| メールアドレスと商品を含むチェックアウトの作成または更新 | イベント `cart_updated` と `cart_abandoned`。送信のタイミングは Brevo のオートメーションが決めます。 |
| 商品またはコレクションの作成、更新、削除 | Brevo の商品カタログとカテゴリ |
| 在庫レベルの更新 | Brevo のカタログ上の商品在庫。バリアントの在庫が 0 から 1 以上に戻ると、通知を希望した各購入者に `back_in_stock` イベントが入荷 1 回につき 1 回届きます。 |

アプリはテーマに「入荷通知」ボタンを追加しません。再入荷のリクエストは、たとえば独自に追加したボタンなど、ストアフロントから送る必要があります。

### 既存のデータ

インストール時に、アプリは既存の顧客を Brevo のコンタクトとしてインポートします。過去データの完全な同期は、アプリの同期ページから開始します。有料プランでは、商品、コレクション、企業、注文もインポートします。

## ステップ 3: エージェントで同期ルールを作成する

同期ルールは、1 つの同期を宣言的に定義したものです。ソースのリソース、Brevo のアクション、フィールドマップ、フィルターで構成されます。手で書く必要はありません。内容を説明すればエージェントが作成し、人が承認します。

1. Tajo で **Agents** を開き、**Brevo Integration Architect** に行いたい同期を普段の言葉で依頼します。例:「メールマーケティングに同意した Shopify の顧客を、コンタクトとして Brevo に送って」。
2. エージェントが Shopify コネクターを調べます。サンプルが返すのはフィールド名と型だけで、顧客の値は返しません。
3. フィールドマップとフィルターを含むルールを提案し、フィールドマップを Brevo のアクションに照らして検証したうえで、下書きをドライランします。どちらのステップも顧客レコードは読み取りません。
4. ルールを下書きとして保存します。**Connections > Syncs and mappings > New sync from template** のテンプレートから始めることもできます。
5. **Request publish approval** を押すと、ストアに対してプレビューが実行されます。読み取るのは最大 10 件のレコードで、Brevo には何も書き込まず、カーソルも動かしません。記録されるのは件数だけです。取得したレコード、対象になったレコード、マッピングされたレコード、フィルターで除外されたレコードの数と、マッピングエラーです。プレビューが失敗した場合、承認リクエストは作成されません。
6. 人が **Approvals** ページで、理由を書き添えてリクエストを承認します。承認はルールの SHA-256 ダイジェストに結び付けられ、30 分で失効します。その後、ルールのページに **Publish approved version** が表示されます。

公開済みのルールを編集すると、下書きに戻ります。再び実行されるまでに、もう一度プレビューと承認を経ます。

### 実際のルール

Tajo が定義している **Shopify customers -> Brevo contacts** テンプレートは次のとおりです。

```ts
sourceSlug: "shopify",
sourceResource: "customers",
destinationSlug: "brevo",
destinationAction: "upsert_contact",
fieldMap: [
  { source: "email", destination: "email", transform: "toLowerCase" },
  { source: "first_name", destination: "attributes.FIRSTNAME" },
  { source: "last_name", destination: "attributes.LASTNAME" },
  { source: "phone", destination: "attributes.PHONE" },
  { source: "total_spent", destination: "attributes.TOTAL_SPENT", transform: "toNumber" },
  { source: "orders_count", destination: "attributes.ORDERS_COUNT", transform: "toNumber" },
  { source: "tajo_email_marketing_consent", destination: "attributes.OPT_IN", transform: "toBoolean" },
  { source: "tags", destination: "attributes.SHOPIFY_TAGS" },
  { source: "id", destination: "attributes.SHOPIFY_ID", transform: "toString" },
  { source: "created_at", destination: "attributes.SHOPIFY_CREATED_AT" },
  { source: "updated_at", destination: "attributes.SHOPIFY_UPDATED_AT" },
],
filterExpression:
  "($json.tajo_email_marketing_consent === true) && ($json.tajo_email_suppressed === false)",
```

このフィルターが同意のチェックです。Tajo は両方の値を Shopify の `email_marketing_consent.state`、または従来の `accepts_marketing` フラグから導き出します。コンタクトを Brevo に書き込むルールは、このフィルターがなければ公開できません。もう 1 つの Shopify テンプレート **Shopify orders → Brevo orders** は、チェックアウト時にマーケティングに同意した購入者の注文を Brevo に記録します。

### ルールが実行されるタイミング

- コンタクトの同期ルールは、デフォルトで 15 分ごとに実行されます。各実行はルールのカーソルから始まります。
- 有効なルールのページには **Test run (1 batch)** ボタンがあります。
- 有効で公開済みの **Shopify orders → Brevo orders** ルールも 15 分ごとに実行されます。最初のスケジュール実行はその時点の数分前から始まり、それより古い注文は送りません。以降の各実行では、前回の実行以降に更新された注文を送ります。
- 過去の注文が Brevo に送られるのは、ルールを自分で実行したときだけです。**Test run (1 batch)** を使うか、**Sync Operator** エージェントに実行を依頼してください。
- 注文ルールがスケジュールどおりに実行されるのは、テンプレートの購入者マーケティングのオプトインフィルターがある場合だけです。フィルターを編集したルールは、自分で開始したときにだけ実行されます。
- 実行が 5 回続けて失敗すると、ルールは自動的に一時停止し、ページに最後のエラーが表示されます。原因を修正してから、もう一度公開してください。

各実行はルールの実行履歴に、読み取り、書き込み、失敗したレコード数と所要時間とともに記録されます。

## Shopify コネクターが読み取るものと書き込むもの

同期ルールが書き込むのは同期先、ここでは Brevo だけです。Shopify に書き込むことはありません。

Tajo の Shopify アプリは 12 のスコープをリクエストし、同意のオプトアウトやロイヤルティタグなど、限られた書き込みを Shopify に行います。[Shopify 権限の解説](https://tajo.io/jp/resources/help/integrations/shopify-permissions-explained/)に、すべてのスコープとすべての書き込みを、そのきっかけとともに掲載しています。

エージェントと MCP ホストは、Shopify コネクターを通じてストアにアクセスします。

| 読み取り | 書き込み |
| --- | --- |
| ショップの詳細、顧客（一覧と検索）、注文、商品、顧客のメタフィールド、在庫レベル、一括エクスポートの状態 | 顧客のメタフィールドと顧客タグ、一括エクスポートの開始。各書き込みは提案として準備され、承認された後にのみ実行されます。 |

コネクターは在庫の調整も宣言しています。これには `write_inventory` スコープが必要ですが、Tajo の Shopify アプリはこのスコープをリクエストしません。

## ステップ 4: MCP で Shopify ツールを使う

Tajo は Shopify コネクターを MCP サーバーとして `https://alto.tajo.io/mcp/connectors/shopify` で提供しています。Claude Code に追加するには次のコマンドを実行します。

```bash
claude mcp add --transport http tajo-shopify https://alto.tajo.io/mcp/connectors/shopify
```

ホストが Tajo の OAuth サーバーを検出し、Tajo のログイン画面を開きます。アクセスできるのはアーリーアクセスのアカウントに限られます。サーバーは 12 のツールを公開しています。

| ツール | 機能 |
| --- | --- |
| `preview_tajo_shopify_app` | Tajo の Shopify アプリのインタラクティブなプレビュー（MCP UI として表示） |
| `get_shop` | ショップの詳細 |
| `search_customers` | `tag:tajo-vip` や `total_spent:>100` などの Shopify クエリ構文で顧客を検索します |
| `list_customers` | 顧客の一覧（ページ分割） |
| `list_orders` | 注文の一覧（ページ分割） |
| `list_products` | バリアント、画像、在庫を含む商品の一覧 |
| `get_customer_metafields` | 顧客のメタフィールドを読み取ります |
| `get_inventory_levels` | バリアントのロケーションごとの在庫を読み取ります |
| `poll_bulk_export` | 一括エクスポートを確認し、完了したらダウンロードリンクを取得します |
| `calculate_rewards_profile` | 同期済みのコマースデータから、顧客のティア、ポイント、特典残高を計算します |
| `shopify_propose` | Shopify への書き込みを 1 件、提案として準備します。何も送信されません。 |
| `shopify_apply` | 承認された提案を実行します |

## トラブルシューティング

- Brevo にコンタクトが表示されない場合は、[Brevo にコンタクトがない](https://tajo.io/jp/resources/help/troubleshooting/contacts-missing-in-brevo/)を参照してください。
- ルールが実行されない、または自動的に一時停止した場合は、[データが同期されない](https://tajo.io/jp/resources/help/troubleshooting/data-not-syncing/)を参照してください。

## 次のステップ

- [データ同期を理解する](https://tajo.io/jp/resources/help/getting-started/understanding-data-sync/): 同期ルールの動作
- [Shopify 権限の解説](https://tajo.io/jp/resources/help/integrations/shopify-permissions-explained/): すべてのスコープとすべての書き込み
- [Shopify + Brevo](https://tajo.io/jp/docs/integrations/shopify-brevo): 連携ガイド
- セットアップについては[チームにお問い合わせ](https://tajo.io/jp/contact)ください
