> ## 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.

# カート放棄チュートリアル

> OneSignalを使用してカート放棄通知で失われた売上を回復しましょう。カートアクティビティの追跡、適切なセグメントの構築、Journeysによるタイムリーなリマインダー送信方法を学びます。

## 概要

カート放棄は、失われた収益を回復するための最もインパクトの大きい機会の一つです。カートを放棄したほとんどのユーザーはまだ購入する意思があり、タイムリーなリマインダーが必要なだけです。

このガイドでは、OneSignalで以下を実行する**自動カート放棄Journey**を構築する方法を説明します：

* カートアクティビティの検出
* 短い非アクティブ期間の待機
* パーソナライズされたリマインダーの送信
* 購入またはカート削除後のメッセージ送信即時停止

以下のいずれかを使用して実装できます：

* Custom Events（ほとんどの実装に推奨）
* Tags（よりシンプルで、限定的なユースケース）

適切な選択は、メッセージに表示したいデータとそのデータの出所によって異なります。

**構築する内容**

このガイドを完了すると、以下が得られます：

* OneSignalに送信されるカートアクティビティ（TagsまたはCustom Eventsを経由）
* 明確な**コード定義の**放棄シグナル
* カートデータをパーソナライズするメッセージテンプレート
* 以下を実行するJourney：
  * 放棄シグナルが受信されたときに開始
  * 送信前に待機
  * カート放棄メッセージを送信
  * カートが空になるか購入されたときに即座に終了
* メッセージと収益のパフォーマンスを測定するAnalytics

**カート放棄のモデリング方法**

このガイドでは、ユーザーがカートに商品を追加または削除するたびに「カート更新」イベントを追跡することを想定しています。これは、コンテンツへのサブスクリプションのような単一商品の場合もあれば、ショッピングカートのような複数商品の場合もあります。

OneSignalが`cart_updated`イベントを受信すると：

* ユーザーがJourneyにエントリーする資格を得ます
* 待機期間により自然に戻る時間が与えられます
* エグジットしない場合のみメッセージが送信されます
* カートが空になるとユーザーは即座にエグジットします

***

## セットアップ

### ステップ1. カートデータとソースを計画する

**表示したいカート情報**と**そのデータの出所**を決定してください。

一般的なカートデータには以下が含まれます：

* 商品名、画像、価格、数量
* カート内のアイテム数
* カートに戻るディープリンク

データソースによってイベントの送信方法が決まります：

| データソース          | 推奨方法                   |
| --------------- | ---------------------- |
| アプリまたはウェブサイト    | OneSignal Frontend SDK |
| バックエンドまたはデータベース | OneSignal REST API     |
| サードパーティプラットフォーム | 統合ベースのCustom Events    |

<Check>
  このステップの終わりまでに、**どのデータを送信するか**と**どのように送信するか**がわかります。
</Check>

### ステップ2. カートアクティビティをOneSignalに送信する

カートの状態が変化した場合、アクティビティを追跡できるように更新されたカートデータをOneSignalに送信します。

このガイドでは、`cart_updated`イベントまたはタグを使用してカートアクティビティを追跡し、少なくとも1つのプロパティを含めます。

ステップ1で選択した方法を選択してください：

