# 웹훅

<Aside type="caution" icon="setting" title="개발자 지원 필요">
 웹훅 요소를 구성하려면 개발팀의 도움이 필요합니다. 시작하려면 이 가이드를 개발팀과 공유하세요.
</Aside>

웹훅을 사용하면 Journey 데이터를 분석, CRM 시스템, 마케팅 도구와 같은 외부 서비스로 보낼 수 있습니다. 다음을 수행할 수 있습니다:

* 고객이 Journey에서 특정 행동을 취할 때 외부 시스템에 알림
* 분석 도구로 고객 데이터 전송
* 특정 Journey 이벤트에 대해 타사 이메일, SMS 또는 WhatsApp 트리거

<Aside type="note">
다양한 사용 사례 및 서비스에 대한 웹훅 구현 방법의 몇 가지 예시를 확인하세요: [웹훅 통합 샘플](/ko/developer/guides/customer-journey/webhook-samples/)
</Aside>

## 웹훅 요소 설정 방법 
### 웹훅 요소 추가
**웹훅** 요소를 캔버스로 드래그 앤 드롭하세요. 타사 서비스로 보낼 Journey 정보를 염두에 두고 원하는 곳 어디에나 **웹훅**을 배치하세요.

<img src="/journey-elements-README-40.webp" alt="이름 및 요청 설정이 있는 캔버스 위의 웹훅 요소"/>

### 웹훅 단계 이름 지정 및 요청 URL 및 유형 지정
**단계 이름** 필드에 웹훅의 이름을 입력합니다. 데이터를 보내는 서비스나 사용 사례에 따라 웹훅의 이름을 지정하면 편리할 수 있습니다.

다음으로 **URL** 필드에 데이터를 보낼 요청 URL을 지정합니다. URL 필드 옆의 **요청 유형** 드롭다운에서 `GET` 또는 `POST` 요청 유형을 선택합니다.
<img src="/journey-elements-webhook-1.webp" alt="GET 또는 POST 메서드를 선택하기 위한 URL 필드와 REQUEST TYPE 드롭다운을 보여주는 웹훅 구성 인터페이스"/>
### 헤더 구성
**헤더** 섹션에서 콘텐츠 유형을 설정합니다. 

기본적으로 콘텐츠 유형은 **application/json**입니다. 웹훅을 보내는 서비스에 다른 콘텐츠 유형이 필요한 경우 **Content-Type** 헤더 값에 적절한 유형을 입력하세요. 

콘텐츠 유형의 예는 다음과 같습니다:

* `x-www-form-urlencoded`
* `text/plain`
* `text/xml`

필요한 경우 **+ 헤더 추가**를 클릭하여 추가 헤더를 추가합니다. 헤더 옆의 'x' 아이콘을 클릭하여 헤더를 제거할 수 있습니다.

예를 들어, 일부 API는 **HTTP 기본 인증**이 필요할 수 있습니다. 이러한 요청을 인증하려면 다음을 수행하세요:

1. 일반 텍스트 편집기를 열고 사용자 이름과 비밀번호를 공백 없이 콜론으로 구분하여 입력합니다. 예: `myuser:mypass`
2. 이 문자열을 Base64로 인코딩합니다.
3. 결과로 나온 Base64 문자열(예: `bXl1c2VyOm15cGFzcw==`)을 복사합니다.
4. 웹훅 설정에서 값으로 `Basic <YOUR BASE64 STRING>`과 같이 Authorization 헤더를 추가합니다. "Basic"이라는 단어 뒤에 공백이 있는지 확인하세요.

<img src="/journey-elements-webhook-2.webp" alt="Content-Type 및 Authorization 헤더를 보여주는 웹훅 설정의 기본 인증에 대한 Authorization 헤더 예시"/>
### JSON 요청 본문 추가
**데이터** 섹션에 JSON 요청 본문을 입력합니다. 요청 본문이 올바른 JSON 형식인지 확인하세요.

<Aside type="note">
POST 요청이 전송될 때 동적 데이터 플레이스홀더에 대한 값이 없으면 null 값이 전송됩니다.
</Aside>

예시:
```
{
  "hwid": "{{device:hwid}}"
}
```



### 동적 데이터 및 매크로 사용

