> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 戦略の作成

> Aftersellダッシュボードから戦略を作成、設定、管理できます — コードは不要です。

<div id="overview">
  ## 概要
</div>

Aftersellダッシュボードは、戦略(Strategies)を構築・管理するためのビジュアルインターフェースを提供します。戦略の作成、トリガーによるターゲティングルールの定義、おすすめする商品の割り当て、キャッチオール動作の設定を、コードを一切書かずに行えます。

このガイドでは、UIで戦略を作成するエンドツーエンドのプロセスを順を追って説明します。

***

<div id="navigating-to-strategies">
  ## 戦略への移動
</div>

1. Aftersellにログインします。
2. 左サイドバーのナビゲーションで**Strategies**をクリックします。
3. 既存の戦略の一覧が表示されるか、最初の戦略の作成を促す空の状態が表示されます。

***

<div id="creating-a-new-strategy">
  ## 新しい戦略を作成する
</div>

1. **Add Strategy**をクリックします。
2. ルールを追加できる戦略エディターに移動します。

<Tip>
  戦略エディターの左上にある**鉛筆アイコン**をクリックして、戦略にわかりやすい名前を付けましょう。明確な名前を付けておくと、後でダッシュボードで戦略を識別しやすくなります。
</Tip>

***

<div id="adding-rules">
  ## ルールの追加
</div>

各戦略には1つ以上の**ルール**が含まれます。ルールは次の要素で構成されます。

* **トリガー** — 「いつ」の部分。ルールがマッチするために満たす必要がある条件です。
* **アクション** — 「その場合」の部分。ルールがマッチしたときに返される体験です。

<div id="defining-triggers">
  ### トリガーを定義する
</div>

トリガーは、ルールがいつ発火するかを決定します。1つのルールで最大5つのトリガーを組み合わせられます。**AND** / **OR**の切り替えは条件セット全体に適用されます。**AND**の場合はすべてのトリガーがマッチする必要があり、**OR**の場合はいずれか1つのトリガーがマッチすれば十分です。利用可能なトリガータイプは次のとおりです。

<div id="product-triggers">
  #### 商品トリガー
</div>

コンテキスト内の商品(ショッパーのカート、完了直後の注文、または閲覧中の商品)に基づいてターゲティングします。

* **Specific product(s)** — IDで特定のShopify商品にマッチします
* **Collection** — 特定のコレクションに属する商品にマッチします
* **Tag(s)** — 特定のタグ(例: 「sale」「summer」)を持つ商品にマッチします
* **Title** — 商品タイトルにマッチします
* **Vendor** — 販売元/ブランド名にマッチします
* **Type** — 商品タイプのフィールド(例: 「Apparel」「Electronics」)にマッチします
* **Handle** — 商品URLのスラッグにマッチします
* **Metafield** — カスタムメタフィールドのnamespace/key/valueのペアにマッチします
* **Selling plan** — 「subscription」または「one-time」の商品にマッチします。リクエストコンテキストが商品の販売プランを提供する場合にのみ評価されます。Aftersellのチェックアウトおよび購入後アップセルのサーフェスではこれが送信されないため、カスタム連携で明示的に提供しない限り、そこではこのトリガーはマッチしません

<div id="customer-triggers">
  #### 顧客トリガー
</div>

ショッパーが誰であるかに基づいてターゲティングします。

* **Customer tag** — 例: 「VIP」「loyalty-gold」
* **Country code** — 請求先の国
* **Province code** — 請求先の州/都道府県
* **Locale** — 顧客のロケール(例: 「en-US」)
* **Accepts marketing** — マーケティングのオプトイン状態
* **Order count** — 過去の注文数
* **Total spent** — 累計購入額

<div id="cart-triggers">
  #### カートトリガー
</div>

カート全体の状態に基づいてターゲティングします。

* **Cart subtotal** — 例: 小計が\$50超
* **Item count** — カート内の商品の合計数量
* **Line count** — 個別のラインアイテムの数
* **Cart attribute** — ShopifyのカートAPI経由で設定されたカスタムカート属性
* **Cart note** — カートメモのフィールド

<div id="location-triggers">
  #### ロケーショントリガー
</div>

ショッパーの配送先とストアの通貨に基づいてターゲティングします。

* **Shipping country** — 配送先の国
* **Shipping province** — 配送先の州/都道府県
* **Shipping method** — 選択された配送方法
* **Store currency** — 有効なストア通貨コード

<div id="marketing-triggers">
  #### マーケティングトリガー
</div>

ショッパーが到着したページURLに基づいてターゲティングします。

* **URL** — ランディングURLの部分文字列にマッチします。URLに埋め込まれたパラメーター(例: `utm_source=newsletter`)にマッチさせることで、特定のキャンペーンやチャネルをターゲティングできます

<div id="time-triggers">
  #### 時間トリガー
</div>

リクエストが評価される時点(ストアの時間)に基づいてターゲティングします。

