> For the complete documentation index, see [llms.txt](https://www.analytics-docs.laplacetec.com/guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.analytics-docs.laplacetec.com/guide/startguide/connect/columns/cogs_relation.md).

# 기초 상품 옵션 매칭 컬럼

원가만 올려서는 마진이 나오지 않습니다. **판매된 옵션 하나가 어떤 기초 상품 몇 개로 이루어져 있는지**까지 알려주셔야 그 옵션의 원가가 계산됩니다. 이 페이지는 그 연결 정보를 **API로 직접 보내실 때** 채워야 하는 항목을 안내합니다.

{% hint style="info" %}
**API로 보내는 방법은 고객사 쪽 개발이 필요합니다.** 개발 없이 넣으실 수 있는 방법이 두 가지 더 있으니, 아래 중 편한 쪽을 고르시면 됩니다.

* **화면에서 직접 연결하기**: **\[데이터 관리] → \[마진율] → \[판매 상품 옵션 - 기초 상품 연결]**
* **템플릿 파일로 한 번에 올리기**: 같은 화면에서 템플릿을 내려받아 채운 뒤 업로드 ([자세히 보기](/guide/datamanage/matching/option_sku.md))
* **API로 직접 보내기**: 이 페이지

이 데이터는 스프레드시트 연결로는 넣으실 수 없습니다.
{% endhint %}

{% hint style="warning" %}
**연결보다 원가가 먼저입니다.** 여기서 보내신 `기초 상품 브랜드명` · `기초 상품번호` · `기초 상품명`이 [기초 상품 관리](/guide/datamanage/matching/sku.md)에 등록되어 있지 않으면, 보내신 연결은 접수되더라도 **연결 목록에 나타나지 않습니다.** 마진만 비는 것이 아니라 연결 자체가 없는 것으로 보이므로, 기초 상품 등록을 먼저 마치신 뒤 보내 주세요.
{% endhint %}

## 건을 구분하는 기준 (식별 키)

`브랜드` + `판매 채널` + `상품번호` + `상품명` + `옵션코드` + `옵션정보` + `기초 상품 브랜드명` + `기초 상품번호` + `기초 상품명`

**아홉 개가 모두 키입니다.** 앞의 여섯 개가 판매된 옵션을 가리키고, 뒤의 세 개가 거기에 들어가는 기초 상품을 가리킵니다.

기초 상품 쪽 세 항목까지 키에 들어가는 이유는, **옵션 하나에 기초 상품이 여러 개 들어가는 것이 정상이기 때문**입니다. "도시락 세트" 옵션이 김밥과 제육볶음으로 이루어진 경우가 그렇습니다. 이 세 항목이 키가 아니면 김밥 행과 제육볶음 행이 같은 건으로 취급되어, **나중에 보낸 하나만 남고 나머지 구성품은 사라집니다.**

아홉 항목이 모두 같은 값을 다시 보내시면 나중에 보낸 값이 최종값이 됩니다. 수량만 바꾸실 때는 나머지 여덟 항목을 그대로 두고 다시 보내 주세요.

{% hint style="info" %}
**한 옵션은 한 가지 방법으로만 넣어 주세요.** 아홉 항목은 보내주신 데이터 안에서 건을 나누는 기준입니다. 그다음 단계에서 라플라스는 옵션 쪽 여섯 항목을 기준으로 넣으신 방법 하나만 채택합니다.

맨 위에 소개한 세 가지 방법 중 **직접 입력(화면 연결·템플릿 업로드)과 이 API** 는 서로 다른 방법으로 셉니다. 같은 옵션을 양쪽으로 넣으시면 한쪽의 구성품만 쓰이고 다른 쪽은 통째로 밀립니다. 두 쪽이 섞여 합쳐지지는 않으니, 구성품이 빠져 보인다면 같은 옵션을 두 방법으로 넣지 않았는지 확인해 주세요.
{% endhint %}

## 항목 목록 (11개)

`사은품 여부`를 뺀 열 개가 필수이고, 그중 아홉 개가 위의 식별 키입니다.

| 화면 표기      | 타입 | 필수        | 상수 입력 |
| ---------- | -- | --------- | ----- |
| 브랜드        | 문자 | 필수 (식별 키) | 불가    |
| 판매 채널      | 문자 | 필수 (식별 키) | 불가    |
| 상품번호       | 문자 | 필수 (식별 키) | 불가    |
| 상품명        | 문자 | 필수 (식별 키) | 불가    |
| 옵션코드       | 문자 | 필수 (식별 키) | 불가    |
| 옵션정보       | 문자 | 필수 (식별 키) | 불가    |
| 기초 상품 브랜드명 | 문자 | 필수 (식별 키) | 불가    |
| 기초 상품번호    | 문자 | 필수 (식별 키) | 불가    |
| 기초 상품명     | 문자 | 필수 (식별 키) | 불가    |
| 기초 상품 수량   | 정수 | 필수        | 가능    |
| 사은품 여부     | 문자 | -         | 가능    |

`기초 상품 수량`은 이 옵션 **1개**에 들어가는 기초 상품 개수이고, `사은품 여부`는 사은품이면 `Y`, 아니면 비워 두시면 됩니다. 식별 키 아홉 개에 무슨 값을 넣어야 하는지는 아래 **앞의 여섯 항목은 주문 데이터와 글자까지 같아야 합니다** 절에 적었습니다.

{% hint style="info" %}
**API로 직접 보내실 때의 컬럼명입니다.** 화면 표기와 짝지어 두었습니다.

브랜드 `brand_name` · 판매 채널 `channel_name` · 상품번호 `product_id` · 상품명 `product_name` · 옵션코드 `option_id` · 옵션정보 `option_name` · 기초 상품 브랜드명 `item_brand_name` · 기초 상품번호 `item_id` · 기초 상품명 `item_name` · 기초 상품 수량 `item_qty` · 사은품 여부 `is_gift`
{% endhint %}

{% hint style="danger" %}
**`기초 상품 수량`이 비어 있으면 함께 보내신 데이터가 전부 저장되지 않습니다.**

한 번에 보내신 데이터 묶음을 **배치**라고 부릅니다. 수량이 비어 있으면 원가를 몇 배 해야 할지 정할 수 없기 때문에, 그 행만 빼고 저장하지 않고 **배치 전체를 되돌립니다.** 999개가 멀쩡해도 한 행 때문에 1,000개가 모두 저장되지 않습니다.

되돌아간 데이터는 시간이 지나도 저절로 들어오지 않습니다. **수량을 채워 다시 보내 주셔야** 저장됩니다.
{% endhint %}

{% hint style="warning" %}
**수량에 음수를 보내시면 저장은 되지만 그 행은 연결에 쓰이지 않습니다.** 오류가 표시되지 않고 해당 옵션의 마진만 비어 보이므로, 보내시기 전에 수량이 0 이상인지 확인해 주세요.
{% endhint %}

{% hint style="info" %}
`사은품 여부`에는 대소문자 구분 없이 `Y` 또는 `1`을 넣으시면 사은품으로 처리됩니다. 그 밖의 값과 빈 값은 모두 사은품이 아닌 것으로 봅니다.
{% endhint %}

## 앞의 여섯 항목은 주문 데이터와 글자까지 같아야 합니다

`브랜드` · `판매 채널` · `상품번호` · `상품명` · `옵션코드` · `옵션정보`는 **이미 라플라스에 들어와 있는 주문 데이터의 같은 값과 정확히 일치해야** 연결됩니다. 띄어쓰기, 특수문자, 철자가 하나라도 다르면 다른 옵션으로 보고 연결되지 않습니다.

여섯 항목이 틀렸을 때 증상은 두 갈래입니다.

* `상품번호` · `상품명` · `옵션코드` · `옵션정보`가 틀리면 **그 옵션 하나만** 연결되지 않습니다.
* `브랜드` · `판매 채널`이 틀리면, 라플라스는 이 두 항목으로 먼저 **판매처를 찾습니다.** 찾지 못하면 그 판매처로 보내신 매칭이 **한꺼번에** 연결되지 않습니다. 한두 건이 아니라 보내신 묶음 전체가 비어 보인다면 이 두 항목부터 확인해 주세요.

```
라플라스 푸드  ≠  라플라스푸드
라플라스(도시락)  ≠  라플라스_도시락
```

`기초 상품 브랜드명` · `기초 상품번호` · `기초 상품명` 세 항목도 마찬가지로 [기초 상품 관리](/guide/datamanage/matching/sku.md)에 등록하신 값과 정확히 같아야 합니다.

{% hint style="info" %}
보내실 값이 확실하지 않으시면, **\[데이터 관리] → \[마진율] → \[판매 상품 옵션 - 기초 상품 연결]** 화면에서 현재 옵션 목록을 내려받아 그 값을 그대로 쓰시는 것이 가장 안전합니다.
{% endhint %}

## 옵션 하나에 기초 상품 여러 개 넣기

**구성품 하나가 한 행입니다.** "도시락 세트" 옵션이 김밥 20개와 제육볶음 10개로 이루어져 있다면 **두 행**을 보내시면 됩니다.

| 상품명               | 옵션정보             | 기초 상품명 | 기초 상품 수량 |
| ----------------- | ---------------- | ------ | -------- |
| DELICIOUS 도시락 SET | 김밥 20개, 제육볶음 10개 | 김밥     | 20       |
| DELICIOUS 도시락 SET | 김밥 20개, 제육볶음 10개 | 제육볶음   | 10       |

두 행은 옵션 쪽 여섯 항목이 같고 기초 상품 쪽 세 항목만 다르므로, 서로 다른 건으로 남아 옵션 하나에 구성품 두 개가 연결됩니다.

결제금액은 원가 비중에 따라 구성품별로 나뉩니다. 계산 방식은 [옵션 ↔ 기초 상품(SKU) 연결](/guide/datamanage/matching/option_sku.md)에서 확인해 주세요.

<details>

<summary>위 두 행을 실제로 보낼 때의 예시 (개발자용)</summary>

```json
{"_insert_id": "rel-1", "data": {"brand_name": "라플라스푸드", "channel_name": "쿠팡", "product_id": "P-1001", "product_name": "DELICIOUS 도시락 SET", "option_id": "OPT-01", "option_name": "김밥 20개, 제육볶음 10개", "item_brand_name": "라플라스푸드", "item_id": "SKU-KIMBAP", "item_name": "김밥", "item_qty": 20}}
{"_insert_id": "rel-2", "data": {"brand_name": "라플라스푸드", "channel_name": "쿠팡", "product_id": "P-1001", "product_name": "DELICIOUS 도시락 SET", "option_id": "OPT-01", "option_name": "김밥 20개, 제육볶음 10개", "item_brand_name": "라플라스푸드", "item_id": "SKU-JEYUK", "item_name": "제육볶음", "item_qty": 10}}
```

요청 주소, 헤더, 본문 형식은 [Push API 연결](/guide/startguide/connect/push-ingestion.md)에 정리되어 있습니다.

</details>

{% hint style="warning" %}
**구성품을 빼실 때는 같은 행을 다시 보내는 방법으로 지워지지 않습니다.** API에는 삭제 요청이 따로 없습니다. 연결을 끊으셔야 할 때는 **\[판매 상품 옵션 - 기초 상품 연결]** 화면에서 해당 연결을 수정해 주세요.
{% endhint %}

## 값이 바뀔 때

### 상품명이나 옵션정보가 바뀌는 경우

상품번호는 그대로인데 상품명만 바뀌는 일이 있습니다. 매칭 키에 상품명이 들어 있으므로 라플라스는 이것을 **다른 옵션**으로 봅니다. 주문 데이터를 다시 보내실 때 상품명을 어느 시점의 값으로 보내시는지에 따라 하실 일이 갈립니다.

**주문 당시의 값으로 보내는 경우.** 과거 주문은 그대로 연결되어 있습니다. 새 이름으로 들어오는 주문분에 대해 같은 구성으로 한 행 더 보내 주시면 됩니다.

| 주문       | 주문 데이터의 상품명         | 보내실 매칭         |
| -------- | ------------------- | -------------- |
| 이름 바뀌기 전 | `DELICIOUS 도시락 SET` | 기존 행을 그대로 둡니다  |
| 이름 바뀐 뒤  | `DELICIOUS 도시락 세트`  | 같은 구성으로 한 행 추가 |

기존 행을 지우시면 이름 바뀌기 전 주문의 원가가 사라집니다. 옛 이름 행은 옛 주문에만 쓰이고 새 주문에는 걸리지 않으므로, 이름이 바뀔 때마다 행이 쌓이는 것이 정상입니다.

**현재 값으로 보내는 경우.** 과거 주문의 상품명까지 새 이름으로 바뀝니다. 새 이름 기준 매칭을 보내시기 전까지는 그 주문들의 원가가 비어 보이므로, 상품명을 바꾸실 때 매칭도 함께 보내 주세요.

`옵션정보`가 바뀌는 경우도 규칙이 같습니다. `상품번호`와 `옵션코드`가 그대로라고 해서 연결이 따라오지는 않습니다.

### 매칭에는 적용 시점이 없습니다

[기초 상품 원가](/guide/startguide/connect/columns/cogs.md)는 `결제 날짜/시간`을 함께 받아 기간별로 다른 원가를 적용합니다. 매칭은 그렇지 않습니다. 날짜 항목이 없고, **지금 등록된 상태 한 벌이 과거 주문까지 거슬러 적용**됩니다.

그래서 "이번 달부터는 이 구성으로 바뀐다"를 매칭만으로 표현하실 수는 없습니다. 구성이 바뀌었는데 과거 주문은 옛 구성으로 남겨야 한다면, 옵션 쪽 여섯 항목 중 하나라도 달라져야 합니다.

## 보내기 전에 확인할 것

요청 주소, 인증 헤더, 압축 형식은 다른 데이터 종류와 같습니다. [Push API 연결](/guide/startguide/connect/push-ingestion.md)을 먼저 봐 주세요.

연결을 만드실 때 **데이터 종류로 `기초 상품 옵션 매칭`을 골라 주세요.** 데이터 종류마다 받는 항목이 다릅니다.

## 전담 매니저에게 요청하기

기초 상품 연결에 대해 더 궁금한 점이 있으신가요?

> 💬 [채팅으로 문의하기](https://laplacetec.channel.io/lounge)
>
> 💬 [홈페이지에서 문의하기](https://www.analytics.laplacetec.com/contact)

**이메일 문의:** [**product@laplacetec.com**](mailto:product@laplacetec.com)
