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

# Journey 예시

> 온보딩, 재참여, 장바구니 포기, A/B 테스트, 반복 전송, 이벤트 기반 워크플로를 위한 단계별 Journey 구성.

아래의 각 예시에는 권장되는 Journey 설정과 단계별 구성이 포함되어 있습니다. 더 간단한 패턴(온보딩, 재참여)부터 시작하여 더 고급 워크플로(반복 전송, 이벤트 기반 진행, 액션 버튼 분기)로 진행하세요.

<Frame caption="동영상: Journey 예시 워크스루">
  <iframe width="560" height="315" src="https://www.youtube.com/embed/TnsBCXe_Opw?si=feFpzblCm_Hcpbd4" title="Journey 예시 워크스루" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />
</Frame>

***

## 온보딩

이 패턴을 사용하여 새로운 구독자에게 환영 또는 온보딩 시퀀스를 보냅니다. 환영 캠페인, 환영 시리즈 또는 신규 사용자 캠페인이라고도 합니다. 목표는 가입하는 순간 메시지를 보내는 것이 아니라 주요 작업(프로필 완성, 첫 구매, 또는 핵심 기능 발견)을 완료하도록 사용자를 안내하는 것입니다.

| Journey 설정 | 설명                                                                                                                                                                                                                                                      |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **진입 규칙**  | **이벤트 기반(권장):** [커스텀 이벤트](./custom-events) 트리거(예: `signup_completed`)를 사용하여 사용자가 등록을 완료하는 의미 있는 순간에 시퀀스가 시작되도록 합니다.<br /><br />**세그먼트 기반 대체:** "사용자가 세그먼트 기준과 일치합니다"를 사용하여 "구독한 사용자" [세그먼트](./segmentation), 향후 추가만 해당합니다. 가입 이벤트를 설정하지 않은 경우 이를 사용하세요. |
| **종료 규칙**  | 전체 Journey를 이동했거나 사용자가 주요 작업을 완료했을 때(예: "온보딩 미완료" 세그먼트를 벗어날 때).                                                                                                                                                                                         |
| **재진입 규칙** | 아니요                                                                                                                                                                                                                                                     |
| **콘텐츠**    | 사용자의 첫 주에 걸친 짧은 시퀀스: 0일차에 환영 이메일, 2일차에 작업을 하지 않은 경우 푸시 알림, 7일차에 마지막 접촉으로 후속 이메일.                                                                                                                                                                        |

**Journey 단계**

