# 트리거 기반 진입

**트리거 기반 진입**은 사용자가 특정 이벤트(예: 특정 액션 수행)를 수행할 때 Journey를 시작합니다.
<Aside type="tip">
여러 개의 트리거 기반 진입점을 추가할 수 있습니다. 이 경우, 그 중 어느 것이든 Journey를 시작합니다.

<img src="/journey-elements-README-6.webp" alt="단일 Journey 캔버스에 있는 여러 개의 트리거 기반 진입점"/>
</Aside>

트리거 기반 진입을 설정하려면, 캔버스에서 진입 요소를 찾아 트리거 역할을 할 이벤트를 선택하세요.

> 이벤트 구성 방법에 대한 자세한 내용은 [이벤트](/ko/product/audience-data-and-segmentation/events/) 문서를 참조하세요.

선택한 이벤트에 속성이 있는 경우, 해당 속성을 사용하여 진입 조건을 좁힐 수 있습니다. 요소를 편집할 때 **조건 추가**를 클릭한 다음, 드롭다운 목록에서 속성을 선택하고 연산자와 값을 정의하세요.

> 사용 가능한 연산자에 대해서는 [유형별 태그 연산자](/ko/product/audience-data-and-segmentation/segmentation/create-segments/by-tags/#tag-operators-by-type)를 참조하세요.

<img src="/journey-elements-trigger-based-entry-1.webp" alt="트리거 역할을 할 이벤트 선택"/>

<Aside type="caution" title="중요">
- **시작 이벤트**에 대한 [`/postEvent`](/ko/developer/api-reference/user-centric-api#postevent) API 요청에 **HWID (하드웨어 ID) 또는 User ID** 중 하나를 포함하세요. User ID만 보내는 경우, Pushwoosh가 사용자의 기기를 자동으로 확인합니다.
- 진입하려면 사용자에게 최소 하나 이상의 등록된 기기가 있어야 합니다. 연결된 기기가 없는 User ID는 Journey에 진입할 수 없습니다.
</Aside>

## 캠페인에 진입할 사용자 정의

특정 이벤트가 발생했을 때 어떤 사용자가 Journey에 진입해야 하는지 정의합니다.

**캠페인에 진입할 사용자는?** 드롭다운을 사용하여 두 가지 사용 가능한 모드 중에서 선택하세요:

### 이벤트를 수행하는 사용자 (기본값)

이벤트를 트리거한 사용자가 Journey에 진입하는 사용자입니다.

![이벤트를 수행하는 사용자 선택](/journey-elements-trigger-based-entry-7.webp)

**예시**
사용자가 구매를 완료합니다 (`CheckoutSuccess` 이벤트). 동일한 사용자 (예: `User ID: 123`)가 감사 메시지, 제품 추천 또는 만족도 조사를 포함하는 구매 후 Journey에 진입합니다.



### 이벤트 속성의 사용자

이벤트를 트리거한 사용자를 등록하는 대신, 커스텀 이벤트 속성으로 하나 이상의 [`User ID`](/ko/product/pushwoosh-knowledge-hub/users-userids/)를 전달할 수 있습니다. 해당 속성에 나열된 사용자가 Journey에 진입합니다.

이를 위해, **이벤트 속성의 사용자**를 선택하고 속성 키(예: `recipient_ids`, `target_user_id`)를 선택하세요. 이 키는 이벤트 페이로드 구조와 일치해야 합니다.

![이벤트 속성의 사용자 선택](/journey-elements-trigger-based-entry-8.webp)

<Aside type="caution" title="개발자 지원 필요">
**이벤트 속성의 사용자** 모드를 올바르게 사용하려면, 앱 또는 백엔드에서 올바른 페이로드 구조를 보내야 합니다. 아래 예시를 개발팀과 공유해주세요.
</Aside>

##### 예시 페이로드 (단일 사용자)

```json
{
  "application": "XXXXX-XXXXX",
  "event": "invitation",         
  "attributes": {
      "targetId": 321
  },
  "userId": 123
}

```

`targetId`의 사용자 `321`이 Journey에 진입합니다.

##### 예시 페이로드 (여러 사용자)

여러 User ID를 제공하는 경우, 문자열의 JSON 배열을 사용하세요.

```javascript
{
    "application": "XXXXX-XXXXX",
    "event": "invitation",         
    "attributes": {
        "targetIds": [1,2,3,4]
    },
    "userId": 123
}

```

사용자 `1`, `2`, `3`, `4`가 Journey에 진입합니다.

#### 사용 사례

**댓글 알림**

누군가 사용자의 게시물에 댓글을 달면, 게시물 소유자에게 알림이 갑니다.

**예시:** 댓글 이벤트는 `target_user_id` 속성에 게시물 소유자의 ID를 포함합니다. 해당 사용자는 알림을 받기 위해 Journey에 진입합니다.

**추천 프로그램**

추천받은 사용자가 가입하거나 구매하면, 추천한 사람이 Journey에 추가됩니다.

**예시:** 사용자 `123`이 이벤트를 트리거하고, 추천인 `456`(`referrer_id` 속성에서)이 보상 캠페인에 진입합니다.

**선물 구매**

사용자가 선물을 구매하면, 수신자는 이벤트 페이로드의 `recipient_user_id`를 사용하여 Journey에 추가됩니다.

**예시** 사용자 `123`이 사용자 `456`을 위해 선물을 구매하면, 사용자 `456`은 알림, 온보딩 플로우 또는 감사 메시지를 받게 됩니다.



## 진입 가능 여부 설정

사용자가 트리거 기반 진입을 통해 Journey에 진입할 수 있는 시점을 제어합니다. 두 가지 옵션이 있습니다:

* **언제든지 진입 허용**: 사용자는 트리거 이벤트가 발생할 때마다 Journey에 진입할 수 있습니다.
* **특정 기간으로 진입 제한**: 사용자는 선택한 날짜 범위 내에서 트리거 이벤트가 발생한 경우에만 Journey에 진입할 수 있습니다.

  진입을 제한할 때 **시작일**, **종료일**, **시간대**를 선택하세요. 진입 기간은 선택한 시간대를 기준으로 시작일의 **00:00**에 시작하여 종료일의 **23:59**에 끝납니다.

![진입 가능 여부 설정](/journey-elements-trigger-based-entry-2.webp)


## 사용자가 동시에 가질 수 있는 세션 수 제어

각 사용자가 한 번에 하나의 Journey에만 참여할 수 있는지, 또는 여러 Journey에 병렬로 참여할 수 있는지 결정합니다.

드롭다운에서 다음 옵션 중 하나를 선택하세요:

* 사용자당 하나의 활성 세션
* 사용자당 여러 활성 세션

#### 사용자당 하나의 활성 세션

각 사용자는 캠페인에서 하나의 활성 세션만 가질 수 있습니다. 새 세션을 시작하기 전에 현재 세션을 완료하거나 종료해야 합니다.

![사용자당 하나의 활성 세션 선택](/journey-elements-trigger-based-entry-3.webp)
##### 사용 사례

* 사용자가 현재 Journey를 마칠 때까지 다시 시작해서는 안 되는 **온보딩 플로우**
* 사용자가 중복 알림을 받아서는 안 되는 **구독 갱신 알림**
* 사용자당 하나의 활성 캠페인 실행만 허용되는 **기간 한정 혜택 또는 체험판**
* 각 사용자가 재진입하기 전에 한 번만 의견을 제공하도록 보장하는 **피드백 수집 캠페인**

#### 사용자당 여러 활성 세션

사용자는 캠페인에서 하나 이상의 활성 세션을 가질 수 있습니다. 각 세션은 고유한 이벤트 속성(예: `order_id`, `product_id`)으로 식별되어야 합니다.

이를 설정하려면:

1. 드롭다운에서 **사용자당 여러 활성 세션**을 선택합니다.

2. 세션 식별자 속성(예: `order_id`, `product_id`)을 선택합니다. 이 속성은 한 세션을 다른 세션과 구별합니다.

![사용자당 여러 활성 세션 선택](/journey-elements-trigger-based-entry-4.webp)

<Aside type="caution" title="중요">
이 속성은 모든 관련 Journey 이벤트(예: **트리거 대기** 또는 **전환 목표**)에 포함되어야 합니다. 세션 식별자 속성이 누락된 경우, 시스템은 이벤트를 특정 세션에 연결할 수 없습니다. 대신, 이벤트는 해당 사용자의 모든 활성 세션에 적용됩니다.
</Aside>

**예시**

* `order_id = "1001"`인 `OrderPlaced` → **세션 1** 시작

* `order_id = "1002"`인 `OrderPlaced` → **세션 2** 시작

`order_id` 없이 `OrderReady` 이벤트가 전송되면, 실제로는 하나의 주문만 준비되었더라도 세션 1과 세션 2 모두 "준비됨"으로 표시됩니다.

##### 사용 사례

* **전자상거래 구매**: 각 주문이 자체 Journey를 시작하므로 한 사용자의 여러 주문을 독립적으로 추적할 수 있습니다. *(속성: `order_id`)*
* **추천 프로그램**: 각 추천이 새 세션을 생성하여 한 사용자가 여러 친구를 추천할 수 있습니다. *(속성: `referral_id`)*
* **로열티 프로그램**: 병렬로 실행되는 다른 거래의 포인트나 보상을 추적합니다. *(속성: `transaction_id`)*
* **티켓 예약**: 각 예약이 자체 Journey를 시작하므로 사용자는 한 번에 여러 티켓을 관리할 수 있습니다. *(속성: `booking_id`)*
* **약속 예약**: 모든 약속이 별도의 세션으로 처리됩니다. *(속성: `appointment_id`)*


## 사용자가 캠페인에 재진입할 수 있는지 여부 제어

이미 Journey에 있는 사용자가 진입 이벤트를 다시 트리거할 때 어떤 일이 발생하는지 결정합니다.

드롭다운에서 다음 옵션 중 하나를 선택하세요:

* 재진입 허용 안 함 (기본값)
* 재진입 허용

#### 재진입 허용 안 함

이미 Journey에 있는 사용자는 재진입하지 않습니다. 사용자가 활성 세션에 있고 진입 이벤트를 다시 트리거하면, 새 트리거는 무시되고 사용자는 현재 세션을 계속 진행합니다.

**사용 사례**

* 신규 사용자가 Journey를 처음부터 끝까지 한 번만 거치고, 이벤트를 다시 트리거하더라도 처음으로 돌아가지 않고 현재 위치를 유지하는 **환영 및 온보딩 시리즈**
* 각 고객이 이벤트를 여러 번 트리거하더라도 프로모션이나 할인을 한 번만 받아야 하는 **일회성 혜택**
* 구독자가 다시 시작하여 동일한 이메일을 다시 받지 않고 콘텐츠를 계속 진행하는 **교육 및 육성 플로우**

#### 재진입 허용

이미 Journey에 있는 사용자는 현재 세션에서 제거되고 새 세션으로 재진입합니다. 사용자가 진입 이벤트를 트리거할 때마다 현재 세션이 종료되고 새 세션이 시작됩니다.

**사용 사례**

* 이전 세션의 오래된 가격에 대해 계속 알리는 대신, 재시작 시 새 가격을 반영해야 하는 **가격 하락 알림**
* 돌아온 비활성 사용자가 항상 시퀀스의 첫 번째 메시지부터 시작해야 하는 **고객 재확보 캠페인**


<Aside type="note">
재진입은 이미 Journey에 있는 사용자에게 어떤 일이 발생하는지를 제어합니다. 사용자가 병렬로 실행할 수 있는 세션 수에는 영향을 미치지 않습니다. 이는 [사용자가 동시에 가질 수 있는 세션 수 제어](#control-how-many-sessions-a-user-can-have-at-the-same-time)에서 구성됩니다.
</Aside>

진입 요소를 구성한 후, **적용**을 클릭하여 변경 사항을 저장하세요.


## 예시 시나리오: 여러 세션을 가진 전자상거래 주문 Journey

사용자가 주문할 때마다 알림을 보내고 싶다고 상상해보세요. 각 주문은 자체 Journey 세션을 가져야 합니다. 이를 위해, `OrderPlaced` 이벤트를 트리거로 사용하고 `order_id` 속성을 세션 식별자로 사용합니다.

1. `OrderPlaced` 이벤트를 생성하고 `order_id` 속성을 포함하는지 확인하세요. [이벤트 생성에 대해 더 알아보기](/ko/product/audience-data-and-segmentation/events/#implementation)

![OrderPlaced 이벤트 생성](/journey-elements-trigger-based-entry-5.webp)
2. 이 이벤트를 Journey의 트리거로 설정하세요.

![이 이벤트를 Journey의 트리거로 설정](/journey-elements-trigger-based-entry-6.webp)

3. 세션 설정에서 **사용자당 여러 활성 세션**을 선택하고 `order_id`를 세션 식별자로 선택하세요.

![사용자당 여러 활성 세션 선택](/journey-elements-trigger-based-entry-9.webp)

이 설정에서는 각 새 주문이 별도의 Journey 세션을 시작합니다.

* `order_id = 1001`인 `OrderPlaced`는 **세션 1**을 시작합니다
* `order_id = 1002`인 `OrderPlaced`는 **세션 2**를 시작합니다

4. 다음으로, 주문이 픽업 또는 배송 준비가 되었을 때를 추적하기 위해 [트리거 대기 요소](/ko/product/customer-journey/journey-elements/flow-controls/wait-for-trigger/)를 추가합니다. `OrderReady` 이벤트를 사용하며, 이 이벤트에도 동일한 `order_id`가 포함되어야 합니다.
   이를 통해 각 주문이 올바른 세션에서 업데이트되도록 보장합니다:
* `order_id = 1001`인 `OrderReady`는 **세션 1**에만 적용됩니다
* `order_id = 1002`인 `OrderReady`는 **세션 2**에만 적용됩니다
<Aside type="caution" title="중요">
이벤트에 `order_id`가 포함되어 있지 **않으면**, 시스템은 어떤 세션에 속하는지 알 수 없으며, 이벤트는 해당 사용자의 모든 활성 세션에 적용됩니다.
</Aside>

![트리거 대기 요소에서 OrderReady 이벤트 사용](/journey-elements-trigger-based-entry-10.webp)

5. 마지막으로, [전환 목표](/ko/product/customer-journey/journey-settings/#conversion-goals)를 추가합니다(예: `OrderDelivered` 이벤트). 이 이벤트에도 올바른 세션과 일치시킬 수 있도록 동일한 `order_id`가 포함되어야 합니다.
* `OrderDelivered`에 `order_id = "1001"`이 포함된 경우, **세션 1**에 대한 전환을 기록합니다.

* `OrderDelivered`에 `order_id = "1002"`가 포함된 경우, **세션 2**에 대한 전환을 기록합니다.
<Aside type="caution" title="중요">
`order_id`가 누락된 경우, 전환은 의도한 세션뿐만 아니라 해당 사용자의 모든 활성 세션에 적용됩니다.
</Aside>

![사용자당 여러 활성 세션 선택](/journey-elements-trigger-based-entry-11.webp)