> For the complete documentation index, see [llms.txt](https://workspace-help.nhn-commerce.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://workspace-help.nhn-commerce.com/app-guide/shopby_webhook.md).

# \[샵바이] 웹훅(webhook) 가이드

샵바이에서 제공되는 다양한 웹훅 가이드를 안내 드립니다.

## 목차

* [#undefined-1](#undefined-1 "mention")
* [#webhook](#webhook "mention")
* [#undefined-2](#undefined-2 "mention")
* [#undefined-3](#undefined-3 "mention")
  * [#id-1](#id-1 "mention")
  * [#id-2](#id-2 "mention")
  * [#id-3](#id-3 "mention")
  * [#id-4](#id-4 "mention")
  * [#id-5](#id-5 "mention")
  * [#id-6](#id-6 "mention")
  * [#id-7](#id-7 "mention")

***

## 이해하기

* 웹훅(Webhook)이란 서버에서 특정 이벤트 발생했을 때 다른 서비스나 응용프로그램으로 알림을 보내는 기능입니다.
* 이를 사용하면 특정 이벤트가 발생했을 때 지정한 callback URL로 관련 이벤트 정보를 수신할 수 있습니다.
* 주기적으로 데이터를 조회하지 않고 원하는 이벤트에 대한 정보만 수신할 수 있어서 webhook은 리소스나 통신 측면에서 효율적입니다.
* 어떠한 이벤트가 발생했을 때 정보를 수신할 수 있는지는 제공 이벤트 항목 내용을 참고해 주시기 바랍니다.

{% hint style="warning" %}
웹훅 이벤트는 앱이 설치된 쇼핑몰에서 발생하는 이벤트 정보를 수신할 수 있으며,\
장애가 발생하여 발생한 이벤트에 대해 웹훅(Webhook)을 수신하지 못하는 경우 웹훅이 재 전송되지 않습니다.\
단, 수신하지 못한 웹훅은 [실패한 웹훅 조회하기 API](https://server-docs.shopby.co.kr/?url.primaryName=workspace/#/Webhook/get-webhooks-failed)로 조회할 수 있습니다.
{% endhint %}

***

## 웹훅(Webhook) 설정 방법

워크스페이스>셀러어드민에서 앱 등록/수정 시 개발 정보 탭에서 설정할 수 있습니다.\
지원 가능한 method : POST / PUT

1. 워크스페이스에 로그인하여 셀러어드민>상품>앱>\[T]개발 정보 화면에 접속합니다.
2. 사용할 웹훅(Webhook) 이벤트를 사용함으로 설정합니다.
3. method 및 이벤트 발생 시 웹훅(Webhook)을 수신할 URL을 설정합니다.
4. 설정된 내용을 \[저장] 합니다.

웹훅 설정 이후 앱이 쇼핑몰에 설치되어야 이벤트 정보를 수신할 수 있습니다.

{% hint style="success" %}
웹훅(Webhook)을 설정할 때는 관련된 server API의 권한이 있는 이벤트 항목만 사용할 수 있으며,

보유한 server API 권한을 삭제할 때는 관련 이벤트 항목의 웹훅(Webhook) 설정도 '사용 안 함'으로 설정해 주셔야 합니다.
{% endhint %}

{% hint style="warning" %}
판매앱의 정보를 변경하는 경우 심사 요청 후 심사가 승인되어야 변경된 정보가 반영됩니다.
{% endhint %}

***

## 제공 이벤트 항목

<table><thead><tr><th width="216">관련 server API</th><th>이벤트 유형</th><th>이벤트명</th></tr></thead><tbody><tr><td>-</td><td>CHANGE_APP_STATUS</td><td>앱 설치/삭제</td></tr><tr><td>전시 (=display)</td><td>PRODUCT_INQUIRY_ADDED</td><td>상품문의 등록</td></tr><tr><td>전시 (=display)</td><td>PRODUCT_INQUIRY_DELETED</td><td>상품문의 삭제</td></tr><tr><td>전시 (=display)</td><td>PRODUCT_REVIEW_ADDED</td><td>상품후기 등록</td></tr><tr><td>전시 (=display)</td><td>PRODUCT_REVIEW_DELETED</td><td>상품후기 삭제</td></tr><tr><td>운영 (=manage)</td><td>ACCUMULATION_ADDED</td><td>적립금 지급</td></tr><tr><td>운영 (=manage)</td><td>ACCUMULATION_SUBTRACTED</td><td>적립금 차감</td></tr><tr><td>운영 (=manage)</td><td>ACCUMULATION_SUBTRACT_ROLLBACK</td><td>적립금 차감 취소</td></tr><tr><td>운영 (=manage)</td><td>INQUIRY_ADDED</td><td>1:1문의 등록</td></tr><tr><td>운영 (=manage)</td><td>INQUIRY_MODIFIED</td><td>1:1문의 수정</td></tr><tr><td>운영 (=manage)</td><td>INQUIRY_DELETED</td><td>1:1문의 삭제</td></tr><tr><td>회원 (=member)</td><td>MEMBER_CREATED</td><td>회원가입</td></tr><tr><td>회원 (=member)</td><td>MEMBER_INFO_CHANGED</td><td>회원정보변경</td></tr><tr><td>회원 (=member)</td><td>MEMBER_GRADE_CHANGED</td><td>회원등급변경</td></tr><tr><td>회원 (=member)</td><td>MEMBER_GROUP_CHANGED</td><td>회원그룹변경</td></tr><tr><td>회원 (=member)</td><td>MEMBER_DORMANT</td><td>휴면회원 전환</td></tr><tr><td>회원 (=member)</td><td>MEMBER_RELEASED</td><td>휴면회원 해제</td></tr><tr><td>회원 (=member)</td><td>MEMBER_WITHDRAW</td><td>회원 탈퇴</td></tr><tr><td>주문 (=order)</td><td>CREATE_ORDER</td><td>주문 생성</td></tr><tr><td>주문 (=order)</td><td>CHANGE_ORDER_STATUS</td><td>주문 상태 변경</td></tr><tr><td>주문 (=order)</td><td>UPDATE_RECEIVER</td><td>수령자 정보 변경</td></tr><tr><td>주문 (=order)</td><td>ADD_TASK_MESSAGE</td><td>업무메시지 등록</td></tr><tr><td>주문 (=order)</td><td>UPDATE_TASK_MESSAGE</td><td>업무메시지 수정</td></tr><tr><td>주문 (=order)</td><td>DELETE_TASK_MESSAGE</td><td>업무메시지 삭제</td></tr><tr><td>상품 (=product)</td><td>PRODUCT_UPDATED</td><td>상품 등록/수정/삭제</td></tr></tbody></table>

***

## 이벤트별 샘플 데이터와 코드 정의

### 1. 앱 관련

<table><thead><tr><th>이벤트 유형</th><th>이벤트명</th><th data-hidden></th></tr></thead><tbody><tr><td>CHANGE_APP_STATUS</td><td>앱 설치/삭제</td><td></td></tr></tbody></table>

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "CHANGE_APP_STATUS", // 이벤트명
    "currentStatus": "ACTIVE", // 앱상태
    "appNo": 12345, // 앱일련번호
    "mallNo": 12345, // 쇼핑몰번호
    "appInstalledNo": 12345, // 앱설치번호
}
```

***

### 2. 전시 관련

| 이벤트 유형                    | 이벤트명    |
| ------------------------- | ------- |
| PRODUCT\_INQUIRY\_ADDED   | 상품문의 등록 |
| PRODUCT\_INQUIRY\_DELETED | 상품문의 삭제 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "mallNo": 12345, // 쇼핑몰번호
    "inquiryNo": 12345, // 상품문의번호
    "eventType": "PRODUCT_INQUIRY_ADDED" // 이벤트명 (삭제: PRODUCT_INQUIRY_DELETED)
}
```

| 이벤트 유형                 | 이벤트명    |
| ---------------------- | ------- |
| PRODUCT\_REVIEW\_ADDED | 상품후기 등록 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "mallNo": 12345, // 쇼핑몰번호
    "reviewNo": 12345, // 상품후기번호 (nullable — 쇼핑몰에서 단건 등록 시만 값, server API 다건 등록 시 null)
    "reviewNos": null, // 상품후기번호 리스트 (nullable — server API 다건 등록 시만 값, 쇼핑몰 단건 등록 시 null)
    "eventType": "PRODUCT_REVIEW_ADDED" // 이벤트명
}
```

| 이벤트 유형                   | 이벤트명    |
| ------------------------ | ------- |
| PRODUCT\_REVIEW\_DELETED | 상품후기 삭제 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "mallNo": 12345, // 쇼핑몰번호
    "reviewNo": null, // 상품후기번호 (nullable — 쇼핑몰에서 단건 삭제 시만 값)
    "reviewNos": [12345, 12346], // 상품후기번호 리스트 (nullable — server API 다건 삭제 시만 값, 삭제는 성공 건이 있을 때만 발송되어 빈 배열 없음)
    "eventType": "PRODUCT_REVIEW_DELETED" // 이벤트명
}
```

***

### 3. 운영 관련

#### <mark style="color:red;">**\[적립금]**</mark>

| 이벤트 유형              | 이벤트명   |
| ------------------- | ------ |
| ACCUMULATION\_ADDED | 적립금 지급 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "ACCUMULATION_ADDED", // 이벤트명
    "mallNo": 12345, // 쇼핑몰번호
    "memberNo": 135375046, // 회원번호
    "amount": 1000.0, // 적립금액 (실수형이라 1000.0 형태로 전달)
    "accumulationReserveReason": "ADD_MANUAL", // 적립 사유
    "reasonDetail": "테스트 지급", // 상세 사유 (값이 없으면 빈 문자열)
    "orderNo": null, // 주문번호 (nullable, 주문 연계 적립만 값 / 수동·등급·생일 적립은 null)
    "orderOptionNo": "0", // 주문옵션번호 (문자열, 값이 없으면 문자열 "null" 로 전달됨)
    "registerAdminNo": 4099, // 운영자번호 (nullable, 배치·자동 적립은 null)
    "reviewNo": null // 상품후기번호 (nullable, 후기 적립만 값)
}
```

| 이벤트 유형                   | 이벤트명   |
| ------------------------ | ------ |
| ACCUMULATION\_SUBTRACTED | 적립금 차감 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "ACCUMULATION_SUBTRACTED", // 이벤트명
    "mallNo": 12345, // 쇼핑몰번호
    "memberNo": 135375046, // 회원번호
    "amount": 1000.0, // 차감금액
    "accumulationReserveReason": "SUB_MANUAL", // 차감 사유
    "reasonDetail": "테스트 차감", // 상세 사유 (값이 없으면 빈 문자열)
    "orderNo": null, // 주문번호 (nullable)
    "orderOptionNo": null, // 주문옵션번호 (nullable)
    "registerAdminNo": 4099, // 운영자번호 (nullable)
    "reviewNo": null // 상품후기번호 (nullable)
}
```

| 이벤트 유형                           | 이벤트명      |
| -------------------------------- | --------- |
| ACCUMULATION\_SUBTRACT\_ROLLBACK | 적립금 차감 취소 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "ACCUMULATION_SUBTRACT_ROLLBACK", // 이벤트명
    "mallNo": 12345, // 쇼핑몰번호
    "memberNo": 135375046, // 회원번호
    "amount": 1000.0, // 차감 취소금액
    "accumulationReserveReason": "SUB_CANCEL", // 사유
    "reasonDetail": "주문 취소", // 상세 사유
    "orderNo": "202110110111111", // 주문번호 (차감 취소는 주문 기준이라 항상 값 존재)
    "orderOptionNo": null, // 주문옵션번호 (항상 null)
    "registerAdminNo": null, // 운영자번호 (nullable)
    "reviewNo": null // 상품후기번호 (항상 null)
}
```

***

#### <mark style="color:red;">**\[1:1문의]**</mark>

| 이벤트 유형            | 이벤트명     |
| ----------------- | -------- |
| INQUIRY\_ADDED    | 1:1문의 등록 |
| INQUIRY\_MODIFIED | 1:1문의 수정 |
| INQUIRY\_DELETED  | 1:1문의 삭제 |

```java
 // 샘플 데이터 및 파라미터 정의
{
    "eventType": "INQUIRY_ADDED", // 이벤트명 (수정: INQUIRY_MODIFIED / 삭제: INQUIRY_DELETED)
    "mallNo": 12345, // 쇼핑몰번호
    "memberNo": 12345, // 회원번호 (nullable, 비회원 문의 시 null)
    "inquiryNo": 12345, // 1:1문의 일련번호
    "inquiryTypeNo": 12345, // 1:1문의 유형번호 (유형을 찾지 못한 경우 0으로 전달)
    "orderNo": null, // 주문에 대한 문의인 경우 주문번호 (nullable)
    "productNo": null, // 주문된 상품번호 (nullable)
    "answerSmsSendYn": true, // 1:1문의 답변 등록 시 SMS수신여부
    "inquiryTitle": "타이틀", // 1:1문의 제목 (값이 없으면 빈 문자열)
    "memberId": "chulsu" // 회원아이디 (nullable, 비회원 문의 시 빈 문자열)
}
```

### 4. 회원 관련

| 이벤트 유형          | 이벤트명 |
| --------------- | ---- |
| MEMBER\_CREATED | 회원가입 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "memberNo": 12345, // 회원번호
    "memberId": "chulsu", // 회원아이디 (외부연동 ID로 가입 시 빈 문자열)
    "memberName": "홍길동", // 회원이름 (값이 없으면 빈 문자열)
    "blacklisted": null, // 블랙리스트 여부 (항상 null, 회원정보변경 이벤트만 값 존재)
    "email": "gildong@nhn-commerce.com", // 회원이메일 (값이 없으면 빈 문자열)
    "gradeNo": 12345, // 등급번호
    "groupNos": [1, 2, 3], // 그룹번호 리스트 (가입 시점 그룹 전체, 없으면 빈 배열)
    "providerType": "KAKAO", // 외부연동 값 (nullable, 일반 가입은 null)
    "syncIdProvider": "kakao", // 외부연동 원본값 (nullable, providerType 이 null 이어도 값이 있을 수 있음)
    "eventType": "MEMBER_CREATED", // 이벤트명
    "mallNo": 12345, // 쇼핑몰 번호
    "representativeMemberNo": 12345, // 대표몰 회원번호 (nullable, 브랜드 로그인 미사용 시 null)
    "nickname": "angel1004", // 닉네임 (nullable)
    "trackingKey": null, // 추적키 (회원 웹훅에서는 항상 null)
    "withdrawalReason": null, // 탈퇴사유 (항상 null, 회원탈퇴 이벤트만 값 존재)
    "smsAgreed": true, // SMS 수신동의 여부
    "emailAgreed": true, // 이메일 수신동의 여부
    "marketingInfoUsageAgreed": true, // 마케팅 정보 활용 동의 여부
    "recommenderId": "younghee" // 추천인 아이디 (없으면 빈 문자열)
}
```

| 이벤트 유형                | 이벤트명   |
| --------------------- | ------ |
| MEMBER\_INFO\_CHANGED | 회원정보변경 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "memberNo": 12345, // 회원번호
    "memberId": "chulsu", // 회원아이디 (nullable)
    "memberName": "홍길동", // 회원이름 (nullable)
    "blacklisted": false, // 블랙리스트 여부 (회원 웹훅 7종 중 이 이벤트만 값 존재)
    "email": "gildong@nhn-commerce.com", // 회원이메일 (nullable)
    "gradeNo": 12345, // 등급번호
    "groupNos": [], // 그룹번호 리스트 (이 이벤트는 항상 빈 배열)
    "providerType": "KAKAO", // 외부연동 값 (nullable)
    "syncIdProvider": "kakao", // 외부연동 원본값 (nullable) 
    "eventType": "MEMBER_INFO_CHANGED", // 이벤트명
    "mallNo": 12345, // 쇼핑몰 번호
    "representativeMemberNo": 12345, // 대표몰 회원번호 (nullable)
    "nickname": "angel1004", // 닉네임 (nullable)
    "trackingKey": null, // 추적키 (항상 null) 
    "withdrawalReason": null, // 탈퇴사유 (항상 null) 
    "smsAgreed": true, // SMS 수신동의 여부 
    "emailAgreed": true, // 이메일 수신동의 여부
    "marketingInfoUsageAgreed": true, // 마케팅 정보 활용 동의 여부
    "recommenderId": null // 추천인 아이디 (항상 null)
}
```

<table><thead><tr><th width="395">이벤트 유형</th><th>이벤트명</th></tr></thead><tbody><tr><td>MEMBER_GRADE_CHANGED</td><td>회원등급변경 </td></tr></tbody></table>

```java
// 샘플 데이터 및 파라미터 정의
{
    "memberNo": 12345, // 회원번호
    "memberId": "chulsu", // 회원아이디 (nullable)
    "memberName": "홍길동", // 회원이름 (nullable)
    "blacklisted": null, // 블랙리스트 여부 (항상 null)
    "email": "gildong@nhn-commerce.com", // 회원이메일 (nullable)
    "gradeNo": 12345, // 등급번호 (변경된 등급의 등급번호)
    "groupNos": [], // 그룹번호 리스트 (이 이벤트는 항상 빈 배열)
    "providerType": "KAKAO", // 외부연동 값 (nullable)
    "syncIdProvider": "kakao", // 외부연동 원본값 (nullable)
    "eventType": "MEMBER_GRADE_CHANGED", // 이벤트명
    "mallNo": 12345, // 쇼핑몰 번호
    "representativeMemberNo": 12345, // 대표몰 회원번호 (nullable)
    "nickname": "angel1004", // 닉네임 (nullable)
    "trackingKey": null, // 추적키 (항상 null)
    "withdrawalReason": null, // 탈퇴사유 (항상 null)
    "smsAgreed": true, // SMS 수신동의 여부 (nullable, 등급 자동변경 배치로 발생 시 null) 
    "emailAgreed": true, // 이메일 수신동의 여부 (nullable, 등급 자동변경 배치로 발생 시 null)
    "marketingInfoUsageAgreed": true, // 마케팅 정보 활용 동의 여부 (nullable, 등급 자동변경 배치로 발생 시 null)
    "recommenderId": null // 추천인 아이디 (항상 null)
}
```

| 이벤트 유형                 | 이벤트명   |
| ---------------------- | ------ |
| MEMBER\_GROUP\_CHANGED | 회원그룹변경 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "memberNo": 12345, // 회원번호
    "memberId": "chulsu", // 회원아이디 (nullable)
    "memberName": "홍길동", // 회원이름 (nullable)
    "blacklisted": null, // 블랙리스트 여부 (항상 null)
    "email": "gildong@nhn-commerce.com", // 회원이메일 (nullable)
    "gradeNo": 12345, // 등급번호
    "groupNos": [1, 2, 3], // 그룹번호 리스트 (변경 반영된 모든 그룹번호, 전체 해제 시 빈 배열)
    "providerType": "KAKAO", // 외부연동 값 (nullable)
    "syncIdProvider": "kakao", // 외부연동 원본값 (nullable)
    "eventType": "MEMBER_GROUP_CHANGED", // 이벤트명
    "mallNo": 12345, // 쇼핑몰 번호
    "representativeMemberNo": 12345, // 대표몰 회원번호 (nullable)
    "nickname": "angel1004", // 닉네임 (nullable)
    "trackingKey": null, // 추적키 (항상 null) 
    "withdrawalReason": null, // 탈퇴사유 (항상 null)
    "smsAgreed": true, // SMS 수신동의 여부 
    "emailAgreed": true, // 이메일 수신동의 여부 
    "marketingInfoUsageAgreed": true, // 마케팅 정보 활용 동의 여부 
    "recommenderId": null // 추천인 아이디 (항상 null)
}
```

| 이벤트 유형          | 이벤트명    |
| --------------- | ------- |
| MEMBER\_DORMANT | 휴면회원 전환 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "memberNo": 12345, // 회원번호
    "memberId": "chulsu", // 회원아이디 (값이 없으면 빈 문자열)
    "memberName": "홍길동", // 회원이름 (값이 없으면 빈 문자열)
    "blacklisted": null, // 블랙리스트 여부 (항상 null)
    "email": "gildong@nhn-commerce.com", // 회원이메일 (값이 없으면 빈 문자열)
    "gradeNo": null, // 등급번호 (이 이벤트는 항상 null - 휴면 정보에 등급이 없음)
    "groupNos": [], // 그룹번호 리스트 (이 이벤트는 항상 빈 배열)
    "providerType": "KAKAO", // 외부연동 값 (nullable)
    "syncIdProvider": "kakao", // 외부연동 원본값 (nullable)
    "eventType": "MEMBER_DORMANT", // 이벤트명
    "mallNo": 12345, // 쇼핑몰 번호
    "representativeMemberNo": 12345, // 대표몰 회원번호 (nullable)
    "nickname": "angel1004", // 닉네임 (nullable)
    "trackingKey": null, // 추적키 (항상 null)
    "withdrawalReason": null, // 탈퇴사유 (항상 null)
    "smsAgreed": null, // SMS 수신동의 여부 (항상 null) 
    "emailAgreed": null, // 이메일 수신동의 여부 (항상 null) 
    "marketingInfoUsageAgreed": null, // 마케팅 정보 활용 동의 여부 (항상 null) 
    "recommenderId": null // 추천인 아이디 (항상 null)
}
```

| 이벤트 유형           | 이벤트명    |
| ---------------- | ------- |
| MEMBER\_RELEASED | 휴면회원 해제 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "memberNo": 12345, // 회원번호
    "memberId": "chulsu", // 회원아이디 (값이 없으면 빈 문자열)
    "memberName": "홍길동", // 회원이름 (값이 없으면 빈 문자열)
    "blacklisted": null, // 블랙리스트 여부 (항상 null) 
    "email": "gildong@nhn-commerce.com", // 회원이메일 (값이 없으면 빈 문자열)
    "gradeNo": 12345, // 등급번호
    "groupNos": [], // 그룹번호 리스트 (이 이벤트는 항상 빈 배열)
    "providerType": "KAKAO", // 외부연동 값 (nullable)
    "syncIdProvider": "kakao", // 외부연동 원본값 (nullable) 
    "eventType": "MEMBER_RELEASED", // 이벤트명
    "mallNo": 12345, // 쇼핑몰 번호
    "representativeMemberNo": 12345, // 대표몰 회원번호 (nullable)
    "nickname": "angel1004", // 닉네임 (nullable)
    "trackingKey": null, // 추적키 (항상 null) 
    "withdrawalReason": null, // 탈퇴사유 (항상 null) 
    "smsAgreed": true, // SMS 수신동의 여부 
    "emailAgreed": true, // 이메일 수신동의 여부 
    "marketingInfoUsageAgreed": true, // 마케팅 정보 활용 동의 여부 
    "recommenderId": null // 추천인 아이디 (항상 null)
}
```

| 이벤트 유형           | 이벤트명 |
| ---------------- | ---- |
| MEMBER\_WITHDRAW | 회원탈퇴 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "memberNo": 12345, // 회원번호
    "memberId": "chulsu", // 회원아이디 (nullable)
    "memberName": "홍길동", // 회원이름 (nullable)
    "blacklisted": null, // 블랙리스트 여부 (항상 null) 
    "email": "gildong@nhn-commerce.com", // 회원이메일 (nullable)
    "gradeNo": 12345, // 등급번호
    "groupNos": [], // 그룹번호 리스트 (이 이벤트는 항상 빈 배열)
    "providerType": "KAKAO", // 외부연동 값 (nullable)
    "syncIdProvider": "kakao", // 외부연동 원본값 (nullable)
    "eventType": "MEMBER_WITHDRAW", // 이벤트명
    "mallNo": 12345, // 쇼핑몰 번호
    "representativeMemberNo": 12345, // 대표몰 회원번호 (nullable)
    "nickname": "angel1004", // 닉네임 (nullable)
    "trackingKey": null, // 추적키 (항상 null)
    "withdrawalReason": "단순 변심", // 탈퇴사유 (nullable)
    "smsAgreed": null, // SMS 수신동의 여부 (항상 null) 
    "emailAgreed": null, // 이메일 수신동의 여부 (항상 null) 
    "marketingInfoUsageAgreed": null, // 마케팅 정보 활용 동의 여부 (항상 null) 
    "recommenderId": null // 추천인 아이디 (항상 null)
}
```

***

### 5. 주문 관련

#### <mark style="color:red;">\[주문 생성]</mark>

| 이벤트 유형        | 이벤트명  |
| ------------- | ----- |
| CREATE\_ORDER | 주문 생성 |

{% code overflow="wrap" %}

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "CREATE_ORDER", //이벤트명
    "order": {
        "orderNo": "2021100201234567890", // 주문번호 (nullable)
        "mallNo": 30973, // 몰번호
        "serviceNo": 30388, // 서비스 번호
        "memberId": "member_id_123", // 회원아이디 (비회원 주문 시 빈 문자열)
        "memberNo": 8411244, // 회원번호
        "memberYn": "Y", // 회원여부
        "ordererName": "홍길동", // 주문자명
        "ordererContact1": "010-1234-1234", // 주문자 핸드폰 번호 (nullable)
        "ordererContact2": "010-1234-1234", // 주문자 전화 번호 (nullable)
        "ordererEmail": "honggildong@naver.com", // 주문자 이메일 (nullable)
        "payType": "CREDIT_CARD", // 결제타입(신용카드/계좌이체 등)
        "pgType": "KCP", // PG타입(PAYCO/KCP 등)
        "platformType": "MOBILE_WEB", // 플랫폼 타입 (PC/MOBILE_WEB/MOBILE_APP)
        "platformValue": "MO", // 플랫폼 상세값 (nullable)
        "lastPayAmt": 185000.00, // 최종결제금액
        "lastSubPayAmt": 0.00, // 최종 적립금 결제금액
        "lastStandardAmt": 329000.00, // 최종상품금액(할인제외)
        "lastDeliveryAmt": 0.00, // 최종배송금액
        "lastRemoteDeliveryAmt": 0.00, // 최종지역별추가배송금액
        "lastImmediateDiscountAmt": 144000.00, // 최종즉시할인금액
        "lastAdditionalDiscountAmt": 0.00, // 최종추가할인금액
        "lastCartCouponDiscountAmt": 0.00, // 최종주문쿠폰할인금액
        "lastProductCouponDiscountAmt": 0.00, // 최종상품쿠폰할인금액
        "lastDeliveryCouponDiscountAmt": 0.00, // 최종배송쿠폰할인금액
        "lastTaxFreeAmt": 0.00, // 최종비과세금액
        "lastTaxableAmt": 168181.00, // 최종과세금액
        "lastVatAmt": 16819.00, // 최종부과세액
        "firstSalesTaxAmt": 0.00, // 최초부과세액
        "lastSalesTaxAmt": 0.00, // 최종부과세액
        "firstCustomsDutyAmt": 0.00, // 최초관부가세
        "lastCustomsDutyAmt": 0.00, // 최종관부가세
        "currencyCode": "KRW", // 통화코드 (KRW/JPY/USD/CNY)
        "exchangeRate": null, // 환율 (nullable)
        "registerYmdt": "2021-10-25 13:53:18", // 등록일
        "trackingKey": "trackingKey", // 쇼핑채널링-추적키 (nullable)
        "cartCouponIssueNo": 12, // 장바구니쿠폰 발급 번호 (nullable)
        "cartCouponNo": 5, // 장바구니쿠폰 번호(첫 적용 쿠폰 기준)
        "channelType": null, // 유입 경로 (nullable)
        "extraData": null, // 주문 부가정보 (JSON 문자열, nullable)
        "orderProducts": [
            {
                "orderProductNo": 50000000, // 주문상품번호
                "mallProductNo": 100000000, // 상품번호
                "productName": "상품명",
                "productManagementCd": "", // 상품관리 코드 (nullable)
                "hsCode": "", // (nullable)
                "eanCode": null, // (nullable, 항상 null로 세팅됨)
                "partnerNo": 50000, // 파트너 번호
                "lastProductCouponDiscountAmt": 0.00, // 상품 쿠폰 할인액
                "productCouponIssueNo": 13, // 사용한 상품 쿠폰 발급 번호 (nullable)
                "productCouponNo": 6, // 적용된 상품쿠폰 번호(첫 적용 쿠폰 기준)
                "orderProductOptions": [
                    {
                        "orderProductOptionNo": 5062925, // 주문상품옵션번호
                        "orderNo": "2021100201234567890", // 주문번호
                        "memberNo": 100000, // 회원번호
                        "userInputs": [ // 구매자 입력형 옵션
                            {
                              "inputLabel": "색깔", // 구매자 작성형 옵션 이름 (nullable)
                              "inputValue":"검정색", // 구매자 입력형 옵션 값 (nullable)
                            }
                        ],
                        "serviceNo": 30000, // 서비스 번호
                        "mallNo": 1000, // 몰번호
                        "mallProductNo": 10000000, // 상품번호
                        "productName": "상품명",
                        "mallOptionNo": 6000000, // 상품옵션번호
                        "mallAdditionalProductNo": 0, // 추가 상품 번호 (nullable)
                        "optionUseYn": "Y", // 옵션 사용 여부
                        "optionName": "옵션명",
                        "optionValue": "옵션값",
                        "imageUrl": "//rlyfaazj0.toastcdn.net/...", // 상품 이미지 url
                        "orderCnt": 1, // 주문건수
                        "originalOrderCnt": 1, // 최초 주문 수량
                        "salePrice": 329000.00, // 판매 가격
                        "immediateDiscountAmt": 144000.00, // 즉시 할인 가격
                        "addPrice": 0.00, // 추가 금액
                        "additionalDiscountAmt": 0.00, // 추가 할인 금액
                        "partnerChargeAmt": 0.00, // 파트너 부담액
                        "adjustedAmt": 185000.00, // 조정된 상품 금액
                        "orderStatusType": "PAY_DONE", // 주문옵션상태
                        "claimStatusType": null, // 클레임 상태 (nullable)
                        "orderYmdt": "2021-10-25 13:53:18", // 주문일시 (nullable)
                        "payYmdt": "2021-10-25 13:54:38", // 결제일시 (nullable)
                        "orderAcceptYmdt": null, // 주문접수일시 (nullable)
                        "releaseReadyYmdt": null, // 배송준비일시 (nullable)
                        "releaseYmdt": null, // 배송일시 (nullable)
                        "deliveryCompleteYmdt": null, // 배송완료일시 (nullable)
                        "buyConfirmYmdt": null, // 구매확정일시 (nullable)
                        "registerYmdt": "2021-10-25 13:53:18", // 주문옵션 생성일시
                        "trackingKey": "platform=MO&rid=851184319&aid=641_1_3_1025&mid=TMS", // 주문추적키 (nullable)
                        "deliveryNo": 400000, // 배송번호
                        "deliveryInternationalYn": false, // 해외배송여부
                        "commissionRate" : 0, // 수수료율
                        "optionManagementCd": "", // 옵션 관리 코드 (nullable)
                        "isFreeGift": false, // 무료 사은품 여부
                        "extraManagementCd": "", // 옵션의 추가관리코드 (nullable)
                        "accumulationAmt": 0.00, // 적립 예정 금액
                        "displayBrandNo": 111111, // 브랜드 번호
                        "deliveryTemplateNo": 50000, // 배송 템플릿 번호 (실제 배송(shipping)의 템플릿번호와 다를 수 있음)
                        "deliveryCompanyType": "CJ", // 배송 업체 (nullable)
                        "invoiceNo": null, // 송장번호 (nullable)
                        "receiverName": "홍길동", // 받는 사람 이름 (nullable)
                        "receiverContact1": "010-1234-5678", // 수령자 휴대폰번호 (nullable)
                        "receiverContact2": "", // 수령자 전화번호 (nullable)
                        "zipCd": "12345", // 배송지 우편번호 (nullable)
                        "receiverAddress": "", // 주소 (nullable)
                        "receiverDetailAddress": "", // 상세 주소 (nullable)
                        "receiverJibunAddress": "", // 지번 주소 (nullable)
                        "usesShippingInfoLaterInput": false, // 나중배송지 입력 여부 (nullable, 기본값 false)
                        "shippingInfoLaterInputContact": null, // 나중배송지 입력 전화 번호 (nullable)
                        "encryptedShippingNo": null, // 나중배송지 입력 시 사용하는 암호화된 배송번호 (nullable)
                        "shippingEmptyAutoCancelYmdt" : "2023-10-25 13:54:38", // 배송지 미입력 시 자동 주문취소 일시 (nullable, usesShippingInfoLaterInput=true일 때만 설정)
                        "customsIdNumber": "", // 개인통관고유부호 (nullable)
                        "extraManagementCd": "" // 옵션의 추가관리코드 (상품 등록/수정에서 설정 가능) (nullable)
                    }
                ]
            }
        ]
    },
    "pay": {
        "pgType": "KCP", // PG 타입 (nullable)
        "payType": "CREDIT_CARD", // 결제 유형
        "payYmdt": "2021-10-25 13:54:38", // 결제일시 (nullable)
        "payStatusType": "DONE", // 결제상태 (PROCESS/DONE/CANCEL/FAIL/WAITING) (nullable)
        "payInfoJson": "{...}", // payInfo 를 직렬화한 JSON 문자열 (nullable)
        "payInfo": { // (nullable)
            "payType": "CREDIT_CARD", // 결제 유형 (nullable)
            "cardInfo": { // (nullable)
                "cardCompany": "SHINHAN", // 카드사
                "cardCode": "CCLG", // PG 카드사 코드(PG별로 다름)
                "cardName": "신한카드", // 카드사명
                "approveYmdt": "2021-10-25 13:54:38", // 결제승인시간
                "cardNo": "*****", // 카드번호
                "cardApprovalNumber": "****", // 결제승인번호
                "noInterest": true, // 무이자여부
                "installmentPeriod": 5, // 할부기간
                "cardAmt": 185000 // 신용카드 결제금액
            },
            "bankInfo": { // (nullable)
                "bank" : "KDB", // 은행 (nullable)
                "bankCode": "", // PG 은행코드 (PG별로 다름)
                "bankName": "", // 은행명
                "account": "", // 계좌번호 (nullable)
                "bankAmt": 1000, // 입금해야할 금액
                "depositAmt": 1000, // 실제 입금금액
                "depositYmdt": "2021-10-25 13:54:38", // 입금일시 (nullable)
                "remitterName": "", // 입금자명 (nullable)
                "depositorName": "", // 예금주명 (nullable)
                "paymentExpirationYmdt": "2021-10-25 13:54:38" // 입금 마감일 (nullable)
            },
            "easyPayInfo": null, // 간편결제 관련 정보 (nullable) - { easyPayPointAmt, easyPayPointApproveYmdt, serviceCorpId, payMethod, cashReceiptYn, cashReceiptNo, cashReceiptAmt } 모두 String, nullable
            "cashAuthNo": "", // 현금영수증 승인번호 (nullable)
            "cashNo": "", // 현금영수증 거래번호 (nullable)
            "tradeNo": "3000000", // 거래번호 (nullable)
            "escrowYn": "N", // 에스크로 결제 여부
            "payAmt": 185000, // PG결제 금액 (nullable)
            "sellerCouponAmt": 0, // 가맹점 발행쿠폰 (nullable)
            "pgCouponAmt": 0, // PG 쿠폰 금액 (nullable)
            "cardCouponAmt": 0, // 카드사 쿠폰 금액 (nullable)
            "pointAmt": 0, // PG 포인트 (nullable)
            "paymentKey": { // (nullable)
                "pgType": "KCP", // PG 유형 (nullable)
                "key": "key", // PG Key (nullable)
                "profile": "REAL", // PG 통신 대상 서버 환경 구분 (REAL/ALPHA) (nullable)
                "etcInfos": {} // 기타 결제 키 관련 정보
            },
            "taxType": "DUTY", // 과세유형 (DUTY:과세/DUTYFREE:면세/SMALL:영세) (nullable)
            "mobileInfo": { // 핸드폰 결제 정보 (nullable)
                "mobileNo": "010-1234-5678", // 결제 핸드폰 번호
                "mobileCompany": "" // 통신사
            },
            "naverPayInfo": { // 네이버 페이 결제 정보 (nullable)
                "paymentMeans": "", // 네이버 페이 결제 수단 (nullable)
                "paymentDueDate": "", // 입금 기한 (nullable)
                "paymentNumber":"", // PG승인번호 (nullable)
                "orderDiscountAmount": 1000, // 주문 할인액 (nullable)
                "generalPaymentAmount": 1000, // 일반결제수단최종결제금액 (nullable)
                "naverMileagePaymentAmount": 1000, // 네이버페이 포인트 최종 결제 금액 (nullable)
                "chargeAmountPaymentAmount": 1000, // 충전금최종결제금액 (nullable)
                "checkoutAccumulationPaymentAmount": 1000, // 네이버페이 적립금 최종 결제 금액 (nullable)
                "orderType": "", // 주문 유형 구분(네이버페이/통합장바구니) (nullable)
                "payLocationType": "", // 결제 위치 구분(PC/MOBILE) (nullable)
                "paymentCoreType": "", // 결제 구분(네이버결제/PG 결제) (nullable)
                "payLaterPaymentAmount": 1000 // 후불결제 금액(네이버결제/PG 결제) (nullable)
            },
            "recurringPaymentCycleDate": null, // 정기결제 주기(일수) (nullable)
            "recurringPaymentDate": null, // 정기결제 회차일자 (nullable)
            "rentalInfo": null, // 렌탈 결제 정보 (nullable) - { rentalPeriod: Int, monthlyRentalAmount: Money }
            "complexPayInfo": null, // 복합결제 정보 (nullable) - { complexPayId(nullable), extraPayAmt, mainPayAmt }
            "extraData": null, // PG사 결제 응답 원본 정보 (Map, nullable)
            "cashReceiptInfo": null // PG사에서 응답한 현금영수증 정보 (nullable) - { result, resultCode, resultMsg, cashReceiptIssuePurposeType(INCOME_TAX_DEDUCTION/PROOF_EXPENDITURE/VOLUNTARY), issueAmt, cashReceiptKey, pgCashReceiptNo, cashReceiptAuthNo, issueYmdt } 모두 nullable
        }
    }
}
```

{% endcode %}

***

#### <mark style="color:red;">\[주문상태변경]</mark>

| 이벤트 유형                | 이벤트명   |
| --------------------- | ------ |
| CHANGE\_ORDER\_STATUS | 주문상태변경 |

{% code overflow="wrap" %}

```java
// 샘플 데이터 및 파라미터 정의
[
    {
          "eventType": "CHANGE_ORDER_STATUS", //이벤트명
          "orderProductOptionNo": 12345, // 주문상품 옵션번호
          "orderNo": "202110110111111", // 주문번호
          "memberNo": 12345, // 회원번호 (nullable)
          "userInputs": [ // 구매자 입력형 옵션
              {
                "inputLabel": "색깔", // 구매자 작성형 옵션 이름 (nullable)
                "inputValue": "검정색" // 구매자 입력형 옵션 값 (nullable)
              }
          ],
          "serviceNo": 12345, // 서비스번호
          "mallNo": 12345, // 몰번호
          "deliveryNo": 12345, // 배송번호
          "deliveryTemplateNo": 50000, // 배송 템플릿 번호
          "deliveryInternationalYn": false, // 해외배송여부
          "mallProductNo": 100000000, // 상품번호
          "productName": "상품명",
          "mallOptionNo": 6000000, // 상품옵션번호
          "mallAdditionalProductNo": 0, // 추가 상품 번호
          "optionUseYn": "Y", // 옵션 사용 여부
          "optionName": "색상|사이즈", // 2 depth
          "optionValue": "빨강|XL", // 2 depth
          "imageUrl": "//rlyfaazj0.toastcdn.net/...", // 상품 이미지 url
          "orderCnt": 1, // 주문건수
          "originalOrderCnt": 1, // 최초 주문 수량
          "salePrice": 329000.00, // 판매 가격
          "immediateDiscountAmt": 144000.00, // 즉시 할인 가격
          "addPrice": 0.00, // 추가 금액
          "additionalDiscountAmt": 0.00, // 추가 할인 금액
          "partnerChargeAmt": 0.00, // 파트너 부담액
          "adjustedAmt": 185000.00, // 조정된 상품 금액
          "orderStatusType": "PAY_DONE", // 주문옵션상태
          "claimStatusType": null, // 클레임 상태 (nullable)
          "orderYmdt": "2021-10-25 13:53:18", // 주문일시 (nullable)
          "payYmdt": "2021-10-25 13:54:38", // 결제일시 (nullable)
          "orderAcceptYmdt": null, // 주문접수일시 (nullable)
          "releaseReadyYmdt": null, // 배송준비일시 (nullable)
          "releaseYmdt": null, // 배송일시 (nullable)
          "deliveryCompleteYmdt": null, // 배송완료일시 (nullable)
          "buyConfirmYmdt": null, // 구매확정일시 (nullable)
          "registerYmdt": "2021-10-25 13:53:18", // 주문옵션 생성일시 (nullable)
          "trackingKey": "platform=MO&rid=851184319&aid=641_1_3_1025&mid=TMS", // 주문추적키 (쇼핑몰에서 생성되어 주문번호를 특정하는 구분값) (nullable)
          "deliveryCompanyType": "CJ", // 배송 업체 (nullable)
          "invoiceNo": "1212", // 송장번호 (nullable)
          "receiverName": "홍길동", // 받는 사람 이름 (nullable)
          "zipCd": "12345", // 배송지 우편 번호 (nullable)
          "address": "경기도 성남시 분당구 대왕판교로645번길 12", // 배송지 주소 (nullable)
          "detailAddress": "16 NHN 플레이뮤지엄", // 배송지 상세 주소 (nullable)
          "jibunAddress": "경기도 성남시 분당구 대왕판교로645번길", // 배송지 지번 주소 (nullable)
          "receiverCity": "", // 배송지 해외(도시) (nullable)
          "receiverState": "", // 배송지 해외(주) (nullable)
          "contact1": "010-0000-0000", // 수령자 연락처1 (nullable)
          "contact2": "", // 수령자 연락처2 (nullable)
          "productManagementCd": "", // 상품관리 코드 (nullable)
          "optionManagementCd": "", // 옵션관리 코드 (nullable)
          "usesShippingInfoLaterInput": false, // 나중배송지 입력 여부 (nullable)
          "shippingInfoLaterInputContact": null, // 나중배송지 입력 전화 번호 (nullable)
          "encryptedShippingNo": null, // 나중배송지 입력 시 사용하는 암호화된 배송번호 (nullable)
          "retrieveInvoiceUrl": null, // 배송조회 할 수 있는 url (nullable)
          "commissionRate": 0, // 수수료율
          "isFreeGift": false, // 사은품 여부
          "updateAdminNo": 0, // 해당 주문의 상태를 마지막으로 바꾼 어드민의 번호 (nullable)
          "extraManagementCd": "", // 옵션의 추가관리코드 (상품 등록/수정에서 설정 가능) (nullable)
          "order": {
            "extraData": "{\"language\": \"KO\"}", // (nullable)
            "currencyCode": "KRW",
            "exchangeRate": null // (nullable)
          },
          "claimNo": 123, // (nullable)
          "requestChannelType": "USER", // 상태변경이 요청된 채널 [SYSTEM, SERVICE, PARTNER, BATCH, USER, SERVER] (nullable)
          "channelType": null, // 유입 경로 (nullable)
          "originOrderOptionNo": 12344 // 이전 옵션번호 (nullable)
  }
]
```

{% endcode %}

***

#### <mark style="color:red;">\[수령자 정보 변경]</mark>

| 이벤트 유형           | 이벤트명      |
| ---------------- | --------- |
| UPDATE\_RECEIVER | 수령자 정보 변경 |

{% code overflow="wrap" %}

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "UPDATE_RECEIVER", // 이벤트 명
    "mallNo": 12345, // 쇼핑몰 번호
    "orderNo": "", // 주문 번호 (nullable 아님)
    "shippings": [
      // 배송정보
      {
        "shippingNo": 0, // 배송번호 (nullable 아님)
        "customsIdNumber": "", // 개인통관고유부호 (nullable)
        "receiverAddress": {
          // 수령자 정보
          "addressNo": 0, // 주소록 번호 (nullable)
          "addressName": "", // 주소록명 (nullable)
          "zipCd": "12345", // 배송지 우편 번호 (nullable 아님)
          "address": "경기도 성남시 분당구 대왕판교로645번길 12", // 배송지 주소 (nullable 아님)
          "detailAddress": "16 NHN 플레이뮤지엄", // 배송지 상세 주소 (nullable 아님)
          "jibunAddress": "경기도 성남시 분당구 대왕판교로645번길", // 배송지 지번 주소 (nullable)
          "receiverCity": "", // 배송지 해외(도시) (nullable)
          "receiverState": "", // 배송지 해외(주) (nullable)
          "contact1": "010-0000-0000", // 수령자 연락처1 (nullable)
          "contact2": "", // 수령자 연락처2 (nullable)
          "name": "홍길동", // 수령자 이름 (nullable)
          "mobileCountryCd": "", // 수령자 휴대폰 국가코드 (nullable)
          "shippingEtcInfo": {
            // 해외배송지 기타정보 (nullable)
            "receiverFirstName": "", // 수령자 FirstName
            "receiverLastName": "", // 수령자 LastName
            "orderAdditionalInfo": "" // 주문 추가 정보 (nullable)
          }
        },
        "countryCd": "", // 국가 코드 (nullable 아님)
        "memo": "" // 배송 메모 (nullable)
      }
    ]
}
```

{% endcode %}

***

#### <mark style="color:red;">\[업무메시지]</mark>

| 이벤트 유형                | 이벤트명     |
| --------------------- | -------- |
| ADD\_TASK\_MESSAGE    | 업무메시지 등록 |
| UPDATE\_TASK\_MESSAGE | 업무메시지 수정 |
| DELETE\_TASK\_MESSAGE | 업무메시지 삭제 |

{% code overflow="wrap" %}

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "ADD_TASK_MESSAGE", // 이벤트명
    "content": "content", // 이벤트시 작성된 내용
    "isDetail": true, // 상세 메시지 여부
    "taskMessage": {
      // 업무메시지 정보
      "taskMessageNo": 0, // 업무메시지 번호
      "taskMessageChannelType": "PARTNER", // 메시지 작성 채널
      "taskMessageStatusType": "PROCESSING", // 진행 상황
      "taskMessageType": "PAY", // 업무메시지 유형
      "fromTargetType": "PARTNER", // 발송자 타입
      "fromTargetNo": 0, // 발송자 번호
      "toTargetType": "PARTNER", // 담당자 타입
      "toTargetNo": 0, // 담당자 번호
      "content": "content", // 업무메시지 내용
      "orderNo": "0", // 주문 번호
      "orderProductOptionNo": 0, // 주문 옵션 번호
      "productName": "product-name", // 상품 명 (nullable)
      "registerAdminNo": 0, // 등록자 관리자 번호
      "registerYmdt": "2023-02-21 13:32:47", // 등록일시
      "updateYmdt": "2023-02-21 13:32:47", // 수정일시 (nullable)
      "completeYmdt": "2023-02-21 13:32:47", // 완료일시 (완료되지 않은 경우: null)
      "uploadedFileInfos": [
        // 첨부파일 정보 (nullable, 첨부파일 없으면 null)
        {
          "originalFileName": "file.jpg", // 원본 파일명
          "uploadedFileName": "uploaded-file.jpg" // 업로드된 파일명
        }
      ],
      "taskMessageDetails": [
        // 상세 메시지 정보
        {
          "taskMessageDetailNo": 0, // 업무메시지 상세 번호
          "taskMessageChannelType": "PARTNER", // 상세 메시지 작성 채널
          "content": "content", // 업무메시지 상세 내용
          "registerAdminNo": 0, // 등록자 관리자 번호
          "registerYmdt": "2023-02-21 13:32:47", // 등록일시
          "updateYmdt": "2023-02-21 13:32:47", // 수정일시 (nullable)
          "taskMessageDetailFileInfos": [
            // 상세 메시지 첨부파일 정보 (nullable, 첨부파일 없으면 null)
            {
              "originalFileName": "file.jpg", // 원본 파일명
              "uploadedFileName": "uploaded-file.jpg" // 업로드된 파일명
            }
          ]
        }
      ]
    }
  }
```

{% endcode %}

***

#### <mark style="color:red;">\[장바구니 등록]</mark>

| 이벤트 유형    | 이벤트명    |
| --------- | ------- |
| ADD\_CART | 장바구니 등록 |

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "ADD_CART",
    "mallNo": 1234, // 쇼핑몰번호
    "memberNo": 12345, // 회원번호
    "memberId": "회원아이디", // 회원아이디(비회원 등의 경우 null)
    "products": [
        {
            "productNo": 12345, // 상품번호
            "productName": "상품명", // 상품명
            "optionUsed": true, // 옵션 사용여부
            "options": [
                {
                    "optionNo": 12345, // 옵션번호(옵션없는 상품은 null)
                    "optionName": "옵션명1|옵션명2", // 옵션명(옵션없는 상품은 null)
                    "optionValue": "옵션값1|옵션값2", // 텍스트옵션일 경우, 옵션 값에 사용자가 입력한 텍스트 옵션값 기재(옵션없는 상품은 null)
                    "orderCount": 1, // 장바구니 담긴 수량
                    "isRequired": true // 옵션 필수여부(옵션없는 상품은 null)
                }
            ]
        }
    ]
}
```

***

#### <mark style="color:red;">\[송장·택배사 등록/변경]</mark>

| 이벤트 유형          | 이벤트명         |
| --------------- | ------------ |
| UPDATE\_INVOICE | 송장·택배사 등록/변경 |

```java
{
    "eventType": "UPDATE_INVOICE",
    "mallNo": 1111,
    "data": {
       "eventType": "UPDATE_INVOICE",
       "mallNo": 1111,
       "orderNo": "202603292114119858",
       "invoices": [
          {
             "shippingNo": 123123, // 배송번호
             "invoiceNo": "123", // 송장번호 (nullable)
             "deliveryCompanyType": "CJ", // 택배사 (nullable): CJ, POST, HANJIN, GTX, LOTTE, KGB, LOGEN, GSI, KGL, INTRAS, UPS, CHUNIL, KDEXP, HDEXP, ILYANG, POST_EMS, DAESIN, CVS, DHL, FEDEX, GSM, WARPEX, WIZWA, ACI, PANTOS, CJ_INTERNATIONAL, TNT, CU, KUNYOUNG, LOTTE_INTERNATIONAL, HONAM, HANIPS, IPARCEL, SLX, USPS, WONDERS, REGISTPOST, DHLDE, EZUSA, SWGEXP, DAEWOON, DODOFLEX, NH_LOGIS, UFO, TODAY_PICKUP, QEXPRESS, PINGPONG, CR_LOGITECH, TODAY, SELLUV, EXMATE, WINION_LOGIS, SELLEX, DOOBALHERO, ETC
             "invoiceRegisterAdminNo": "111111", // 송장 등록 관리자 번호 (nullable)
             "invoiceRegisterAdminName": "관리자이름", // 송장 등록 관리자 이름 (nullable)
             "invoiceRegisterYmdt": "2026-05-18 20:41:51", // 송장 등록 일시 (nullable)
             "externalKey": null // 외부 연동 키 (nullable)
          }
       ]
    }
}

```

***

### 6. 상품 관련

| 이벤트 유형           | 이벤트명        |
| ---------------- | ----------- |
| PRODUCT\_UPDATED | 상품 등록/수정/삭제 |

{% code overflow="wrap" %}

```java
// 샘플 데이터 및 파라미터 정의
{
    "mallNo": 12345, // 쇼핑몰번호 (항상 값 — 몰 식별이 없는 내부 이벤트는 웹훅으로 발송되지 않음)
    "eventType": "PRODUCT_UPDATED", // 이벤트명
    "productEventType": "UPDATED", // 등록·수정·삭제 구분 (CREATED / UPDATED / DELETED)
    "mallProductNos": [1000, 20000] // 상품번호 리스트 (최소 1개, 빈 배열 없음 — 몰·구분별로 묶여 발송)
}
```

{% endcode %}

***

### 7. 프로모션 관련

| 이벤트 유형           | 이벤트명  |
| ---------------- | ----- |
| COUPON\_ADDED    | 쿠폰 등록 |
| COUPON\_MODIFIED | 쿠폰 수정 |
| COUPON\_DELETED  | 쿠폰 삭제 |

{% code overflow="wrap" %}

```java
// 샘플 데이터 및 파라미터 정의
{
    "eventType": "COUPON_ADDED",
    "mallNo": 12345, // 쇼핑몰번호
    "coupons": [
        {
            "couponNo": 11111, // 쿠폰번호
            "couponName": "쿠폰명",
            "couponIssueType": "DOWNLOAD", // 발급 유형 : 다운로드 발급 / 코드 발급(직접입력) / 코드 발급(자동생성) / 자동 발급 / 코드 발급(어드민 전용)
            "couponStatusType": "ISSUE_ING", // 발급 상태 : 발급대기 / 발급중 / 발급중지 / 발급종료
            "couponType": "CART" // 혜택 구분 : 상품적용 쿠폰 / 주문적용 쿠폰 / 기프트 쿠폰
        }
    ]
}
```

{% endcode %}