**데이터 빌더** 패널을 사용하면 동적 정보(예: 사용자, 기기, 태그 또는 이벤트 데이터)를 JSON 요청 본문에 직접 삽입할 수 있습니다. 동적 데이터를 사용하면 Journey를 진행하는 개별 사용자에게 특정한 값을 포함할 수 있습니다.

이를 위해 다음을 수행합니다: 
1. **카테고리**를 선택합니다. 세 가지 카테고리에서 데이터를 가져올 수 있습니다:

- **기기:** 사용자의 기기와 관련된 기술 정보가 필요할 때 기기 데이터를 사용합니다.

- **태그:** 사용자 프로필에 저장된 정보를 보내고 싶을 때 태그 데이터를 사용합니다.

- **이벤트:** 웹훅이 Journey의 트리거 이벤트에서 값을 보내야 할 때 이벤트 데이터를 사용합니다.

2. **매개변수**(예: HWID, 선호 카테고리 등)를 선택합니다.
3. Pushwoosh는 다음과 같은 매크로를 생성합니다:

```
{{tag:Language}}
```

4. 매크로를 복사하여 데이터 섹션의 JSON 본문에 붙여넣습니다.

웹훅이 라이브 Journey에서 실행되면 Pushwoosh는 자동으로 매크로를 해당 사용자의 실제 값으로 대체합니다.

<img src="/journey-elements-webhook-3.webp" alt="웹훅 요청 본문에 동적 데이터 플레이스홀더 삽입"/>

### 웹훅 응답 데이터를 변수에 매핑

데이터를 보내는 것 외에도 웹훅 요소는 수신한 응답에서 데이터를 캡처하여 변수로 변환할 수도 있습니다. 이 변수들은 나중에 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/#use-a-date-from-a-webhook-response)을 예약할 수 있습니다. 전체 Journey 예시는 [Journey에서 웹훅 응답 데이터 사용하기](/ko/product/customer-journey/journey-elements/using-webhook-response-data-in-journeys/)를 참조하세요.

**응답 매핑** 섹션에서 **+ 매핑 추가**를 클릭하고 캡처하려는 각 값에 대해 두 개의 필드를 채웁니다:

* **경로:** 응답 JSON 본문 내 값의 위치
* **속성:** 나중에 Journey에서 이 값을 참조하는 데 사용하는 이름

<img src="/journey-elements-webhook-4.webp" alt="웹훅 설정에서 Path 및 Attribute 필드와 매핑 추가 버튼이 있는 응답 매핑 섹션"/>

예를 들어, CRM이 다음과 같이 응답하는 경우:

```
{
  "data": {
    "user": {
      "id": "789xyz"
    }
  }
}
```

**경로**를 `data.user.id`로, **속성**을 `crm_user_id`로 설정하여 해당 ID를 캡처합니다.

<Aside type="note">
매핑에 대해 알아야 할 몇 가지 사항:

- **경로**는 일반적인 점으로 구분된 경로입니다(객체 키 및 배열의 경우 숫자 인덱스, 예: `results.0.code`). 와일드카드나 필터를 지원하지 않으므로 한 번에 하나의 특정 값만 가리킬 수 있습니다.
- 값은 JSON 응답에서 오는 그대로(텍스트, 숫자 또는 true/false) 저장됩니다. 유형 변환은 없습니다. **시간 지연** 요소에서 값을 날짜로 사용하려는 경우, 서비스가 **시간 지연**이 지원하는 날짜 형식 중 하나로 값을 반환하는지 확인하세요.
- 응답이 유효한 JSON이 아니거나 **경로**가 아무것도 일치하지 않으면 해당 사용자에 대해 해당 변수가 생성되지 않습니다. 오류가 표시되지 않으며 **웹훅** 단계는 여전히 정상적으로 완료됩니다.
</Aside>

<Aside type="caution">
64KB보다 큰 응답 본문은 매핑을 위해 전혀 처리되지 않습니다. 값을 매핑하려는 경우 엔드포인트가 다시 보내는 응답을 합리적으로 작게 유지하세요.
</Aside>

<LinkCard title="Journey에서 웹훅 응답 데이터 사용하기" href="/product/customer-journey/journey-elements/using-webhook-response-data-in-journeys/" />

### 웹훅 테스트
**웹훅 테스트**를 클릭하여 웹훅 구성이 올바른지, 요청이 성공적으로 전송되었는지 확인합니다.

### 구성 저장
**적용**을 클릭하여 웹훅 구성을 저장합니다.