<Tabs>
  <Tab title="Custom Events">
    カートが変更されるたびに`cart_updated`カスタムイベントを送信します。カートにアイテムがある場合は商品プロパティを含め、カートが空になった場合は省略します。

    | リファレンス                                               | 説明                                                                                                                  |
    | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
    | `trackEvent`メソッド                                     | Frontend SDKを通じて送信（[Mobile SDK](./mobile-sdk-reference#custom-events)、[Web SDK](./web-sdk-reference#custom-events)） |
    | [Custom Events API](/reference/create-custom-events) | REST APIを通じて送信                                                                                                      |
    | [統合](./integrations)                                 | 統合を通じて送信                                                                                                            |

    **Frontend SDK `trackEvent`メソッドの例**

    <CodeGroup>
      ```javascript Cart Updated theme={null}
      OneSignal.User.trackEvent("cart_updated", {
        product_name: "24 Pack of Acorns",
        product_image: "https://i.imgur.com/ssPCfbC.png",
        product_price: 12.99,
        product_quantity: 1,
        cart_url: "https://yourdomain.com/cart"
      });
      ```

      ```javascript Cart Emptied theme={null}
      OneSignal.User.trackEvent("cart_updated");
      ```
    </CodeGroup>

    **Custom Events APIの例**

    <CodeGroup>
      ```json Cart Updated theme={null}
      {
        "events": [
          {
            "name": "cart_updated",
            "properties": {
              "product_name": "24 Pack of Acorns",
              "product_image": "https://i.imgur.com/ssPCfbC.png",
              "product_price": "$12.99",
              "product_quantity": "1",
              "cart_url": "https://yourdomain.com/username/cart"
            },
            "external_id": "ID_OF_THE_USER"
          }
        ]
      }
      ```

      ```json Cart Emptied theme={null}
      {
        "events": [
          {
            "name": "cart_updated",
            "external_id": "ID_OF_THE_USER"
          }
        ]
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Tags">
    カートにアイテムがある場合はタグを設定し、カートが空になった場合は削除します。

    <Info>
      この例では、`cart_updated`タグをカートが最後に更新された時刻を表すUnixタイムスタンプ（秒単位）に設定します。ブール値（true/false）も使用できますが、タイムスタンプは[Time Operators](./time-operators)でより柔軟性を提供します。
    </Info>

    | リファレンス                              | 説明                                                                                                          |
    | ----------------------------------- | ----------------------------------------------------------------------------------------------------------- |
    | `addTags` / `removeTags`            | Frontend SDKを通じて送信（[Mobile SDK](./mobile-sdk-reference#data-tags)、[Web SDK](./web-sdk-reference#data-tags)） |
    | [ユーザー更新API](/reference/update-user) | REST APIを通じて送信                                                                                              |

    **Frontend SDK `addTags` / `removeTags`メソッドの例**

    <CodeGroup>
      ```javascript Cart Updated theme={null}
      OneSignal.User.addTags({
        cart_updated: unix_timestamp_seconds,
        product_name: "24 Pack of Acorns", 
        product_image: "https://i.imgur.com/ssPCfbC.png",
        product_price: "$12.99",
        product_quantity: "1",
        cart_url: "https://yourdomain.com/username/cart"
      })
      ```

      ```javascript Cart Emptied (remove tags) theme={null}
      OneSignal.User.removeTags([
        "cart_updated", "product_name", "product_image", "product_price", "product_quantity", "cart_url"
      ])
      ```
    </CodeGroup>

    **ユーザー更新APIの例**

    <CodeGroup>
      ```json Cart Updated theme={null}
      {
        "properties": {
          "tags": {
            "cart_updated": "unix_timestamp_seconds",
            "product_name": "24 Pack of Acorns",
            "product_image": "https://i.imgur.com/ssPCfbC.png",
            "product_price": "$12.99",
            "product_quantity": "1",
            "cart_url": "https://yourdomain.com/username/cart"
          }
        }
      }
      ```

      ```json Cart Emptied (remove tags) theme={null}
      {
        "properties": {
          "tags": {
            "cart_updated": "",
            "product_name": "",
            "product_image": "",
            "product_price": "",
            "product_quantity": "",
            "cart_url": ""
          }
        }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

<Check>
  カートアクティビティがOneSignalに送信されるようになりました。カートが変更されるたびに、OneSignalはメッセージのトリガーとパーソナライズに必要な更新されたデータを受信します。
</Check>

***

### ステップ3. カート放棄メッセージテンプレートを作成する

カートデータを動的に参照するメッセージテンプレートを作成します。

このセクションで使用されるコンセプトの詳細については、以下を参照してください：

* [Liquid構文](./using-liquid-syntax)
* [メッセージのパーソナライゼーション](./message-personalization)
* [テンプレート](./templates)

<Tabs>
  <Tab title="Custom Eventプッシュテンプレート">
    Liquid構文形式を使用してイベントプロパティを参照します：

    ```liquid Liquid theme={null}
    {{journey.event.name.properties.property_name | default: "fallback_value"}}
    ```

    **メッセージ**：

    ```liquid Liquid theme={null}
    You left {{journey.event.cart_updated.properties.product_name | default: "items"}} in your cart.
    ```

    **画像**：

    ```liquid Liquid theme={null}
    {{journey.event.cart_updated.properties.product_image | default: "https://i.imgur.com/ssPCfbC.png"}}
    ```

    **起動URL**：

    ```liquid Liquid theme={null}
    {{journey.event.cart_updated.properties.cart_url | default: "https://yourdomain.com/cart"}}
    ```

    <Warning>
      `product_image`が**直接的な**、**一般公開されている**画像URLでない場合、画像は表示されません。

      `product_image`がオンラインで利用可能な画像ファイルの名前である場合、以下の形式を使用して画像を参照できます：
      `https://yourdomain.com/images/{{journey.event.cart_updated.properties.product_image | default: "stock_image"}}.png`
    </Warning>

    <Frame caption="Custom Eventsを使用したカート放棄テンプレートの例">
      <img src="https://mintcdn.com/onesignal/i980ujIG34-OaGfp/images/abandoned-cart/abandoned_cart_custom_event.png?fit=max&auto=format&n=i980ujIG34-OaGfp&q=85&s=30545021f3e1b12cdc741b3112540234" alt="Custom Eventsを使用したカート放棄テンプレートの例" width="2526" height="2104" data-path="images/abandoned-cart/abandoned_cart_custom_event.png" />
    </Frame>
  </Tab>

  <Tab title="Tagプッシュテンプレート">
    Liquid構文形式を使用してタグプロパティを参照します：

    ```liquid Liquid theme={null}
    {{tag_key | default: "fallback_value"}}
    ```

    **メッセージ**：

    ```liquid Liquid theme={null}
    You left {{product_name | default: "items"}} in your cart.
    ```

    **画像**：

    ```liquid Liquid theme={null}
    {{product_image | default: "https://i.imgur.com/ssPCfbC.png"}}
    ```

    **起動URL**：

    ```liquid Liquid theme={null}
    {{cart_url | default: "https://yourdomain.com/cart"}}
    ```

    <Warning>
      `product_image`が**直接的な**、**一般公開されている**画像URLでない場合、画像は表示されません。

      `product_image`がオンラインで利用可能な画像ファイルの名前である場合、以下の形式を使用して画像を参照できます：
      `https://yourdomain.com/images/{{product_image | default: "stock_image"}}.png`
    </Warning>

    <Frame caption="Tagsを使用したカート放棄テンプレートの例">
      <img src="https://mintcdn.com/onesignal/i980ujIG34-OaGfp/images/abandoned-cart/abandoned_cart_tags.png?fit=max&auto=format&n=i980ujIG34-OaGfp&q=85&s=00ed42a9890a824c8c201415b8260bba" alt="Tagsを使用したカート放棄テンプレートの例" width="2526" height="2104" data-path="images/abandoned-cart/abandoned_cart_tags.png" />
    </Frame>
  </Tab>
</Tabs>

**メールの例、ヘルプ、またはもっとインスピレーションが必要ですか？**

<Columns cols={2}>
  <Card title="Custom Eventsでメッセージをパーソナライズ" icon="bolt" href="./personalization-custom-event">
    JourneysでCustom Eventsを使用するための完全ガイド。イベントストレージ、Journey設定、カート放棄の例、ベストプラクティス、トラブルシューティングを含みます。
  </Card>

  <Card title="プロパティでメッセージをパーソナライズ" icon="tags" href="./personalization-properties-and-tags">
    JourneysでプロパティとTagsを使用するための完全ガイド。イベントストレージ、Journey設定、カート放棄の例、ベストプラクティス、トラブルシューティングを含みます。
  </Card>
</Columns>

### ステップ4. カート放棄セグメントを作成する（Tagsのみ）

<Warning>
  このステップは、Tagsを使用してカートアクティビティを追跡している場合のみ必要です。Custom Eventsを使用している場合は、このステップをスキップできます。
</Warning>

セグメントはJourneyにエントリーできるユーザーを決定します。詳細は[セグメント](./segmentation)を参照してください。

セグメントに2つのフィルターを追加します：

1. **User Tag** — `cart_updated` `exists`
2. **Last Session** — `less than` `7` `days ago`

<Frame caption="cart_updatedタグが存在し、最後のセッションが7日以内であるTagフィルター付きカート放棄セグメント">
  <img src="https://mintcdn.com/onesignal/BIUS_wdfwITxcuxQ/images/segments/tag-filter-cart-updated.png?fit=max&auto=format&n=BIUS_wdfwITxcuxQ&q=85&s=e77eb5ae599ff365cc908524648342b5" alt="cart_updatedタグが存在し、最後のセッションが7日以内であるTagフィルター付きカート放棄セグメント" width="1300" height="656" data-path="images/segments/tag-filter-cart-updated.png" />
</Frame>

<Check>
  カートを更新し、過去7日以内にアプリまたはウェブサイトを訪問したユーザーを追跡できるようになりました。

  以下のいずれかの条件が満たされると、ユーザーはセグメントから自動的に削除されます：

  * アプリ/ウェブサイトを最後に訪問してから7日が経過した場合
  * `cart_updated`タグが削除された場合
</Check>

### ステップ5. カート放棄Journeyを作成する

カートアクティビティに反応するJourneyを作成します。詳細は[Journeys](./journeys-overview)を参照してください。

<Frame caption="新しいカート放棄Journey作成画面">
  <img src="https://mintcdn.com/onesignal/nGF0iEnzRCJ61U4u/images/journeys/new-journey-screen.png?fit=max&auto=format&n=nGF0iEnzRCJ61U4u&q=85&s=373c8bea9b7f399af4623fe18eb50f9b" alt="新しいカート放棄Journey作成画面" width="2234" height="930" data-path="images/journeys/new-journey-screen.png" />
</Frame>

#### Journeyの設定

エントリー、エグジット、再エントリーのルールの詳細については、[Journeyの設定](./journeys-settings)ガイドを確認してください。

**エントリールール**：

<Tabs>
  <Tab title="Custom Event: エントリールール">
    * **Custom Event**を選択
    * Custom Event名：`cart_updated`
    * プロパティでフィルター：以下の**すべて**のプロパティを持つ：`product_name` **exists**

    <Warning>
      Custom Eventsを使用すると、個々のユーザーがJourneyに複数回エントリーできます。

      特定のプロパティが存在するときのみユーザーがエントリーするように、プロパティを使用してフィルタリングしてください。
    </Warning>

    <Frame caption="カート放棄Journey Custom Eventエントリールール">
      <img src="https://mintcdn.com/onesignal/QYQXG0jQYRHKKzOd/images/journeys/journey-entry-rules-custom-event.png?fit=max&auto=format&n=QYQXG0jQYRHKKzOd&q=85&s=6b36bbedce35c4286ecd9d154ab4c9db" alt="カート放棄Journey Custom Eventエントリールール" width="2478" height="1772" data-path="images/journeys/journey-entry-rules-custom-event.png" />
    </Frame>
  </Tab>

  <Tab title="Tag: エントリールール">
    * **Audience Segment**を選択
    * セグメントを含める：**Abandoned Cart - cart\_updated**

    <Frame caption="カート放棄Journeyエントリールール">
      <img src="https://mintcdn.com/onesignal/nGF0iEnzRCJ61U4u/images/journeys/journey-entry-rules-audience-segment.png?fit=max&auto=format&n=nGF0iEnzRCJ61U4u&q=85&s=d3f3cbd94f91fa80aaa293c5beb44ade" alt="カート放棄Journeyエントリールール" width="2672" height="1586" data-path="images/journeys/journey-entry-rules-audience-segment.png" />
    </Frame>
  </Tab>
</Tabs>

**エグジットルール**：

<Tabs>
  <Tab title="Custom Event: エグジットルール">
    カートを空にするかJourneyを完了したとき、ユーザーはJourneyをエグジットする必要があります。

    * **Meet a certain condition**を選択
    * **Exit when custom event condition occurs**をチェック
    * Custom Event名：`cart_updated`

    <Frame caption="カート放棄Journey Custom Eventエグジットルール">
      <img src="https://mintcdn.com/onesignal/QYQXG0jQYRHKKzOd/images/journeys/journey-exit-rules-meet-certain-condition-custom-event.png?fit=max&auto=format&n=QYQXG0jQYRHKKzOd&q=85&s=f2e5cff1e3f76307e8ac9f30e5fa189f" alt="カート放棄Journey Custom Eventエグジットルール" width="2478" height="1772" data-path="images/journeys/journey-exit-rules-meet-certain-condition-custom-event.png" />
    </Frame>

    <Note>
      この設定では、エントリーとエグジットの両方のルールに同じCustom Event名（`cart_updated`）を使用します。

      これにより、ユーザーは一度に1つのJourneyインスタンスにのみ存在できます。カートを更新するたびに、そのユーザーのインスタンスはエグジットし、同じユーザーの新しいインスタンスがJourneyにエントリーします。**これがエントリールール内でプロパティを使用してユーザーをフィルタリングすることが重要な理由です。**
    </Note>
  </Tab>

  <Tab title="Tag: エグジットルール">
    * **Meet a certain condition**を選択
    * **Exit when a user no longer matches the audience conditions**をチェック

    <Frame caption="カート放棄Journey Tagエグジットルール">
      <img src="https://mintcdn.com/onesignal/nGF0iEnzRCJ61U4u/images/journeys/journey-exit-rules-meet-certain-condition-tag.png?fit=max&auto=format&n=nGF0iEnzRCJ61U4u&q=85&s=e54a4770bccb5ad096602a2d2f826cc1" alt="カート放棄Journey Tagエグジットルール" width="2672" height="1586" data-path="images/journeys/journey-exit-rules-meet-certain-condition-tag.png" />
    </Frame>

    <Info>
      ユーザーは以下の場合にJourneyからエグジットします：

      * セグメントを離れた場合。
      * Journeyを完了した場合。
    </Info>
  </Tab>
</Tabs>

**再エントリールール**（Tagsのみ）：

* **Yes, after a certain amount of time**を選択
* 再エントリー時間を`1` `day`に設定

<Frame caption="カート放棄Journey再エントリールール">
  <img src="https://mintcdn.com/onesignal/Ed71xMP1FaC70n24/images/journeys/journey-re-entry-rules-after-certain-amount-of-time.png?fit=max&auto=format&n=Ed71xMP1FaC70n24&q=85&s=a3333faba5fb02f4f12fca0a3828ebc8" alt="カート放棄Journey再エントリールール" width="945" height="400" data-path="images/journeys/journey-re-entry-rules-after-certain-amount-of-time.png" />
</Frame>

<Check>
  このガイドをここまで完全に実行していれば、ユーザーは：

  1. カートを放棄/更新したときにJourneyにエントリーします
  2. カートを空にするかJourneyを完了したときにエグジットします。
  3. Journeyに再エントリーする資格があります：
     * **Custom Events**：`cart_updated`イベントが実行されるたび
     * **Tags**：Journeyから最後にエグジットしてから1日が経過し、セグメントに含まれている場合。

  Journeyの設定を保存してください。
</Check>

#### Journeyのステップ

ユーザーはエントリールールに基づいてJourneyにエントリーします。これは通常、イベント/タグが受信されてから数分以内に発生します。

ユーザーは、終わりに到達するかエグジットルールが満たされるまで、Journeyをステップごとに進みます。

基本的なカート放棄Journeyの場合、2つのことを行います：

1. ユーザーにカートを空にする十分な時間を与える（購入するか手動でカートを空にする）
2. カートを空にしない場合、カート内のアイテムについてリマインダーメッセージを送信する

まずJourneyに**Wait**ステップを追加してこれを実現します。

* 待機時間を希望する長さに設定します。購入意思がまだあるうちにメッセージを送信できるように、`1` `hour`に設定することを推奨します。

**Message**ステップを追加します。

* ステップ3で作成した**Abandoned Cart**プッシュ通知テンプレートを選択します。

<Frame caption="基本的なカート放棄Journeyのステップ">
  <img src="https://mintcdn.com/onesignal/FtxZDfbFgMsm3lF9/images/journeys/journey-steps-basic-abandoned-cart.png?fit=max&auto=format&n=FtxZDfbFgMsm3lF9&q=85&s=8af2e8a35043af3b053fda36f251c2c4" alt="基本的なカート放棄Journeyのステップ" width="2526" height="2104" data-path="images/journeys/journey-steps-basic-abandoned-cart.png" />
</Frame>

<Check>
  基本的なカート放棄Journeyの設定が完了しました。

  ユーザーがJourneyにエントリーすると、1時間待機します。Journeyからエグジットしない場合、カート放棄プッシュ通知を受信します。
</Check>

## 高度なJourneyセットアップ

時間の経過とともにより多くのメッセージを送信するようにJourneyを拡張して、より高い回復率を実現します。

### メッセージシーケンス

非常に一般的な高パフォーマンスのケイデンスは：

1. 1時間後に最初のメッセージを送信（このガイドで完了）。
2. 1日間の別の**Wait**ステップを追加し、2番目のメッセージを送信（カート更新後約24時間）。
3. 2日間の別の**Wait**ステップを追加し、3番目のメッセージを送信（カート更新後約72時間）。

#### メッセージの種類とコンテンツ

OneSignalで設定したチャネルに応じて、オムニチャネルアプローチを使用するとより良い結果が得られます。

1. このガイドでは、最初の1時間後にプッシュ通知メッセージを送信する方法を示しています。これは、ユーザーがまだオンラインである可能性がある間に販売を獲得するための有用なリマインダーとして使用されます。
2. 2番目のメッセージにはプッシュとメールの両方を使用することを検討してください。この2番目のメッセージを使用して、軽い緊急性とともに利点と社会的証明を強調し、購入を促しましょう。
3. シーケンスの最後のメッセージには、メールまたはSMS（ユースケースに応じて）を「最後のチャンス」として使用してください。割引コードやその他のインセンティブを使用して購入を促すことを検討してください。

### フォールバックメッセージ

OneSignalのJourneysは、メッセージが確認済み配信、クリック、または開封されたかどうかを確認し、特定の期間内に実行されない場合にフォールバックメッセージを送信できる**Wait Until**分岐ロジックを提供します。

これは、特定のメッセージチャネルの登録を解除した可能性があるユーザーにとって非常に便利です。フォールバックメッセージの設定方法の詳細は、[フォールバックメッセージ](./push-fallback-method)ガイドをご覧ください。

### パフォーマンスの追跡

[Journey分析](./journeys-analytics)を使用して、Journey全体のパフォーマンスを追跡できます。[テンプレート分析](./template-analytics)を使用して、各メッセージのパフォーマンスも追跡できます。

#### Outcomesで収益を追跡する

このJourneyの収益を追跡するには、[Custom Outcomes](./custom-outcomes)を使用できます。

購入が行われたとき、イベントを「Custom Outcome」として送信して、送信された特定のメッセージに関連する収益を追跡できます。

Custom Outcomesは[Mobile SDK](./mobile-sdk-reference#outcomes)または[Web SDK](./web-sdk-reference#outcomes)を通じて送信できます。

```javascript Example: Send purchase outcome via frontend SDK theme={null}
// Example: capture total price and item count at checkout
const checkoutPriceTotal = document.querySelector(".checkout-price-total").innerText;
const checkoutItemsTotal = document.querySelector(".checkout-items-total").innerText;

function updateOSOnCartPurchase(checkoutPriceTotal, checkoutItemsTotal) {
  const purchasePriceTotal = parseFloat(checkoutPriceTotal);
  const purchasedItemCount = parseInt(checkoutItemsTotal);

  OneSignalDeferred.push(function (OneSignal) {
    OneSignal.Session.sendOutcome("Purchase", purchasePriceTotal);
    OneSignal.Session.sendOutcome("Purchased Item Count", purchasedItemCount);
  });
}

const submitPurchaseButton = document.querySelector(".submit-payment");
if (submitPurchaseButton) {
  submitPurchaseButton.addEventListener("click", () => {
    updateOSOnCartPurchase(checkoutPriceTotal, checkoutItemsTotal);
  });
}
```

<Info>
  Outcomesは、定義されたアトリビューションウィンドウ内でユーザーがクリックした、または影響を受けたメッセージに収益を帰属させることができます。
</Info>

<Check>
  カート放棄Journeyの実装が正常に完了しました。メッセージの送信を開始する準備ができたら、**Set Live**を選択してください。
</Check>

## よくある質問

### カートトラッキングにCustom EventsとTagsのどちらを使用すべきですか？

Custom Eventsはほとんどの実装に推奨されます。よりリッチなデータをサポートし、Journeyエントリールールでのプロパティベースのフィルタリングが可能で、同じイベントが再度発生したときに自動的に再エントリーを処理します。Tagsは、カートの存在を追跡するだけで十分な、よりシンプルなユースケースで機能しますが、手動でのセグメント作成と再エントリー設定が必要です。

### 最初のリマインダーを送信するまでどのくらい待つべきですか？

1〜2時間が一般的な出発点です。購入意欲がまだ新鮮な間に、ユーザーが自然に戻るのに十分な時間を与えます。さまざまな待機時間をテストし、[Journey分析](./journeys-analytics)を使用してオーディエンスに最適な方法を見つけましょう。

### Journey中にユーザーがカートを更新した場合はどうなりますか？

Custom Eventsの場合、ユーザーは現在のJourneyインスタンスをエグジットし（`cart_updated`がエグジット条件として発火するため）、更新されたイベントデータで即座に再エントリーします。Tagsの場合、タグが引き続き存在するため、ユーザーは同じJourneyインスタンスに留まります — 再エントリー期間が経過した後にエグジットしてから再エントリーします。

<Info>
  サポートが必要ですか？

  サポートチームとチャットするか、`support@onesignal.com`にメールしてください

  以下を含めてください：

  * 発生している問題の詳細と再現手順（利用可能な場合）
  * OneSignal App ID
  * 該当する場合は、External IDまたはSubscription ID
  * 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
  * 関連する[ログまたはエラーメッセージ](/docs/ja/capturing-a-debug-log)

  お気軽にお問い合わせください！
</Info>
