> ## Documentation Index
> Fetch the complete documentation index at: https://guide.blux.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 웹훅

> 웹훅 채널을 통해 메시지를 보낼 수 있어요.

**웹훅(Webhook) 이란?**

Blux는 메시지를 발송하는 것 말고도 외부 시스템에 API를 호출하여 다양한 작업을 자동화할 수 있는 웹훅 채널을 제공합니다.

웹훅을 활용하면 마케팅 자동화를 넘어서 운영, 고객 시스템과의 연동까지 확장할 수 있습니다.

**언제 웹훅을 사용하나요?**

웹훅은 Blux의 마케팅 시스템을 다른 서비스와 연결하는 고리 역할입니다.

예를 들어 다음과 같은 상황에서 활용할 수 있습니다.

* 특정 조건을 만족한 유저에게 자동으로 **쿠폰을 발급**하고 싶을 때
* 특정 조건을 달성했을 때 **외부 멤버십 시스템의 유저 등급을 변경**하고 싶을 때
* 메시지 발송 전후 **내부 서버에 발송 정보를 전달**하고 싶을 때
* **외부 CRM API를 사용**해서 알림을 보내고 싶을 때

***

## 웹훅 메시지 작성하기

캠페인 혹은 시나리오에서 \[웹훅] 채널을 클릭하면 다음과 같은 설정 화면이 나타납니다.

<Frame caption="웹훅 설정 화면">
  <img src="https://mintcdn.com/blux/y9pZclyJ7aVCZnFu/images/webhook_image.png?fit=max&auto=format&n=y9pZclyJ7aVCZnFu&q=85&s=899d2a20386974b21179efb6d0ff2c7e" alt="" width="1474" height="1068" data-path="images/webhook_image.png" />
</Frame>

웹훅 발송을 위해서는 4가지 항목을 설정해주세요.

| **항목**       | **설명**                                                                                          | **필수 여부** |
| :----------- | :---------------------------------------------------------------------------------------------- | :-------- |
| **HTTP 메서드** | GET, POST, PUT, PATCH, DELETE 중 1가지를 선택해주세요.                                                    | ✅         |
| **웹훅 주소**    | 호출하고자 하는 API의 엔드포인트 URL을 입력해주세요.                                                                | ✅         |
| **웹훅 헤더**    | API 인증이 필요한 경우, 헤더를 통해 인증 토큰 등을 전달할 수 있어요. <br />Content-Type: application/json은 기본으로 자동 설정됩니다. | ❌         |
| **웹훅 바디**    | 실제 전송될 바디에 들어갈 데이터를 키-값 형태로 지정해요.                                                               | ❌         |

***

## 웹훅 내용 개인화하기

웹훅 발송을 할 때 개인화 변수를 사용해서 발송하는 내용을 개인화 할 수 있습니다.

예를 들어, 특정 조건에 만족하는 유저에 대해서 쿠폰을 발급하고 싶다면, 유저의 식별자를 API 요청 바디로 넘겨줘야 합니다.

이런 경우 아래 예시와 같이 바디 파라미터 값에 `{{ user_id }}` 형태의 개인화 변수를 입력합니다.

<Frame caption="웹훅 사용 예시와 개인화 변수 입력">
  <img src="https://mintcdn.com/blux/y9pZclyJ7aVCZnFu/images/webhook_example.png?fit=max&auto=format&n=y9pZclyJ7aVCZnFu&q=85&s=333f84bc4eaa66580f2dfd75e33a3aec" alt="" width="1454" height="972" data-path="images/webhook_example.png" />
</Frame>

위 웹훅을 jeff라는 유저에게 보내게 되면 개인화 변수는 유저의 속성에 따라서 자동으로 치환됩니다.

아래는 위 웹훅을 보냈을 때 실제로 API 엔드포인트로 전달되는 Request Body입니다.

<CodeGroup>
  ```json json theme={null}
  {
      "user_id": "jeff",
      "coupon_type": "sale"
  }
  ```
</CodeGroup>

더 많은 변수를 보고 싶다면, 우측 아이콘 🪄 을 클릭해주세요.

***

## 사용 예시

<Frame caption="시나리오 웹훅 사용 화면">
  <img src="https://mintcdn.com/blux/y9pZclyJ7aVCZnFu/images/webhook_scenario.png?fit=max&auto=format&n=y9pZclyJ7aVCZnFu&q=85&s=9994ed34dc445d4d329cfc69fc4eb7d1" alt="" width="1926" height="1456" data-path="images/webhook_scenario.png" />
</Frame>

***

## 주의 사항

웹훅은 외부 시스템과의 연동을 위해 사용하는 채널입니다. 따라서 외부 시스템의 상태에 따라서 웹훅 요청이 실패할 수 있습니다.

<Info>
  웹훅을 발송할 때는 다음 2가지 상황에 대해서 재시도 요청이 이뤄집니다.

  * Status Code가 200이 아닌 경우
  * 5초 이내로 응답이 오지 않는 경우

  웹훅 요청에 대해서 실패했을 경우 총 2번 재시도 됩니다. 즉, **최대 3번**까지 요청이 이뤄집니다.
</Info>
