Shopify 連携ガイド
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 アプリストアに掲載されておらず、セルフサービスのインストールリンクもありません。セットアップについてはチームにお問い合わせください。Tajo のワークスペースの準備ができたら、次の手順に進みます。
- Tajo で Connections を開きます。
- ストアの myshopify.com ドメインを入力し、Connect Shopify を選びます。Shopify に Tajo がリクエストするスコープが表示され、承認すると Tajo に戻ります。
- 各スコープの用途と、Tajo が Shopify に書き戻す内容については、Shopify 権限の解説を参照してください。
ステップ 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 のアクション、フィールドマップ、フィルターで構成されます。手で書く必要はありません。内容を説明すればエージェントが作成し、人が承認します。
- Tajo で Agents を開き、Brevo Integration Architect に行いたい同期を普段の言葉で依頼します。例:「メールマーケティングに同意した Shopify の顧客を、コンタクトとして Brevo に送って」。
- エージェントが Shopify コネクターを調べます。サンプルが返すのはフィールド名と型だけで、顧客の値は返しません。
- フィールドマップとフィルターを含むルールを提案し、フィールドマップを Brevo のアクションに照らして検証したうえで、下書きをドライランします。どちらのステップも顧客レコードは読み取りません。
- ルールを下書きとして保存します。Connections > Syncs and mappings > New sync from template のテンプレートから始めることもできます。
- Request publish approval を押すと、ストアに対してプレビューが実行されます。読み取るのは最大 10 件のレコードで、Brevo には何も書き込まず、カーソルも動かしません。記録されるのは件数だけです。取得したレコード、対象になったレコード、マッピングされたレコード、フィルターで除外されたレコードの数と、マッピングエラーです。プレビューが失敗した場合、承認リクエストは作成されません。
- 人が Approvals ページで、理由を書き添えてリクエストを承認します。承認はルールの SHA-256 ダイジェストに結び付けられ、30 分で失効します。その後、ルールのページに Publish approved version が表示されます。
公開済みのルールを編集すると、下書きに戻ります。再び実行されるまでに、もう一度プレビューと承認を経ます。
実際のルール
Tajo が定義している Shopify customers -> Brevo contacts テンプレートは次のとおりです。
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 権限の解説に、すべてのスコープとすべての書き込みを、そのきっかけとともに掲載しています。
エージェントと MCP ホストは、Shopify コネクターを通じてストアにアクセスします。
| 読み取り | 書き込み |
|---|---|
| ショップの詳細、顧客(一覧と検索)、注文、商品、顧客のメタフィールド、在庫レベル、一括エクスポートの状態 | 顧客のメタフィールドと顧客タグ、一括エクスポートの開始。各書き込みは提案として準備され、承認された後にのみ実行されます。 |
コネクターは在庫の調整も宣言しています。これには write_inventory スコープが必要ですが、Tajo の Shopify アプリはこのスコープをリクエストしません。
ステップ 4: MCP で Shopify ツールを使う
Tajo は Shopify コネクターを MCP サーバーとして https://alto.tajo.io/mcp/connectors/shopify で提供しています。Claude Code に追加するには次のコマンドを実行します。
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 にコンタクトがないを参照してください。
- ルールが実行されない、または自動的に一時停止した場合は、データが同期されないを参照してください。
次のステップ
- データ同期を理解する: 同期ルールの動作
- Shopify 権限の解説: すべてのスコープとすべての書き込み
- Shopify + Brevo: 連携ガイド
- セットアップについてはチームにお問い合わせください