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

# ジャーニーアクション

> 待機期間を定義し、ユーザーの行動に基づいてジャーニーを分岐し、ジャーニーステップを使用してユーザーにタグを付けます。

**ジャーニーアクション**を使用して、ユーザーがジャーニーをどのように、いつ進むかを制御し、エクスペリエンスをパーソナライズし、結果をテストします。

## 待機

ユーザーのジャーニーの進行を特定の時間（分、時間、日、または週）遅らせます。

使用方法：

* メッセージとステップの間隔を空ける
* 分岐前にユーザーがメッセージに関与する時間を与える

<Frame caption="ジャーニーで進行を待機しているユーザーがいる待機ノード">
  <img src="https://mintcdn.com/onesignal/yt4lRKoquAlWvRvF/images/docs/wait-node.png?fit=max&auto=format&n=yt4lRKoquAlWvRvF&q=85&s=13178c10c8f9d0e439c47e601ad00978" width="644" height="391" data-path="images/docs/wait-node.png" />
</Frame>

***

## 条件付き待機

特定の条件を満たすまで、ユーザーをこのステップで保持します：

* セグメントに入る
* メッセージイベントをトリガーする（例：特定のメッセージが配信、開封、またはクリックされた）
  * **現時点では、条件付き待機ステップごとに1つのメッセージイベントのみ**がサポートされています。
* カスタムイベントをトリガーする（例：オンボーディング完了、購入完了）

**複数の条件を追加**でき、\_最初に満たした条件\_に基づいてユーザーを分岐できます。これらの条件が一定時間内に満たされない場合、**有効期限分岐**を設定して、ユーザーをジャーニーで続行するか、完全に終了させることができます。

<Note>
  ユーザーがこのステップに到達したときにすでに条件を満たしている場合、待機することなく即座にその分岐に進みます。条件は順番に（上から下／A〜Z順）評価されます。
</Note>