<Steps>
  <Step title="즉시: 환영 이메일 보내기">
    사용자가 막 가입했으며 아직 앱에 있을 가능성이 높습니다. 이메일이 올바른 첫 번째 접촉입니다: 예상되며, 비침습적이고, 푸시 알림보다 더 많은 세부 정보를 포함할 수 있습니다. 사용자가 앱을 떠난 후를 위해 푸시를 아껴두세요.
  </Step>

  <Step title="1일 대기">
    후속 조치를 취하기 전에 사용자가 혼자 탐색할 시간을 줍니다.
  </Step>

  <Step title="2일차: 주요 작업 완료 여부에 따라 분기">
    사용자가 온보딩 목표를 달성했는지 여부에 따라 예/아니요 분기를 추가합니다. [태그](./add-user-data-tags)(예: `onboarding_complete = true`) 또는 세그먼트 멤버십으로 추적합니다.

    * **예 분기:** Journey를 종료합니다. 사용자에게 알림이 필요하지 않습니다.
    * **아니요 분기:** 구체적인 실행 가능한 프롬프트와 함께 푸시 알림을 보냅니다. 예: "프로필 설정 완료하기" 또는 "첫 번째 \[액션] 수행하기".
  </Step>

  <Step title="5일 대기">
    최종 메시지를 보내기 전에 푸시가 전달될 시간을 줍니다.
  </Step>

  <Step title="7일차: 주요 작업 완료 여부에 따라 분기">
    * **예 분기:** Journey를 종료합니다.
    * **아니요 분기:** 마지막 접촉으로 후속 이메일을 보냅니다. 더 이상 메시지를 보내지 않도록 합니다. 일주일 후에도 참여하지 않은 사용자는 [재참여 캠페인](#re-engagement-campaign)에 더 적합합니다.
  </Step>
</Steps>

<Frame caption="온보딩 환영 Journey 예시">
  <img src="https://mintcdn.com/onesignal/uQXaZLJRo_iX3RUv/images/journeys/onboarding-journey.png?fit=max&auto=format&n=uQXaZLJRo_iX3RUv&q=85&s=fdd555052bb0d43d1202d5bff2ca56b4" alt="푸시 및 이메일 단계가 포함된 온보딩 환영 Journey 흐름" width="748" height="1426" data-path="images/journeys/onboarding-journey.png" />
</Frame>

***

## 재참여 캠페인

이 패턴을 사용하여 최근 앱을 열지 않거나 사이트를 방문하지 않은 사용자를 다시 유치합니다. Journey는 점점 더 매력적인 메시지 시리즈를 보내고 사용자가 돌아오는 즉시 종료합니다.

| Journey 설정 | 설명                                                                                                       |
| ---------- | -------------------------------------------------------------------------------------------------------- |
| **진입 규칙**  | **사용자의 마지막 세션이 7일을 초과함;** 구독한 사용자입니다. (더 많은 무료 사용자가 돌아오도록 하는 것이 목표라면 유료 고객과 같은 **특정 세그먼트를 제외**할 수 있습니다.) |
| **종료 규칙**  | **전체 Journey를 이동했거나 특정 조건을 충족함** — 사용자가 앱/웹사이트에서 활성화되면 종료합니다.                                            |
| **재진입 규칙** | **예, 일정 시간 후: 7일** (앱을 한동안 열지 않을 때마다 재참여가 발생할 수 있음).                                                     |
| **콘텐츠**    | 사용자가 한동안 앱을 열지 않았을 때 다시 돌아오도록 상기시키고 보상이나 할인으로 유도합니다.                                                     |

**Journey 단계**

<Steps>
  <Step title="푸시 알림 보내기">
    푸시로 시작하세요 — 이탈한 사용자를 재참여시키는 가장 눈에 띄는 채널입니다. "보고 싶었습니다! 새로운 소식이 있습니다"와 같이 명확하고 행동 지향적인 메시지를 사용하세요.
  </Step>

  <Step title="2일 대기">
    에스컬레이션하기 전에 사용자가 푸시에 응답할 시간을 줍니다.
  </Step>

  <Step title="사용자 활동에 따라 분기">
    사용자가 돌아왔는지 확인하는 예/아니요 분기를 추가합니다(예: 2일 이내 마지막 세션).

    * **예 분기:** Journey를 종료합니다. 사용자가 재참여했습니다.
    * **아니요 분기:** 더 강한 인센티브가 있는 이메일을 보냅니다(예: 할인, 새로운 콘텐츠 또는 기능 하이라이트).
  </Step>

  <Step title="3일 대기">
    이메일이 사용자를 데려올 시간을 줍니다.
  </Step>

  <Step title="최종 확인">
    * **활성:** Journey를 종료합니다.
    * **여전히 비활성:** 선택적으로 최종 SMS를 보내거나 종료합니다. 더 이상 메시지를 보내지 마세요 — 여러 번 접촉한 후에도 응답하지 않은 사용자는 더 많은 메시지로 전환할 가능성이 낮습니다.
  </Step>
</Steps>

<Frame caption="재참여 캠페인 Journey 예시">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/reengagement-journey.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=63990452d48a0d82b27a87469bf7d00a" alt="대기 단계와 종료 조건이 포함된 재참여 Journey 흐름" width="1427" height="1495" data-path="images/docs/reengagement-journey.png" />
</Frame>

***

## 장바구니 포기

<Card title="장바구니 포기 예시" href="./abandoned-cart" icon="money-bill">
  커스텀 이벤트 또는 태그를 사용하여 장바구니 활동을 추적하고 장바구니 포기 메시지를 보냅니다.
</Card>

***

## 프로모션 캠페인

이 패턴을 기간 한정 프로모션, 세일 이벤트 또는 제품 출시에 사용합니다. Journey는 기대감을 조성하고, 이벤트 중에 사용자에게 상기시키며, 종료가 가까워지면 긴박감을 조성합니다.

| Journey 설정 | 설명                                                                                |
| ---------- | --------------------------------------------------------------------------------- |
| **진입 규칙**  | **사용자가 세그먼트 기준과 일치합니다.** 구독한 사용자이거나 프로모션 캠페인과 관련된 세그먼트를 타겟팅합니다.                   |
| **종료 규칙**  | **전체 Journey를 이동했거나 특정 조건을 충족했습니다.** 목표로 삼고자 하는 목표를 정의하는 세그먼트를 선택합니다(예: 구매한 사용자). |
| **재진입 규칙** | **아니요** (일회성 캠페인인 경우 한 번만 보냅니다).                                                  |
| **콘텐츠**    | 이벤트를 준비하고, 시작할 때 상기시키며, 종료가 가까워지면 할인 또는 보상을 제공합니다.                                |

**Journey 단계**

<Steps>
  <Step title="공지: 티저 메시지 보내기">
    다가오는 프로모션을 알리는 이메일 또는 푸시를 보냅니다. 날짜, 예상 내용 및 주목해야 할 이유를 포함합니다.
  </Step>

  <Step title="이벤트 시작까지 대기">
    프로모션 시작에 맞춰 대기 단계를 추가합니다.
  </Step>

  <Step title="이벤트 시작: 메인 오퍼 보내기">
    프로모션 세부 정보, 할인 코드 또는 행동 유도와 함께 푸시 알림 또는 이메일을 보냅니다.
  </Step>

  <Step title="2-3일 대기(이벤트 중기)">
    사용자가 초기 메시지에 반응할 시간을 줍니다.
  </Step>

  <Step title="리마인더: 마지막 기회 메시지">
    긴박감 있는 최종 푸시 또는 이메일을 보냅니다 — "세일이 내일 종료" 또는 "20% 할인 마지막 기회". 이미 전환한 사용자는 종료 규칙을 통해 종료되었을 것입니다.
  </Step>
</Steps>

<Frame caption="프로모션 캠페인 Journey 예시">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/promotional-journey.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=fa69c44b733a2b2f97973a64e24395fa" alt="시간 지정 메시지가 포함된 프로모션 캠페인 Journey 흐름" width="1487" height="1596" data-path="images/docs/promotional-journey.png" />
</Frame>

***

## 작업이 완료되지 않은 경우 사용자가 앱을 떠난 후 메시지 보내기

**초기 설정**

1. [데이터 태그](./add-user-data-tags)를 사용하여 사용자가 수행해야 하는 작업을 표시합니다. 작업이 완료되면 태그를 제거합니다.
2. 이 태그에 대한 [세그먼트](./segmentation)를 설정합니다.

| Journey 설정 | 옵션                               | 설명                                            |
| ---------- | -------------------------------- | --------------------------------------------- |
| **진입 규칙**  | 사용자의 마지막 세션이 시간을 초과합니다.          | 사용자가 앱이나 웹사이트에서 마지막으로 활성화된 시간을 결정합니다.         |
| **대상**     | 태그로 타겟팅하려는 세그먼트를 포함합니다.          | 메시지를 받을 자격이 있는 사용자입니다.                        |
| **종료 규칙**  | 사용자가 더 이상 대상 조건과 일치하지 않으면 종료합니다. | 사용자가 세그먼트를 떠나면 더 이상 Journey 메시지를 받을 자격이 없습니다. |
| **재진입 규칙** | 예, 일정 시간 후.                      | 사용자가 메시지를 다시 받을 자격이 되기를 원하는 시간입니다.            |

**Journey 단계**

<Steps>
  <Step title="원하는 메시지 추가">
    메시지 단계의 템플릿을 선택합니다. 사용자에게 수행하게 할 작업에 따라 푸시, 이메일, SMS 또는 인앱을 사용할 수 있습니다.
  </Step>

  <Step title="사용자가 대기하도록 할 시간에 대한 대기 노드 설정">
    메시지를 다시 미리 알림으로 표시하려는지 여부에 따라 높거나 낮은 숫자일 수 있습니다. 예시에서는 104주(2년)를 사용합니다.
  </Step>
</Steps>

## Journey 내 A/B 테스트

**분기 분할** 노드를 사용하면 Journey 내에서 50/50 분할을 설정할 수 있습니다. 두 개의 다른 메시지 템플릿을 만들고 사용자가 흐름을 따라가면 절반은 "템플릿 A"를, 나머지 절반은 "템플릿 B"를 받게 됩니다.

메시지 데이터를 내보내 변형 간의 [분석](./analytics-overview)을 비교할 수 있습니다.

<Frame caption="A/B 테스트">
  <img src="https://mintcdn.com/onesignal/w9XjWmVBB-0WycSD/images/docs/ab-test-journey.png?fit=max&auto=format&n=w9XjWmVBB-0WycSD&q=85&s=ef12a5ca93a5b5cf6cc48a6f2184a5d6" alt="50/50 분할 분기와 두 개의 메시지 템플릿이 있는 A/B 테스트 Journey" width="1608" height="772" data-path="images/docs/ab-test-journey.png" />
</Frame>

## 인앱 메시지를 순서대로 하루에 한 번 표시

이 예시에서는 3개 이상의 인앱 메시지를 연속으로 표시하되, 하루에 한 번만 표시하려고 합니다. 사용자가 앱을 열지 않으면 다음에 앱을 열 때 여전히 메시지를 볼 수 있습니다.

**초기 설정**

<Steps>
  <Step title="새 세그먼트 생성">
    필터와 함께 `iam_journey`라는 세그먼트를 생성합니다: 사용자 태그 `iam_journey`가 `1`입니다

    1. `iam_journey`를 원하는 이름으로 변경할 수 있습니다.
    2. 이 태그는 Journey를 완료하고 모든 메시지를 받은 각 사용자에게 설정됩니다.

    <Frame caption="세그먼트 생성 화면">
      <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/iam-journey-segment.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=c5c3444e720b727a73a4f8b73bb488df" alt="iam_journey 태그 필터가 있는 세그먼트 생성 화면" width="803" height="433" data-path="images/docs/iam-journey-segment.png" />
    </Frame>
  </Step>

  <Step title="인앱 메시지 생성">
    자세한 내용은 [드래그 앤 드롭으로 인앱 메시지 디자인](./design-your-in-app-message)을 참조하세요.
  </Step>

  <Step title="다음 Journey 설정">
    | Journey 설정 | 옵션                  | 설명                                                       |
    | ---------- | ------------------- | -------------------------------------------------------- |
    | **진입 규칙**  | 사용자가 세그먼트 기준과 일치합니다 | 메시지를 받을 자격이 있는 사용자입니다.                                   |
    | **대상**     | 세그먼트 포함 및 세그먼트 제외   | "구독한 사용자" 세그먼트를 포함합니다. 1단계의 "`iam_journey`" 세그먼트를 제외합니다. |
    | **종료 규칙**  | 전체 Journey를 이동했습니다  | 추가 조건이 필요하지 않습니다.                                        |
    | **재진입 규칙** | 예, 일정 시간 후          | 2분                                                       |

    **Journey 단계**

    표시하려는 메시지 수에 대해 이 순서를 반복합니다. 이 예시에서는 3개의 인앱 메시지(IAM 1, IAM 2, IAM 3)를 표시합니다.

    1. **인앱 메시지 단계를 추가합니다.**
       1. 메시지 이름을 지정합니다. 예: `IAM 1`.
       2. 메시지 하단에서 **전달 일정**을 **1일**로 설정합니다.

    2. **인앱 메시지 단계 앞에 예/아니요 분기 작업을 추가합니다.**
       1. 분기 조건을 설정합니다: 이전 메시지 동작: "`IAM 1` 조회됨".
       2. **아니요 분기를 따릅니다**
          1. `IAM 1`을 아니요 분기로 드래그합니다.
          2. 1일 동안 대기 단계를 추가합니다.
       3. **예 분기를 따릅니다**
          1. 예 분기 내에서 모든 메시지에 대해 1단계 및 2단계를 반복하고 `IAM 1`을 새 인앱 메시지(예: `IAM 2`, `IAM 3`)로 바꿉니다.
          2. 최종 예 분기에서 **사용자 태그 지정** 작업을 추가합니다.
             1. 초기 설정 → 1단계 세그먼트에서 사용된 동일한 키를 태그 지정합니다.
                1. 예: `iam_journey : 1`.

    <Frame caption="완전한 Journey">
      <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/iam-journey-complete.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=ed5c5c36d00e786c9ad91dffd9699564" alt="분기 및 일별 전달이 포함된 완전한 인앱 메시지 Journey" width="1376" height="1522" data-path="images/docs/iam-journey-complete.png" />
    </Frame>
  </Step>
</Steps>

## 제한된 진입 Journey

각 단계에서 경험을 제어하면서 사용자가 제한된 횟수만큼 Journey에 진입할 수 있도록 합니다.

| Journey 설정 | 설명                                                                     |
| ---------- | ---------------------------------------------------------------------- |
| **진입 규칙**  | 사용자가 세그먼트 기준과 일치합니다(예: 구독한 사용자 또는 관련 타겟 세그먼트).                         |
| **대상**     | 타겟 세그먼트를 포함합니다. 태그 `journey_count = 2`가 있는 사용자를 제외하여 진입을 두 번으로 제한합니다.  |
| **종료 규칙**  | 전체 Journey를 이동했습니다.                                                    |
| **재진입 규칙** | 예, 일정 시간 후: 15일.                                                       |
| **콘텐츠**    | 초기 진입 시 첫 번째 경험을 제공하고 재진입 시 맞춤형 두 번째 경험을 제공합니다. 두 번째 이후의 추가 진입을 방지합니다. |

<Frame caption="제한된 진입 설정">
  <img src="https://mintcdn.com/onesignal/Kryww3qVcdmjY27T/images/journeys/limited-entry-settings.png?fit=max&auto=format&n=Kryww3qVcdmjY27T&q=85&s=71647a50f354d2174200298b11678e6b" alt="대상 제외 및 재진입 규칙이 있는 제한된 진입 Journey 설정" width="646" height="1490" data-path="images/journeys/limited-entry-settings.png" />
</Frame>

**초기 설정**

<Steps>
  <Step title="태그 전략 준비">
    `journey_count`라는 사용자 태그를 사용하여 진입을 추적합니다. 태그는 Journey에서 설정할 때 자동으로 생성됩니다. 자세한 내용은 [태그 작업](./journeys-actions#tag-user)을 참조하세요.
  </Step>

  <Step title="대상 포함/제외 구성">
    Journey 대상에서:

    * 타겟 세그먼트를 포함합니다(예: "구독한 사용자").
    * 사용자 태그 `journey_count`가 `2`인 사용자를 제외합니다.
  </Step>

  <Step title="재진입 규칙 설정">
    재진입 규칙을 "예, 일정 시간 후: 15일"로 설정합니다.
    이렇게 하면 첫 번째 실행과 두 번째 실행 사이에 정확히 한 번의 재진입이 허용됩니다.
  </Step>
</Steps>

**Journey 단계**

<Frame caption="제한된 진입 흐름">
  <img src="https://mintcdn.com/onesignal/Kryww3qVcdmjY27T/images/journeys/limited-entry.png?fit=max&auto=format&n=Kryww3qVcdmjY27T&q=85&s=3d8652adedf2610bb444ee217eb52856" alt="journey_count 태그를 기반으로 한 예/아니요 분기가 있는 제한된 진입 Journey 흐름" width="932" height="1468" data-path="images/journeys/limited-entry.png" />
</Frame>

<Steps>
  <Step title="시작 부분에 예/아니요 분기 추가">
    조건: 사용자 태그 `journey_count`가 `1`과 같습니다.

    * **예 분기** = 재방문 사용자(두 번째 진입).
    * **아니요 분기** = 처음 사용하는 사용자(아직 태그가 없음).
  </Step>

  <Step title="아니요 분기(첫 번째 진입)">
    * 사용자 태그 지정 작업 추가: `journey_count`를 `1`로 설정합니다.
    * 처음 사용하는 사용자를 위한 메시지와 작업을 보냅니다.
    * 필요에 따라 끝까지 계속하거나 추가 로직을 진행합니다.
  </Step>

  <Step title="예 분기(두 번째 진입)">
    * 사용자 태그 지정 작업 추가: `journey_count`를 `2`로 설정합니다.
    * 재방문 사용자를 위한 메시지와 작업을 보냅니다.
    * 필요에 따라 끝까지 계속하거나 추가 로직을 진행합니다.
  </Step>

  <Step title="제한 적용">
    대상에서 `journey_count = 2`인 사용자를 제외하므로 세 번째 진입 시도는 자동으로 차단됩니다.
  </Step>
</Steps>

## 특정 요일에 반복되는 Journey

요일에 맞춰 반복되는 메시지를 보냅니다(예: 주간 프로모션, 이벤트 미리 알림).

| Journey 설정 | 설명                                                |
| ---------- | ------------------------------------------------- |
| **진입 규칙**  | 사용자가 세그먼트 기준과 일치합니다(예: 구독한 사용자 또는 다른 관련 타겟 세그먼트). |
| **대상**     | 타겟 세그먼트를 포함합니다.                                   |
| **종료 규칙**  | 전체 Journey를 이동했습니다.                               |
| **재진입 규칙** | 예, 일정 시간 후: 7일.                                   |
| **콘텐츠**    | 특정 요일에 보내는 주간 메시지(예: 매주 금요일).                     |

<Frame caption="반복되는 Journey 설정">
  <img src="https://mintcdn.com/onesignal/lYMMkFJp3v40a2sJ/images/journeys/recurring-journey-settings.png?fit=max&auto=format&n=lYMMkFJp3v40a2sJ&q=85&s=774b448a2c3789fcf5173ad71630d2aa" alt="7일 재진입이 있는 반복 Journey 설정" width="648" height="1446" data-path="images/journeys/recurring-journey-settings.png" />
</Frame>

**초기 설정**

<Steps>
  <Step title="대상 구성">
    타겟 세그먼트를 포함하여 적격 사용자가 주 중 언제든지 Journey에 진입할 수 있도록 합니다.
  </Step>

  <Step title="재진입 규칙 설정">
    재진입 규칙을 "예, 일정 시간 후: 7일"로 설정하여 주간 반복을 활성화합니다.

    * 재진입 타이머는 사용자가 Journey에 진입했을 때가 아니라 **종료**했을 때 시작됩니다.
    * 7일 재진입으로 다음 주의 시간 창에 맞게 사용자가 재진입할 수 있습니다.
    * 이중 전송을 방지하려면 재진입 기간이 **시간 창 기간보다 길어야** 합니다.

    자세한 내용은 [반복 전송을 위한 시간 창 사용](./journeys-actions#using-time-windows-for-recurring-sends)을 참조하세요.
  </Step>
</Steps>

**Journey 단계**

<Frame caption="반복되는 Journey 흐름">
  <img src="https://mintcdn.com/onesignal/lYMMkFJp3v40a2sJ/images/journeys/recurring-journey-steps.png?fit=max&auto=format&n=lYMMkFJp3v40a2sJ&q=85&s=12657ad8e9b0cfc2de32a9d87f9eed2c" alt="시간 창 노드와 메시지 단계가 있는 반복 Journey 흐름" width="598" height="1460" data-path="images/journeys/recurring-journey-steps.png" />
</Frame>

<Steps>
  <Step title="시간 창 노드 추가(첫 번째 단계)">
    타겟 요일(예: 금요일)에 대해 필터링하도록 시간 창을 구성합니다.
    Journey에 진입하는 사용자는 다음 일치하는 요일까지 대기합니다.
  </Step>

  <Step title="시간 창 후에 메시지 추가">
    요일에 도달하면 메시지가 전송되도록 시간 창 바로 다음에 메시지 노드를 배치합니다.
  </Step>

  <Step title="Journey 종료">
    메시지가 전송된 후 사용자가 종료하도록 합니다. 7일 후 재진입하면 매주 다시 참여하고 반복됩니다.
  </Step>
</Steps>

<Tip>
  매주 동일한 내용을 반복하지 않도록 메시지 콘텐츠를 정기적으로 업데이트하세요.
</Tip>

## 프로그레시브 Journey(이벤트 기반)

[커스텀 이벤트](./custom-events)와 [대기 조건](./journeys-actions#wait-until)을 사용하여 사용자 진행 상황에 따라 참여를 확대합니다.

| Journey 설정 | 설명                                                                                                                                                                                                |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **진입 규칙**  | **커스텀 이벤트** = `Progression_Level`, 필터 `progression_level = 0`.                                                                                                                                    |
| **대상**     | 선택적 세그먼트 필터입니다. 모든 사용자에 대해 실행하거나 하위 집합으로 제한할 수 있습니다. 태그가 필요하지 않습니다.                                                                                                                               |
| **종료 규칙**  | - 전체 Journey를 이동했습니다.<br />- 또는 최대 진행 레벨에 도달했을 때(예: `progression_level = 3`).<br />- 선택 사항: **대기** 노드가 만료되면 종료합니다.<br />- 선택 사항: **대기** 노드에서 분기하여 이벤트를 완료하지 않은 사용자에게 태그를 지정하고 재참여 Journey로 안내합니다. |
| **재진입 규칙** | 아니요                                                                                                                                                                                               |
| **콘텐츠**    | 사용자가 마일스톤을 완료함에 따라 확대되는 단계 기반 메시지(이 예시에서는 이메일).                                                                                                                                                   |

<Frame caption="프로그레시브 Journey 흐름">
  <img src="https://mintcdn.com/onesignal/86gjHZhU_WHClFAO/images/journeys/progression-journeys.png?fit=max&auto=format&n=86gjHZhU_WHClFAO&q=85&s=d1115ca7a2a7c06aa0cc0fa4b81a0533" alt="각 레벨 마일스톤에 대한 wait-until 노드가 있는 프로그레시브 Journey 흐름" width="690" height="1482" data-path="images/journeys/progression-journeys.png" />
</Frame>

**Journey 단계**

<Steps>
  <Step title="사용자가 Journey에 진입">
    모든 적격 사용자는 진입 규칙에 따라 진입합니다.
    트리거: `progression_level = 0`인 **커스텀 이벤트** `Progression_Level`.
    시작: **즉시**.
  </Step>

  <Step title="레벨 1">
    * `progression_level = 1`로 커스텀 이벤트 `Progression_Level`이 발생할 때까지 대기합니다.
    * 전송: **레벨 1 완료!** 메시지.
    * (선택 사항) 대기 노드에 만료를 적용 → 마일스톤에 도달하지 않으면 사용자를 종료합니다.
    * (선택 사항) 분기: 만료에 도달하면 사용자에게 태그를 지정하고 재참여 Journey로 보냅니다.
  </Step>

  <Step title="레벨 2">
    * `progression_level = 2`로 커스텀 이벤트 `Progression_Level`이 발생할 때까지 대기합니다.
    * 전송: **레벨 2 완료, 잘하고 있습니다!** 메시지.
    * (선택 사항) 만료를 적용하거나 재참여로 분기/태그를 지정합니다.
  </Step>

  <Step title="레벨 3">
    * `progression_level = 3`으로 커스텀 이벤트 `Progression_Level`이 발생할 때까지 대기합니다.
    * 전송: **레벨 3에 도달했습니다!** 메시지.
    * (선택 사항) 만료를 적용하거나 재참여로 분기/태그를 지정합니다.
  </Step>

  <Step title="종료">
    사용자가 레벨 3을 완료하거나 대기 노드가 만료되면 Journey를 종료합니다.
    선택적으로 분기/태그 경로를 사용하여 정체된 사용자를 재참여 트랙으로 라우팅합니다.
    일정: **즉시 시작**, **중지 안 함**.
  </Step>
</Steps>

<Tip>
  이 방법은 실제 참여 신호가 발생할 때만 진행이 이루어지도록 합니다. 만료 및 분기/태그 로직을 추가하면 정체된 사용자를 우아하게 처리할 수 있습니다 — 종료하거나 재참여 Journey로 다시 라우팅합니다.
</Tip>

***

## 클릭한 액션 버튼으로 Journey 분기

어떤 푸시 알림 액션 버튼을 탭했는지에 따라 다른 Journey 경로로 사용자를 라우팅합니다. 이 패턴은 [액션 버튼](./action-buttons), [커스텀 이벤트](./custom-events), [Wait Until](./journeys-actions#wait-until) 단계를 사용하여 단순히 클릭했는지 여부가 아니라 특정 버튼 클릭으로 사용자를 분기합니다.

<Info>
  이 예시는 버튼 클릭을 캡처하고 커스텀 이벤트를 보내기 위한 웹사이트 또는 앱 코드가 필요합니다. OneSignal 대시보드만으로는 완료할 수 없습니다.
</Info>

| Journey 설정 | 설명                                                  |
| ---------- | --------------------------------------------------- |
| **진입 규칙**  | 사용자가 세그먼트 기준과 일치합니다(예: 구독한 사용자 또는 캠페인별 세그먼트).       |
| **종료 규칙**  | 전체 Journey를 이동했습니다.                                 |
| **재진입 규칙** | 아니요                                                 |
| **콘텐츠**    | 여러 액션 버튼이 있는 푸시를 보내고, 사용자가 탭한 버튼에 따라 후속 메시지를 분기합니다. |

내장된 [예/아니요 분기](./journeys-actions#yesno-branch) 메시지 동작 조건은 사용자가 메시지를 **클릭**했는지 또는 **전달**되었는지를 감지하지만 *어떤* 버튼을 클릭했는지는 감지하지 않습니다. 특정 버튼으로 분기하려면 클릭 이벤트에서 액션 ID를 캡처하고 Journey가 분기할 수 있는 커스텀 이벤트 속성으로 보냅니다.

<Steps>
  <Step title="푸시에 액션 버튼 추가">
    Journey(또는 [템플릿](./templates))에서 푸시 메시지를 만들 때 **고급 옵션 > 액션 버튼**을 열고 각 버튼에 고유한 **액션 ID**를 할당합니다.

    **예**: 두 개의 CTA가 있는 프로모션 푸시:

    * 버튼 1: "지금 쇼핑" → 액션 ID: `shop_now`
    * 버튼 2: "자세히 알아보기" → 액션 ID: `learn_more`

    전체 설정 세부 사항은 [액션 버튼](./action-buttons)을 참조하세요.
  </Step>

  <Step title="클릭 리스너 추가 및 커스텀 이벤트 보내기">
    웹사이트 또는 앱에서 알림 클릭 이벤트를 수신하고 액션 ID를 속성으로 포함하는 커스텀 이벤트를 보냅니다.

    <Note>
      Web SDK 예시는 버전 `160500` 이상이 필요합니다. 커스텀 이벤트를 추적하려면 사용자가 [로그인](./web-sdk-reference#login)되어 있어야 합니다.
    </Note>

    <CodeGroup>
      ```javascript Web SDK theme={null}
      OneSignalDeferred.push(function(OneSignal) {
        OneSignal.Notifications.addEventListener("click", function(event) {
          var actionId = event.result.actionId;
          if (actionId) {
            OneSignal.User.trackEvent("cta_clicked", { button: actionId });
          }
        });
      });
      ```

      ```kotlin Android SDK theme={null}
      OneSignal.Notifications.addClickListener { event ->
          val actionId = event.result.actionId
          if (actionId != null) {
              OneSignal.User.trackEvent("cta_clicked", mapOf("button" to actionId))
          }
      }
      ```

      ```swift iOS SDK theme={null}
      let listener = { (event: OSNotificationClickEvent) in
          if let actionId = event.result.actionId {
              OneSignal.User.trackEvent("cta_clicked", properties: ["button": actionId])
          }
      }
      OneSignal.Notifications.addClickListener(listener)
      ```
    </CodeGroup>

    이벤트 요구사항 및 제한에 대해서는 [커스텀 이벤트](./custom-events)를 참조하세요.
  </Step>

  <Step title="Journey에 Wait Until 단계 추가">
    Journey의 푸시 메시지 단계 이후:

    1. **Wait Until** 단계를 추가합니다.
    2. 각 버튼에 대한 조건 추가: 속성 `button`이 액션 ID(예: `shop_now`)와 같은 커스텀 이벤트 `cta_clicked`.
    3. 분기하려는 각 액션 ID(예: `learn_more`)에 대한 추가 조건을 추가합니다.
    4. **만료**를 설정합니다(예: 3일). 그러면 어떤 버튼도 클릭하지 않은 사용자가 폴백 경로로 계속 진행합니다.

    사용자는 **처음 충족한 조건**의 분기를 따릅니다. 만료 전에 조건이 충족되지 않으면 만료 분기를 따릅니다.
  </Step>

  <Step title="각 분기에 후속 메시지 추가">
    Wait Until 단계 이후 각 분기에 적절한 후속 메시지 또는 액션을 추가합니다:

    * **"지금 쇼핑" 분기**: 제품 추천 또는 할인 코드를 보냅니다.
    * **"자세히 알아보기" 분기**: 교육 콘텐츠 또는 기능 개요를 보냅니다.
    * **만료 분기**: 재참여 메시지를 보내거나 Journey를 종료합니다.
  </Step>
</Steps>

<Tip>
  여러 Wait Until 단계를 연결하여 후속 인터랙션도 분기할 수 있습니다 — Journey의 Wait Until 단계 수에는 제한이 없습니다.
</Tip>

***

## FAQ

### 매일 메시지를 보내도록 예약할 수 있나요?

예. 첫 번째 단계로 [시간 창](./journeys-actions#time-window) 노드를 추가하고 메시지를 보내려는 시간(예: 사용자 시간대로 오전 10시\~오후 6시)으로 매일 구성합니다. 그런 다음 1일보다 짧지만 **시간 창 기간보다 긴** 시간 후에 재진입하도록 **재진입 규칙**을 설정합니다(예: 8시간 창에 대해 12시간). 이렇게 하면 동일한 창 내에서 이중 전송 위험 없이 다음 날의 시간 창에 맞게 사용자가 재진입합니다.

### Journey에서 다른 메시지를 A/B 테스트할 수 있나요?

예. 사용자를 균등하게 나누기 위해 [분할 분기](./journeys-actions#random-split) 노드를 추가합니다(예: 50/50). 각 분기에 다른 메시지 템플릿을 배치한 다음 Journey가 실행된 후 두 템플릿 간의 분석을 비교합니다.

### 사용자가 Journey에 진입할 수 있는 횟수를 제한하려면 어떻게 하나요?

태그(예: `journey_count`)를 사용하여 진입을 추적합니다. 사용자가 진입할 때마다 태그를 증가시키고, 태그가 원하는 한도에 도달하면 사용자를 차단하는 대상 제외 규칙을 추가합니다. 위의 [제한된 진입 Journey](#limited-entry-journey) 예시를 참조하세요.

### 반복 Journey가 잘못된 요일에 전송된 이유는 무엇인가요?

[시간 창](./journeys-actions#time-window) 노드는 시간대 데이터가 있는 경우 사용자의 현지 시간대로 필터링합니다. 사용자에게 시간대 데이터가 없으면 앱의 기본 시간대를 기준으로 메시지가 전송됩니다. 시간 창 설정과 사용자 시간대 데이터가 올바른지 확인하세요.

### 실행 중인 Journey를 중지하려면 어떻게 하나요?

Journey 설정에서 Journey 상태를 **일시 중지** 또는 **중지**로 설정합니다. 일시 중지된 Journey는 현재 단계에서 사용자를 유지합니다. 중지된 Journey는 모든 사용자를 즉시 종료합니다. 자세한 내용은 [Journey 설정](./journeys-settings)을 참조하세요.

***

## 관련 페이지

<Columns cols={2}>
  <Card title="Journey 개요" icon="route" href="./journeys-overview">
    Journey 소개 및 작동 방식.
  </Card>

  <Card title="Journey 액션" icon="code-branch" href="./journeys-actions">
    대기 단계, 분기 로직, 시간 창 및 분할 경로를 추가합니다.
  </Card>

  <Card title="Journey 설정" icon="gear" href="./journeys-settings">
    진입 규칙, 종료 규칙, 재진입 및 예약을 구성합니다.
  </Card>

  <Card title="Journey 메시지" icon="envelope" href="./journeys-messages">
    Journey에서 푸시, 이메일, SMS 및 인앱 메시지 단계를 구성합니다.
  </Card>

  <Card title="장바구니 포기" icon="cart-shopping" href="./abandoned-cart">
    장바구니 포기 Journey를 구축하기 위한 전체 안내.
  </Card>

  <Card title="커스텀 이벤트" icon="bolt" href="./custom-events">
    Journey를 트리거하고 개인화를 위한 이벤트 속성을 전달합니다.
  </Card>

  <Card title="Journey 분석" icon="chart-bar" href="./journeys-analytics">
    전달 지표, 사용자 활동 및 전환 인사이트로 Journey 성과를 추적합니다.
  </Card>
</Columns>

<AccordionGroup>
  <Accordion title="OneSignal 블로그의 추가 리소스">
    * [사용자 참여 극대화: 푸시 알림과 이메일의 시너지](https://onesignal.com/blog/use-push-notifications-and-email-together/)
    * [Journey로 지속적으로 가치 창출](https://onesignal.com/blog/consistently-drive-value-with-journeys/)
    * [크로스 채널 Journey를 위한 이메일로 참여도 향상](https://onesignal.com/blog/increase-engagement-with-email-for-cross-channel-journeys/)
    * [Journey를 위한 인앱 및 SMS로 유지율 개선](https://onesignal.com/blog/improve-retention-with-in-app-and-sms-for-journeys/)
  </Accordion>
</AccordionGroup>