* **Day of week** — 現在の曜日
* **Hour of day** — 現在の時刻(時)

<div id="dynamic-triggers">
  #### 動的トリガー
</div>

* **Always match** — 条件を持たず常に発火するトリガーです。すべてのリクエストでルールを実行させたい場合に使用します(すべてのリクエストで発火する点で、他のルールがどれもマッチしなかった場合にのみ発火する戦略レベルの[キャッチオール](#configuring-a-catch-all)とは異なります)。

<Note>
  すべてのトリガーがすべてのサーフェスで値を持つわけではありません。たとえばチェックアウトは商品とカートのコンテキストのみを送信するため、顧客、ロケーション、マーケティングのトリガーはそこではマッチしません。各サーフェスが送信する内容については、[戦略の実装](/ja/aftersell/implementing_strategies_post_purchase_upsells)ガイドを参照してください。
</Note>

<div id="operators">
  #### 演算子
</div>

各トリガーは、値のマッチ方法を定義する**演算子**を使用します。利用可能な演算子はトリガータイプによって異なります。

| 演算子                          | 説明                                                                     |
| ---------------------------- | ---------------------------------------------------------------------- |
| **Equals**                   | フィールドが指定した値と完全に一致する場合にマッチします — 例: ベンダーが「Nike」と等しい。                     |
| **Does not equal**           | フィールドが指定した値以外である場合にマッチします — 特定の商品タイプやベンダーを除外する際に便利です。                  |
| **Contains any**             | 複数値フィールドがリスト内の少なくとも1つの値を含む場合にマッチします — 例: 商品が複数のコレクションのいずれかに属している。      |
| **Does not contain any**     | 複数値フィールドがリスト内のどの値も含まない場合にマッチします — 例: 「final-sale」タグの付いた商品を除外する。        |
| **Contains all**             | 複数値フィールドがリスト内のすべての値を含む場合にマッチします — 例: 商品が「sale」と「summer」の両方のタグを持つ必要がある。 |
| **Does not contain all**     | 複数値フィールドがリスト内の値の少なくとも1つを欠いている場合にマッチします。                                |
| **Contains**                 | テキストフィールドが指定した値を部分文字列として含む場合にマッチします — 例: タイトルが「Gift」を含む。               |
| **Does not contain**         | テキストフィールドが指定した値を含まない場合にマッチします。                                         |
| **Greater than**             | 数値フィールドが指定した値を超える場合にマッチします — 例: カート小計が\$75超。                           |
| **Less than**                | 数値フィールドが指定した値未満の場合にマッチします — 例: 注文数が2未満(初回購入者)。                         |
| **Greater than or equal to** | 数値フィールドが指定した値以上の場合にマッチします — 例: 累計購入額が\$500以上。                          |
| **Less than or equal to**    | 数値フィールドが指定した値以下の場合にマッチします — 例: カートの商品点数が3以下。                           |

すべての演算子がすべてのトリガーで利用できるわけではありません。

* **リスト演算子**(**Contains any / all**とその否定形)は、タグ、コレクション、顧客タグ、特定商品などの複数値フィールドに適用されます。
* **テキスト演算子**(**Equals**、**Contains**とその否定形)は、タイトル、ベンダー、ハンドル、ロケール、国、URLなどの単一値のテキストフィールドに適用されます。
* **数値演算子**は、カート小計、商品点数、ライン数、注文数、累計購入額、時刻(時)などのフィールドに適用されます。数値演算子には「does not」のバリエーションはありません。
* 一部のフィールド(販売プラン、曜日、マーケティング許諾)は**Equals**と**Does not equal**のみをサポートします。

<div id="defining-actions">
  ### アクションを定義する
</div>

アクションは、顧客に届けたい体験を作り出します。ここで、どの商品を表示するか、どのように表示するか、あわせて渡す追加データを決定します。1つのルールに複数のアクションを組み合わせて設定し、完全な体験を構築できます。

ルールごとに、設定されたすべてのアクションが1つの結合されたプールに寄与します。たとえば、特定商品アクション、コレクションアクション、タグベースのアクションを持つルールは、3つのソースすべてから商品をまとめて返します。商品が複数のソースにマッチする場合は、重複が排除されます。

<div id="product-actions">
  #### 商品アクション
</div>

トリガー側で利用できる商品属性は、アクションの定義時にも利用できます。次に基づいて商品を返すことができます。

* **Specific products** — Shopifyカタログから個々の商品を手動で選択します。
* **Collection** — 特定のコレクションに属するすべての商品を返します。
* **Product attributes** — タグ、ベンダー、商品タイプ、メタフィールドなど、トリガーで使用されるのと同じ属性タイプの条件にマッチする商品を返します。

<div id="dynamic-actions">
  #### 動的アクション
</div>

動的アクションは、固定の商品リストではなくリアルタイムのシグナルに基づいて、返される内容を変化させます。利用可能な動的アクションタイプは次のとおりです。

* **Most popular** — 販売数量に基づくストアの売れ筋商品。ストア全体またはコレクションに限定できます。
* **Recently purchased** — ストア全体で最近購入された商品。
* **Inherit from when** — ルール自身のトリガー(「いつ」の部分)を商品セレクターとして再利用し、ルールが発火したのと同じ条件にマッチする商品を返します。
* **AI Recommendations** — Aftersellのレコメンデーションモデルが生成するパーソナライズされた提案。

<div id="filtering-actions">
  #### フィルタリングアクション
</div>

商品プールが組み立てられたら、返される商品の数と順序を設定できます。

* **Sort** — どの商品が選択されるかを制御します:
  * **Random** — ランダムに選択します。
  * **Price: high → low** — 最も高価な商品から順に返します。
  * **Price: low → high** — 最も安価な商品から順に返します。
* **Amount/Limit** — 返される商品の最大数を設定します。

<Info>
  まずSortが適用され、その後にAmount/Limitが適用されます。たとえばソートが**Random**に設定されている場合、制限が適用される前に商品プール全体がランダム化されます — そのため、同じ商品がランダムな順序で返されるのではなく、常にランダムな一部が返されます。
</Info>

<div id="key-value-actions">
  #### キーバリューアクション
</div>

必要に応じて、ルールにキーと値のペアを添付できます。ルールがマッチすると、これらは商品結果とともにAPIレスポンスの`meta.data`で返されます。よくある用途は次のとおりです。

* プロモーションバナーのテキスト
* アナリティクス用のキャンペーンラベル

<Note>
  複数のルールがマッチして同じキーを出力する場合、最初にマッチしたルールの値が優先されます — 後のルールはそれを上書きできません。
</Note>

***

<div id="rule-priority-and-evaluation-order">
  ## ルールの優先順位と評価順序
</div>

戦略内のルールは、階層的かつ順次的なステップで評価されます。ステップ1が最初に評価され、以降も順番に評価されます。戦略エディターでルールをドラッグアンドドロップして並べ替えられます。評価エンジンは次の処理を行います。

1. 提供されたコンテキストに対して各ルールのトリガーを評価します。
2. マッチしたすべてのルールから商品を収集します。
3. 重複を排除し、結果を設定された最大数(デフォルト: 20商品)に制限します。

***

<div id="configuring-a-catch-all">
  ## キャッチオールを設定する
</div>

キャッチオールは、すべての戦略評価の最終ステップとして機能する特別なルールです。トリガーを持たず、戦略内の他のどのルールも現在のリクエストにマッチしなかった場合に自動的に発火します。

有効にすると、キャッチオールによりレコメンデーション枠が空になることがなくなります。そのアクションは、通常のルールで利用できるのと同じアクションタイプ — 特定商品、コレクション、動的アクションなど — を使って設定できます。

* **Enable/disable** — 戦略に対してキャッチオールルールのオン/オフを切り替えます。無効の場合、どのルールにもマッチしないリクエストは空の結果を返します。
* **Configure actions** — 他のルールと同様に、利用可能なアクションタイプを任意に組み合わせて、返す内容を定義します。

キャッチオールが発火すると、APIレスポンスに`resolution.fallbackUsed: true`が示されます。

***

<div id="global-filters">
  ## グローバルフィルター
</div>

グローバルフィルターは、戦略内のすべてのルールにわたって、選択対象から商品を除外します。戦略エディターの左上にある戦略名の横の**フィルターアイコン**からアクセスできます。

利用可能なグローバルフィルター:

* **Exclude out of stock** — 現在購入できない商品を自動的に除外します。
* **Exclude input products** — ルールを発火させた商品(例: ショッパーがPDPで現在閲覧している商品)を除外し、ショッパーがすでに見ている商品をおすすめしないようにします。
* **Exclude by product tag** — 特定のタグが付いた商品を除外します。
* **Exclude by metafield** — 特定のメタフィールドのnamespace/key/valueにマッチする商品を除外します。
* **Exclude by product ID** — IDで特定の商品を除外します。
* **Require stock at location** — 選択したロケーションで利用可能な在庫がある商品のみを残します(在庫とロケーションの読み取り権限が必要です)。

***

<div id="validation-and-error-states">
  ## 検証とエラー状態
</div>

いずれかのルールが不完全な場合、戦略は保存できません。各ルールには少なくとも1つの条件(または**Always match**トリガー)と少なくとも1つのアクションが必要です。いずれかが欠けている場合、該当するルール上に直接エラーが表示され、解決すべき内容がハイライトされます。

エラーを解消して戦略を保存するには、次のいずれかを行います。

* **ルールを完成させる** — 不足しているトリガーやアクションを追加します。
* **ルールを削除する** — 不要になった場合はルールを完全に削除します。

すべてのルールが有効になるまで、戦略エディターは保存を許可しません。