カスタムイベントエントリールールを使用すると、[イベントマッチング](#event-matching)を追加して、ユーザーを複数回入力する場合に、どのインスタンスをジャーニーで進行させるかを制御することもできます。

<Frame caption="ユーザーがセグメントにいるか、カスタムイベントをトリガーするまで待機">
  <img src="https://mintcdn.com/onesignal/yt4lRKoquAlWvRvF/images/journeys/journeys-wait-until-action.png?fit=max&auto=format&n=yt4lRKoquAlWvRvF&q=85&s=1a27c7d1bb9e26bc68a9980d9662b400" width="952" height="1462" data-path="images/journeys/journeys-wait-until-action.png" />
</Frame>

カスタムイベントが条件と一致すると、そのイベントはユーザーの代わりに保存され、ジャーニーメッセージを送信するときに[Liquid構文で参照](./custom-events#liquid-syntax-for-custom-events)できます。

### イベントマッチング

カスタムイベントエントリールールを使用すると、ユーザーをジャーニーに複数回入力できます。条件付き待機ステップの**イベントマッチング**設定を使用すると、ユーザーのどのインスタンスをジャーニーで進行させるかを制御できます。

要件：

* ジャーニーエントリールールをカスタムイベントを使用するように設定します。
* ユーザーをジャーニーに入力するときにイベントプロパティを含めます。

たとえば、「アンケートリマインダー」ジャーニーがあるとします。複数のアンケートがあるため、ユーザーはジャーニーに複数回入力できます（アンケートごとに1回）。アンケートを完了しなかった場合はリマインダーメッセージを送信し、完了した場合は削除したいとします。

**イベントマッチング**設定を使用して、ユーザーのどのインスタンスをジャーニーで進行させるかを制御できます。

**例**：

<Steps>
  <Step title="ジャーニーエントリールールとカスタムイベントプロパティを設定">
    ジャーニーエントリールールをカスタムイベントを使用するように設定します。**例**：`survey_start`

    <Frame caption="カスタムイベントを使用するジャーニーエントリールール">
      <img src="https://mintcdn.com/onesignal/yt4lRKoquAlWvRvF/images/journeys/survey_start.png?fit=max&auto=format&n=yt4lRKoquAlWvRvF&q=85&s=146924d7b2a759c1894496745a078c4f" width="469" height="298" data-path="images/journeys/survey_start.png" />
    </Frame>

    ユーザーは[カスタムイベントAPI](/reference/create-custom-events)経由でジャーニーに入ります。

    カスタムイベントには、`name`が`survey_start`に設定され、`payload`プロパティ`survey_id`には、実施しているアンケートの値（例：`survey_1`）が設定されます。

    ```json Entrance Trigger Event Example theme={null}
    {
      "events": [
        {
          "external_id": "UserA",
          "name": "survey_start",
          "properties": {
              "survey_id": "survey_1"
          }
        }
      ]
    }
    ```
  </Step>

  <Step title="条件付き待機ステップとカスタムイベントプロパティを作成">
    条件付き待機条件をカスタムイベントを使用するように設定します。**例**：`survey_complete`

    **イベントマッチング**オプションを設定して、次の項目を一致させることで、条件付き待機ステップを進行するユーザーのインスタンスを指定します：

    * **トリガーイベントプロパティ**：ジャーニーエントランストリガーイベントで設定（例：`survey_id`）
    * **待機イベントプロパティ**：条件付き待機イベントで設定（例：`survey_type`）

    ```json Wait Until Event Example theme={null}
    {
      "events": [
        {
          "external_id": "UserA",
          "name": "survey_complete",
          "properties": {
              "survey_type": "survey_1"
          }
        }
      ]
    }
    ```

    `survey_id`の値が`survey_type`の値と一致すると、そのユーザーのインスタンスがジャーニーを進行します。

    <Warning>
      **トリガーイベントプロパティ**と**待機イベントプロパティ**の両方で同じプロパティ（例：`survey_id`）を使用できます。この例では、概念を説明するために異なるプロパティ（例：`survey_id`と`survey_type`）を使用しています。

      プロパティは大文字と小文字を区別します！`survey_1`は`Survey_1`と等しくありません。
    </Warning>

    **有効期限分岐**：

    条件付き待機イベントが有効期限内に発生しない場合、ユーザーはジャーニーを進行します。この例では、ユーザーにアンケートを完了するための1週間を与えています。

    <Frame caption="カスタムイベントを使用する条件付き待機ステップ">
      <img src="https://mintcdn.com/onesignal/yt4lRKoquAlWvRvF/images/journeys/survey_complete.png?fit=max&auto=format&n=yt4lRKoquAlWvRvF&q=85&s=59ad63e1af649a09f5c3a18a32a979b8" width="488" height="648" data-path="images/journeys/survey_complete.png" />
    </Frame>
  </Step>

  <Step title="メッセージステップを追加">
    例を完成させるには、有効期限分岐内にメッセージステップを追加してリマインダーを送信します。

    <Frame caption="有効期限分岐内のメッセージステップ">
      <img src="https://mintcdn.com/onesignal/yt4lRKoquAlWvRvF/images/journeys/survey_reminder.png?fit=max&auto=format&n=yt4lRKoquAlWvRvF&q=85&s=1a367c270dec75e70a6409b3c66be36e" width="955" height="572" data-path="images/journeys/survey_reminder.png" />
    </Frame>
  </Step>

  <Step title="テストしてみましょう！">
    上記の手順に従った後、テストできます：

    * [カスタムイベントAPI](/reference/create-custom-events)の`external_id`を自分の外部IDに置き換えます
    * `survey_id`が`survey_1`の`survey_start`イベントをトリガーします
      * ユーザーがジャーニーに入り、条件付き待機ステップに流れるのが表示されます

    <Warning>
      イベントは即座ではありませんが、非常に高速です！イベントが処理される前に数分待つ必要がある場合があります。

      カスタムイベントリストをチェックして、イベントが処理されたかどうかを確認してください。
    </Warning>

    * `survey_id`が`survey_2`の別の`survey_start`イベントをトリガーします
      * 2人のユーザーがジャーニーと条件付き待機ステップに入るのが表示されます
    * `survey_type`が`survey_1`の`survey_complete`イベントをトリガーします
      * ユーザーがジャーニーを進行するのが表示されます
    * `survey_type`が`survey_2`の別の`survey_complete`イベントをトリガーします
      * ユーザーの両方のインスタンスがジャーニーを進行して終了するのが表示されます

    <Check>
      イベントマッチングを使用したジャーニーカスタムイベントの例を完了しました！
    </Check>
  </Step>
</Steps>

***

## タイムウィンドウ

**特定の曜日と時間**に基づいて、ユーザーがジャーニーの次のステップに進むことができる時間を制限します。

**例**：ユーザーが週末の夕方にのみメッセージを受信できるようにします。

<Frame caption="タイムウィンドウノードの例を示すスクリーンショット">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/31f4664-Screenshot_2024-03-21_at_15.56.12.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=07267995ec158e725ecd0c6afb28af20" width="540" height="448" data-path="images/docs/31f4664-Screenshot_2024-03-21_at_15.56.12.png" />
</Frame>

### タイムウィンドウの動作方法

許可された時間外にユーザーがこのノードに入った場合：

* OneSignalは、**次の利用可能なウィンドウ**までユーザーを遅らせるタイマーを設定します
* **ウィンドウへのエントリ時間はランダム化**されます

タイムウィンドウは、タイムゾーンデータが利用可能な場合、**ユーザーのタイムゾーン**を使用できます。ユーザーにタイムゾーンデータがない場合、アプリのデフォルトタイムゾーンが使用されます。

**例**：
タイムウィンドウが火曜日の午後1時から午後6時（PST）で、ユーザーが月曜日にノードにヒットした場合、火曜日の午後5時45分のようなランダムな時間に続行する可能性があります。

### 定期送信にタイムウィンドウを使用する

タイムウィンドウノードと[再入力ルール](./journeys-settings#re-entry-rules)を組み合わせることで、スケジュール（毎日、毎週など）に合わせて定期的なメッセージを送信できます。ユーザーがメッセージを受信する前に正しい曜日と時間まで待機するように、タイムウィンドウをジャーニーの**最初のステップ**として配置してください。

再入力期間を選択する際は、**タイムウィンドウの期間より長く**、かつ送信間隔より短く設定してください。これにより、同じウィンドウ内での二重送信を防ぎながら、ユーザーが次のウィンドウに間に合うよう十分早く再入力できるようになります。

**例 — 毎日送信：**

* タイムウィンドウ：毎日午前10時から午後6時（8時間ウィンドウ）
* 再入力：12時間（8時間ウィンドウより長く、24時間より短い）
* 結果：ユーザーは退出後約12時間で再入力し、翌日のウィンドウが閉じる前に必ず到達し、1日1通のメッセージを受信します

完全な例については、[特定の曜日の定期的なジャーニー](./journeys-examples#recurring-journeys-for-specific-days)と[毎日メッセージを送信するようスケジュールできますか？](./journeys-examples#can-i-schedule-a-message-to-send-every-day)を参照してください。

***

## Yes/No分岐

**セグメントメンバーシップ**または**メッセージ動作**に基づいてユーザーを分岐します。

### セグメントメンバーシップ

ユーザーがどのセグメントにいるかに基づいて分岐を作成します。

**例**：
ユーザーがプランタイプでタグ付けされている場合：

* 「無料」分岐 = アップグレードを促進
* 「有料」分岐 = プレミアム機能を強調

### メッセージ動作

ジャーニー内の以前のメッセージとのインタラクションに基づいて分岐します：

* **プッシュ**：クリック、配信
* **メール**：クリック、開封、配信

**注意**：Safariは確認済み配信をサポートしていません。

***

## 分割分岐

メッセージング、チャネル、またはジャーニーフローをテストするために、異なるパスにユーザーをランダムに分配します。

<Frame caption="3方向分割分岐の例">
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b7a62545ad25878949fe7b0fffc1b64ddee30730dbe351cd51eaea5ed8e9964f-Screenshot_2024-12-23_at_1.37.49_PM.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=b9f67d64e3721cba629798663860be3f" width="1916" height="1430" data-path="images/docs/b7a62545ad25878949fe7b0fffc1b64ddee30730dbe351cd51eaea5ed8e9964f-Screenshot_2024-12-23_at_1.37.49_PM.png" />
</Frame>

<Warning>
  ジャーニーがライブになると、分割分岐を**編集できません**。分岐の数を変更するには、新しいジャーニーを作成してください。
</Warning>

### 仕組み

* 最大20の分岐
* 等しいまたはカスタムパーセンテージ分割を設定
* パーセンテージは整数に丸められます（例：3方向分割は34/33/33になります）
* サンプルサイズが小さい場合、分布はわずかに異なる場合があります

<Frame caption="分割分岐設定">
  <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/517165a9f4f78a584ce252ae7581c6fc48f05e040a0ba921d759392577218988-Screenshot_2024-12-23_at_11.28.53_AM.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=57308fa43c451864c80af0c97a4a9cfa" width="460" height="456" data-path="images/docs/517165a9f4f78a584ce252ae7581c6fc48f05e040a0ba921d759392577218988-Screenshot_2024-12-23_at_11.28.53_AM.png" />
</Frame>

デフォルトでは、ユーザーはジャーニーに再入力するたびに再ランダム化されます。
同じ分岐に留めるには、**再入力時にランダム化**をオフにします。

**ユーザーにタグを付ける**アクションを使用して、ユーザーがどの分岐をたどったかを追跡します。

### A/B/Nテスト

ネストされた分割分岐を使用して、2つ以上のバリアントを同時にテストします。

**例**：
ユーザーを3つのバリアント全体に均等に分割するには：

1. 最初の分岐：33%対67%
2. 67%分岐の下に、別の50/50分割分岐を追加します

これにより、各パスに約33%が与えられます。

### コントロールグループ

1つの分岐を空にして（メッセージノードなし）メッセージングの影響をテストします。これにより、メッセージを全く受信しないユーザーと比較することができます。

### 勝者を選ぶ

勝ったバリアントが特定されたら、分岐を更新して、トラフィックの\*\*100%\*\*をそのパスに送信します。

長期的な影響を継続的に測定するには、小さな**ホールドアウトグループ**（勝利メッセージを受信しないユーザーの一定割合）を維持することを検討してください。

***

## ユーザーにタグを付ける

このアクションを使用して、ジャーニー中にタグを適用または削除します。

**一般的な使用例**：

* ジャーニーの進行状況を追跡する（例：`journeyStep: welcome`）
* 重要な瞬間にユーザーにタグを付けて、アプリ内メッセージを強化する
* アクティブなタグを使用して、他のジャーニーからユーザーを除外する

<Frame caption="シンプルなオンボーディング/ウェルカムフロー">
  <img src="https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/99f568ee808ea29f528fd83830bf9a7ebed7e590e95d34047e6495fc810015f2-image.png?fit=max&auto=format&n=6tscVAtiSqz353kV&q=85&s=cb4cbbbe43b252f44f22f08379b9b709" width="237" height="485" data-path="images/docs/99f568ee808ea29f528fd83830bf9a7ebed7e590e95d34047e6495fc810015f2-image.png" />
</Frame>

### 例：オンボーディングフロー制御

1. 最初のステップ：タグを追加（例：`onboardingJourney: active`）
2. このタグを使用して、他のジャーニーから除外するためのセグメントを作成
3. 最後のステップ：値を空白に設定してタグを削除

<Frame caption="ユーザーからタグを削除するタグノード設定">
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d4199348801030819f94a56976af9b180a77434be6f8b76fd24c7c5a283fc0ba-image.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=004b49369e6eb2a13a55dfa1b93855bf" width="651" height="193" data-path="images/docs/d4199348801030819f94a56976af9b180a77434be6f8b76fd24c7c5a283fc0ba-image.png" />
</Frame>

***

### ベストプラクティス：Webhookまたはパーソナライゼーションでタグを使用する

ジャーニーでタグを追加または削除すると、これらの変更が次のステップで使用できるようになるまでに短時間かかることがあります。すべてがスムーズに機能するようにするには：

* **Webhookの場合**：タグを設定した後、Webhookでデータを送信する前に短い待機を追加します。
* **パーソナライゼーションの場合**：タグを設定または削除した後、メールでコンテンツをパーソナライズするために使用する前に短い待機を追加します。

<Tip>
  タグアクションと次のステップの間に**15分の待機ノード**を追加することをお勧めします。これにより、タグが完全に準備され、Webhookまたはメールに常に正しいデータが含まれるようになります。
</Tip>

***

## よくある質問

### プッシュのアクションボタンのクリックに基づいてJourneyを分岐できますか？

組み込みの「はい/いいえ」分岐のみでは対応できません。メッセージ行動条件は「クリック済み」または「配信済み」のみを検出し、どの特定のボタンがクリックされたかは検出できません。ボタンによって分岐するには、SDKでクリックイベントをリッスンし、Action IDを読み取り、[カスタムイベント](./custom-events)を送信してください。次に、[Wait Until](#wait-until)ステップを使用して、最初に発火するカスタムイベントに基づいて分岐します。

コード例を含む完全なウォークスルーについては、[アクションボタンのクリックによるJourneyの分岐](./journeys-examples#branch-a-journey-by-action-button-clicked)をご覧ください。

### JourneyでカスタムイベントURLを使用するにはコードを記述する必要がありますか？

はい。カスタムイベントは、[SDK](./mobile-sdk-reference#custom-events)を使用してアプリやウェブサイトからOneSignalに送信されるか、[REST API](/reference/create-custom-events)を使用してバックエンドから送信されます。ダッシュボードのみでカスタムイベントを発火させる方法はありません。イベントがOneSignalに流入したら、追加のコードなしにダッシュボードからJourneyとセグメントで使用できます。
