# Journey에서 웹훅 응답 데이터 사용하기

## 개요

[웹훅 응답의 값을 매핑](/ko/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables)하면 Pushwoosh는 이를 변수로 저장하여 나중에 Journey에서 [이벤트 속성](/ko/product/audience-data-and-segmentation/events/#2-set-attributes)을 사용할 수 있는 모든 곳에서 사용할 수 있습니다.

<Aside type="note">
**Webhook** 요소를 추가하고 **응답 매핑**을 구성하려면 [Webhook](/ko/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables)을 참조하세요.
</Aside>

## 사용자 프로필 업데이트로 웹훅 값을 태그로 저장하기

[**Webhook**](/ko/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables)은 CRM 사용자 ID나 구독 상태와 같이 Pushwoosh가 아직 사용자 프로필에 저장하지 않은 외부 시스템의 데이터를 반환할 수 있습니다. [**사용자 프로필 업데이트**](/ko/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response)는 매핑된 값을 [태그](/ko/product/audience-data-and-segmentation/user-data-tags/tags/)로 저장하여 [세그먼트](/ko/product/audience-data-and-segmentation/segmentation/), [동적 콘텐츠](/ko/product/personalization/dynamic-content/) 및 이후 Journey 단계에서 사용할 수 있도록 합니다.

### 예시: CRM 사용자 ID를 태그로 저장하기

새로운 사용자가 앱에 가입하면 Journey는 CRM에 일치하는 레코드를 생성합니다. 반환된 CRM 사용자 ID를 태그로 저장하면 사용자가 Journey에 다시 들어올 때마다 중복 레코드를 생성하는 대신, 나중에 다른 Journey나 후속 Webhook 호출 등에서 동일한 CRM 레코드를 참조하거나 업데이트할 수 있습니다.

**Journey 흐름:** 트리거 기반 진입 → Webhook → 사용자 프로필 업데이트 → 종료

1. `SignUp` 이벤트에 대한 **트리거 기반 진입**으로 Journey를 생성합니다.
2. 진입 단계 뒤에 **Webhook** 요소를 추가합니다. 이름을 지정하고(예: `Create user in CRM`) 요청 URL을 CRM 사용자 생성 엔드포인트로 설정합니다.
3. **응답 매핑**에서 **경로**를 응답의 ID 필드(예: `data.user.id`)로 설정하고 **속성**을 `crm_user_id`로 설정합니다.

<img src="/journey-elements-webhook-response-data-1.webp" alt="경로 data.user.id와 속성 crm_user_id가 있는 웹훅 응답 매핑" />

4. **Webhook** 단계 뒤에 **사용자 프로필 업데이트** 요소를 추가합니다.

5. **동적 태그 값**에서 **+ 동적 값**을 클릭합니다. **태그**에서 CRM ID를 저장하는 태그를 선택합니다(필요한 경우 미리 생성). **이벤트**에서 지정한 이름(`Create user in CRM`)으로 웹훅 단계를 선택합니다. **동적 값**에서 `crm_user_id`를 선택합니다.
<img src="/journey-elements-webhook-response-data-2.webp" alt="CRM ID용 태그, 이벤트 웹훅 단계, 동적 값 crm_user_id가 있는 동적 태그 값" />
6. 브랜치 끝에 **종료**를 추가합니다.
<img src="/journey-elements-webhook-response-data-3.webp" alt="사용자 프로필 업데이트 단계 후 종료로 끝나는 Journey 브랜치" />

<Aside type="caution">
사용자에 대한 웹훅 값이 누락된 경우(응답이 JSON이 아니거나, **경로**가 확인되지 않거나, 호출이 실패한 경우) Pushwoosh는 해당 태그 업데이트를 건너뜁니다. 태그는 이전 값을 유지하거나 설정되지 않은 상태로 남으며, Journey는 이 단계에서 오류 없이 계속됩니다. 시작하기 전에 [**웹훅 테스트**](/ko/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook)를 실행하여 매핑을 확인하세요. [자세히 알아보기](/ko/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response).
</Aside> 

## 시간 지연으로 웹훅 값에서 지연 예약하기

방문 날짜, 갱신 마감일, 배송 기간 등은 종종 외부 예약 또는 청구 시스템에 존재합니다. [**Webhook**](/ko/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables)이 API 응답에서 날짜를 매핑한 후, [**시간 지연**](/ko/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response)은 예를 들어 약속 2일 전과 같이 해당 시점까지 Journey를 일시 중지하여 다음 메시지가 제시간에 발송되도록 할 수 있습니다.

### 예시: 응답의 날짜로 리마인더 예약하기

사용자가 앱에서 약속을 예약합니다. Journey는 예약 시스템에서 방문 날짜를 가져와 방문 2일 전에 푸시 리마인더를 보냅니다.


1. `AppointmentBooked` 이벤트에 대한 **트리거 기반 진입**으로 Journey를 생성합니다.
2. 진입 단계 뒤에 **Webhook** 요소를 추가합니다. 이름을 지정하고(예: `Get appointment details`) 요청 URL을 예약 시스템 API로 설정합니다.
3. **응답 매핑**에서 **경로**를 응답의 날짜 필드(예: `appointment.date`)로 설정하고 **속성**을 `visit_date`로 설정합니다.
<img src="/journey-elements-webhook-response-data-4.webp" alt="appointment.date를 visit_date로 응답 매핑하는 웹훅 단계" />
4. **Webhook** 단계 뒤에 **시간 지연** 요소를 추가합니다. **사용자/이벤트 데이터 기반**을 선택하고, **날짜 가져오기**를 **이벤트**로 설정하고, **이벤트**를 지정한 이름(`Get appointment details`)으로 웹훅 단계로 설정하고, **이벤트 값**을 `visit_date`로 설정하고, 지연을 **`2`일 전**으로 설정합니다.
<img src="/journey-elements-webhook-response-data-5.webp" alt="웹훅 visit_date에서 2일 전 오프셋으로 구성된 시간 지연" />
5. 사용자가 방문 2일 이내에 예약할 수 있는 경우, **시간 지연** 요소에서 **날짜가 과거이거나 비어 있는 경우 브랜치로 분할**을 활성화합니다. 이렇게 하면 **과거**와 **미래**의 두 브랜치가 생성됩니다. [날짜가 과거이거나 비어 있을 때 브랜치 분할하기](/ko/product/customer-journey/journey-elements/flow-controls/time-delay/#split-branches-when-the-date-is-in-the-past-or-empty)를 참조하세요.
6. 리마인더 메시지와 함께 **푸시** 단계를 추가합니다. 분할이 활성화된 경우, **과거**(즉시 전송)와 **미래**(**시간 지연** 후) 두 브랜치 모두에 이 **푸시**를 추가합니다.
7. 각 브랜치 끝에 **종료**를 추가합니다.
<img src="/journey-elements-webhook-response-data-6.webp" alt="과거와 미래 브랜치로 분할된 시간 지연, 각 브랜치에는 푸시 및 종료 단계가 있음" />

<Aside type="caution">
매핑된 값이 누락되었거나 유효한 날짜가 아닌 경우, 사용자는 이 단계에서 오류와 함께 Journey를 종료합니다.

방문일이 2일 이내인 경우, 사용자가 **시간 지연**에 도달했을 때 **`2`일 전** 목표는 이미 과거이므로, **날짜가 과거이거나 비어 있는 경우 브랜치로 분할**을 활성화하지 않으면 사용자는 오류나 리마인더 없이 Journey를 떠납니다.

태그를 변경하지 않고 계속 진행하는 [**사용자 프로필 업데이트**](/ko/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response)와 달리, **시간 지연**은 날짜가 누락되었거나, 유효하지 않거나, 과거인 경우(브랜치 분할 없이) 사용자를 중지시킵니다.
웹훅이 [지원되는 형식](/ko/product/customer-journey/journey-elements/flow-controls/time-delay/#delay-based-on-user-or-event-data)의 날짜를 안정적으로 반환하는지 확인하세요. 시작하기 전에 [**웹훅 테스트**](/ko/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook)를 실행하세요. [자세히 알아보기](/ko/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response).
</Aside>

## 유의사항

* **경로 구문:** 점으로 구분된 경로(예: `data.user.id`)를 사용합니다. 와일드카드와 필터는 지원되지 않습니다. 자세한 내용은 [웹훅 응답 매핑](/ko/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables)을 참조하세요.
* **응답 크기:** 64 KB보다 큰 응답은 매핑을 위해 처리되지 않습니다.
* **테스트:** 라이브 Journey에서 매핑된 값을 사용하기 전에 **Webhook** 요소에서 [**웹훅 테스트**](/ko/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook)를 실행하세요.