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

# Shopify 통합 가이드

**이 가이드는 Shopify 스토어에 Kleep을 설치하는 방법을 안내합니다. Kleep은 세 가지 주요 기능을 제공합니다: 지능형 사이즈 가이드(Kleep Sizing), 유사 상품 추천(Kleep Similar Products), 최적화된 상품 검색(Kleep Search).**

## 통합 프로세스 개요

계약 서명부터 라이브 전환 이후까지의 예상 과정입니다. 전체 통합은 일반적으로 약 **5\~6주**가 소요됩니다.

### 온보딩

<Steps>
  <Step title="계약 서명 및 결제 설정">
    계약이 서명되면 Kleep 담당자가 GoCardless를 통해 결제를 시작합니다: [자동이체 설정 →](https://pay.gocardless.com/BRT000352V7T67Q).
  </Step>

  <Step title="온보딩 킥오프 미팅">
    설치 시작 전 일정, 기술 담당자, 스토어별 요구 사항을 조율하기 위한 Kleep 담당자와의 짧은 통화입니다.
  </Step>

  <Step title="온보딩 양식 작성">
    킥오프 후, 통합을 준비할 수 있도록 회사, 결제, 스토어 환경 및 반품 설정에 대한 몇 가지 세부 정보를 공유해 주시도록 요청드립니다.

    **[온보딩 양식 작성 →](https://ihu3s9tz3r8.typeform.com/to/fYQw9zJ5)**

    약 5분이 소요됩니다. 제출 후 영업일 기준 1일 이내에 팀에서 응답을 검토하고 다음 단계를 확인해 드립니다.
  </Step>

  <Step title="Shopify URL 및 협력자 코드 공유">
    스토어 주소(예: `your-store.myshopify.com`)와 협력자 요청 코드를 보내주시면 스토어 접근 권한을 요청할 수 있습니다.

    <Note>
      **Shopify 스토어가 여러 개인가요?** 여러 Shopify 인스턴스(예: 다른 지역 또는 브랜드)가 있는 경우 **각 쇼핑몰마다** 협력자 코드를 보내주세요 — 스토어당 코드 하나가 필요합니다.
    </Note>

    <Tip>
      이 정보를 어디서 찾을 수 있는지 모르시나요? Shopify 관리자에서 **설정 → 사용자 및 권한**으로 이동하세요 — `myshopify.com` URL은 상단에 표시되며, **협력자 요청 코드**는 *협력자* 섹션 아래에 나열되어 있습니다. 자세한 내용은 [협력자 계정](https://help.shopify.com/en/manual/your-account/staff-accounts/collaborator-accounts)에 대한 Shopify 도움말 기사를 참조하세요.
    </Tip>
  </Step>

  <Step title="협력자 요청 수락">
    Shopify 파트너 계정에서 협력자 접근 요청을 보내드립니다. Shopify 관리자의 **설정 → 사용자 및 권한 → 협력자**에서 승인하세요.
  </Step>

  <Step title="각 쇼핑몰에 Kleep 앱 설치">
    협력자 접근 권한을 얻으면 **각 스토어에 대한** 앱 설치 링크를 보내드립니다. Kleep을 활성화하려는 모든 Shopify 스토어에 Kleep 앱을 별도로 설치해야 합니다.
  </Step>

  <Step title="CTA 배치 선택">
    "내 사이즈 찾기" 버튼의 제안된 위치를 검토하고 스토어프론트에 맞는 것을 선택하세요: [CTA 배치 Figma →](https://www.figma.com/design/DvsqgNPSjVPVPLjKV2efAY/KLEEP-CTA-POSITIONING-SUGGESTIONS?node-id=0-1\&p=f\&t=92MwlxQkzlfAYyk5-0).
  </Step>
</Steps>

### 설치 및 테스트

<Steps>
  <Step title="복제된 테마에 Kleep 설치">
    팀에서 현재 Shopify 테마를 복제하고 복제본에 Kleep을 설치하므로 테스트하는 동안 라이브 스토어프론트는 그대로 유지됩니다.
  </Step>

  <Step title="미리보기 및 피드백">
    통합을 처음부터 끝까지 테스트하고 필요한 피드백이나 조정을 공유할 수 있는 비공개 미리보기 링크를 보내드립니다.
  </Step>

  <Step title="라이브 전환">
    최종 승인을 받으면 라이브 테마에 Kleep을 게시합니다.
  </Step>
</Steps>

### 통합 후

<Steps>
  <Step title="클라이언트 대시보드 접근">
    [Kleep 대시보드](https://dashboard.kleep.ai)에 접근할 수 있는 팀 자격 증명을 제공합니다. 실시간으로 Kleep 성능 KPI를 모니터링할 수 있습니다.
  </Step>

  <Step title="핏 피드백 활성화">
    팀이 실제 피팅 데이터를 사용하여 Kleep의 사이즈 추천을 개선할 수 있도록 대시보드에서 [핏 피드백](/ko/dashboard/fit-feedback)을 활성화합니다.
  </Step>
</Steps>

## 1. 기능

Kleep은 사전에 제작된 커스텀 앱을 설치하여 스토어에 통합됩니다. 이를 통해:

1. 상품 페이지에 "내 사이즈 찾기" CTA를 추가합니다
2. 테마 편집기에서 직접 UI를 커스터마이즈합니다

앱은 또한 최신 상태를 유지하기 위해 상품, 주문 및 반품 데이터의 자동화된 흐름을 생성합니다. 이 데이터는 매일 검색됩니다.

설치 시 앱은 WebPixel을 생성하여 솔루션의 ROI를 도출하는 여러 지표를 추적하는 데 사용됩니다.

## 2. 유사 상품 기능

유사 상품은 사이즈가 품절일 때 대안 상품을 제안합니다. 이 기능은 고객에게 관련 대안을 제공하여 전환율을 높입니다.

**사용 가능한 표시 모드**

| 모드           | 설명                               |
| ------------ | -------------------------------- |
| **팝업 (자동)**  | 데스크톱에서 사이즈 호버 시 자동 팝업 / 모바일에서 버튼 |
| **버튼 (자동)**  | 품절 시 장바구니 근처에 자동 CTA 버튼          |
| **커스텀 버튼만**  | 테마 편집기를 통해 직접 버튼 배치              |
| **팝업 + 커스텀** | 자동 팝업 + 추가 커스텀 버튼                |
| **버튼 + 커스텀** | 자동 버튼 + 추가 커스텀 버튼                |

**구성**

**1단계: 표시 모드 선택**

Kleep 앱 임베드 설정에서 **"추천 상품 표시"** 옵션을 찾아 드롭다운 메뉴에서 원하는 모드를 선택하세요.

<img src="https://mintcdn.com/kleepai/A9OHiEXCm7A82FUt/images/shopify/Screenshot_2025-12-09_at_11.48.24.png?fit=max&auto=format&n=A9OHiEXCm7A82FUt&q=85&s=71a8da20dfbd06b799dbca4a765df6ad" alt="Screenshot_2025-12-09_at_11.48.24.png" width="764" height="688" data-path="images/shopify/Screenshot_2025-12-09_at_11.48.24.png" />

유사 상품 모드 선택

**커스텀 버튼 추가 (커스텀 모드용)**

"커스텀"이 포함된 모드를 선택한 경우 특정 위치에 버튼을 추가할 수 있습니다:

1. 테마 편집기에서 **상품 페이지** 템플릿으로 이동
2. 원하는 섹션에서 **블록 추가** 클릭
3. **앱** 탭을 클릭하고 **"Kleep Similar Button"** 선택
4. 블록을 원하는 위치에 배치하고 저장

<img src="https://mintcdn.com/kleepai/A9OHiEXCm7A82FUt/images/shopify/image.png?fit=max&auto=format&n=A9OHiEXCm7A82FUt&q=85&s=702709e1425b0491e6fc7304f4bc159b" alt="image.png" width="1232" height="1370" data-path="images/shopify/image.png" />

Kleep Similar Button 블록 추가

<Tip>
  유사 상품 버튼은 변형이 품절일 때만 나타납니다. 모든 상품에서 보이지 않는 것은 정상입니다.
</Tip>

**여러 버튼 추가**

상품 페이지에 유사 상품 버튼을 원하는 수만큼 추가할 수 있습니다. 여러 버튼을 허용하려면 위젯을 `custom_buttons`, `popup+custom`, 또는 `button+custom` 중 하나로 설정해야 합니다.

OS 2.0 테마의 경우:

* **온라인 스토어 → 커스터마이즈**로 이동
* **상품 페이지** 템플릿 열기
* **블록 추가 → Kleep Similar Button** 클릭
* 페이지에 2개 이상의 버튼을 원하면 반복

모든 버튼은 선택된 변형이 품절일 때만 자동으로 나타납니다.

***

## 3. Kleep 검색 기능

Kleep 검색은 사이즈 필터와 개인화된 추천 기능을 갖춘 최적화된 검색으로 Shopify 기본 검색을 대체합니다.

**1단계: 커스텀 검색 활성화**

Kleep 앱 임베드 설정에서 **"커스텀 검색 활성화"** 옵션을 활성화하세요.

<img src="https://mintcdn.com/kleepai/A9OHiEXCm7A82FUt/images/shopify/Screenshot_2025-07-28_at_17.17.44.png?fit=max&auto=format&n=A9OHiEXCm7A82FUt&q=85&s=fe4dd72d40e2509386943c6e06a7a74b" alt="Screenshot_2025-07-28_at_17.17.44.png" width="670" height="352" data-path="images/shopify/Screenshot_2025-07-28_at_17.17.44.png" />

커스텀 검색 활성화

**2단계: 검색 템플릿 접근**

테마 편집기에서 상단 드롭다운 메뉴를 클릭하여 (기본값: "홈 페이지") 템플릿 목록에서 \*\*"검색"\*\*을 선택하세요.

<img src="https://mintcdn.com/kleepai/A9OHiEXCm7A82FUt/images/shopify/Screenshot_2025-07-28_at_17.18.59.png?fit=max&auto=format&n=A9OHiEXCm7A82FUt&q=85&s=76395c46acc49c26150ab7a7d08cb4ec" alt="Screenshot_2025-07-28_at_17.18.59.png" width="866" height="1312" data-path="images/shopify/Screenshot_2025-07-28_at_17.18.59.png" />

검색 템플릿 선택

**3단계: 기본 검색 숨기기**

템플릿 섹션에서 눈 아이콘을 클릭하여 기본 **"검색 결과"** 블록을 숨기거나 제거하세요.

<img src="https://mintcdn.com/kleepai/A9OHiEXCm7A82FUt/images/shopify/Screenshot_2025-07-28_at_17.19.32.png?fit=max&auto=format&n=A9OHiEXCm7A82FUt&q=85&s=a4b655a4d77c40f100179263320f0a5f" alt="Screenshot_2025-07-28_at_17.19.32.png" width="712" height="726" data-path="images/shopify/Screenshot_2025-07-28_at_17.19.32.png" />

기본 검색 숨기기

**4단계: Kleep 검색 블록 추가**

**섹션 추가**를 클릭한 후 **앱** 탭에서 **"검색"** (kleep-dev)을 선택하세요.

<img src="https://mintcdn.com/kleepai/A9OHiEXCm7A82FUt/images/shopify/Screenshot_2025-07-28_at_17.19.48.png?fit=max&auto=format&n=A9OHiEXCm7A82FUt&q=85&s=3b174132b77b5679a051bcc58668374d" alt="Screenshot_2025-07-28_at_17.19.48.png" width="1270" height="656" data-path="images/shopify/Screenshot_2025-07-28_at_17.19.48.png" />

Kleep 검색 블록 추가

**5단계: 옵션 구성**

추가한 검색 블록을 클릭하여 설정(결과 수, 그리드/목록 표시, 검색 지연 등)에 접근하세요.

<img src="https://mintcdn.com/kleepai/A9OHiEXCm7A82FUt/images/shopify/Screenshot_2025-08-13_at_13.29.19.png?fit=max&auto=format&n=A9OHiEXCm7A82FUt&q=85&s=ba48a7ba9d4dc8f7531fe8ca0224f663" alt="Screenshot_2025-08-13_at_13.29.19.png" width="316" height="654" data-path="images/shopify/Screenshot_2025-08-13_at_13.29.19.png" />

검색 구성 옵션

## 4. 반품 통합 (선택 사항)

반품 관리 플랫폼을 사용하는 경우 Kleep은 반품 데이터를 통합하여 사이즈 추천을 개선할 수 있습니다.

**지원되는 반품 제공업체**

* Global-e
* Aftership
* Fast Return
* Return Go
* 기타 (문의하세요)

**구성**

1. Kleep 대시보드에서 **설정 → 반품**으로 이동
2. 반품 제공업체 선택
3. 계정을 연결하기 위한 제공업체별 지침을 따르세요

<Note>
  제공업체가 목록에 없으면 [support@kleep.ai](mailto:support@kleep.ai)로 문의하세요 — SFTP 또는 API를 통해 커스텀 통합을 설정할 수 있습니다.
</Note>

## 5. 이벤트 추적 및 분석

Kleep은 분석을 위해 사용자 상호작용을 자동으로 추적합니다. 라이브 전환 전 추적이 올바르게 작동하는지 확인하세요.

**추적되는 이벤트**

| 이벤트                      | 설명                        |
| ------------------------ | ------------------------- |
| `kleep_button_click`     | 사용자가 사이즈 가이드 버튼 클릭        |
| `kleep_drawer_open`      | 사이즈 가이드 드로어 열림            |
| `kleep_size_recommended` | 사이즈 추천이 표시됨               |
| `kleep_add_to_cart`      | 사용자가 Kleep에서 상품을 장바구니에 추가 |
| `kleep_similar_click`    | 사용자가 유사 상품 클릭             |

**확인**

이벤트가 올바르게 발생하는지 확인하려면:

1. 브라우저 개발자 도구 열기 (F12)
2. **네트워크** 탭으로 이동
3. "kleep"으로 필터링
4. 사이즈 가이드 버튼과 상호작용
5. 각 이벤트에 대한 API 호출이 보여야 합니다

<Warning>
  **라이브 전환 전:** 최소 5개의 이벤트가 트리거되고 페이로드가 유효한지 확인하세요. 통합을 검증하기 위해 전체 사용자 여정(버튼 클릭 → 사이즈 추천 → 장바구니에 추가)을 완료하세요.
</Warning>

## 6. CSS 커스터마이즈

커스텀 CSS를 추가하여 Kleep 요소(버튼, 팝업, 검색)의 외관을 커스터마이즈할 수 있습니다.

**CSS 추가 위치**

Kleep 앱 임베드 설정에서 **"Input custom CSS styles"** 필드를 찾을 수 있습니다. 커스텀 CSS를 해당 위치에 붙여넣으세요.

<img src="https://mintcdn.com/kleepai/A9OHiEXCm7A82FUt/images/shopify/Screenshot_2025-08-13_at_13.25.30.png?fit=max&auto=format&n=A9OHiEXCm7A82FUt&q=85&s=ccffae57f877aff1babb42797a3f11ad" alt="Screenshot_2025-08-13_at_13.25.30.png" width="310" height="366" data-path="images/shopify/Screenshot_2025-08-13_at_13.25.30.png" />

커스텀 CSS 필드

**커스터마이즈 예시**

<Accordion title="코드">
  ```css theme={null}
  .kleep-button {
    all: unset;
    font-style: normal;
    font-size: 1.3rem;
    font-weight: 400;
    text-transform: none;
    color: rgb(0, 0, 0);
    background-color: rgb(255, 255, 255);
    padding: 0;
    margin: 0;
    border: none;
    border-radius: 0;
    cursor: pointer;
    display: inline-block;
    position: relative;
  }
  ```
</Accordion>

## 7. 다중 환경

여러 Shopify 환경(개발, 스테이징, 프로덕션)이 있는 경우 각 환경에 대해 Kleep을 구성해야 합니다.

**각 환경 설정**

1. **프로덕션 스토어** — 메인 스토어, 완전히 구성됨
2. **스테이징/개발 스토어** — 프로덕션에 적용하기 전 테스트용

각 환경에 대해:

1. Kleep 앱 설치
2. 앱 임베드 활성화
3. Kleep CSM에게 연락하여 환경을 계정에 연결

<Tip>
  항상 프로덕션에 적용하기 전에 스테이징에서 변경사항을 테스트하세요.
</Tip>

**환경별 URL**

Kleep CSM에게 다음을 제공하세요:

* 프로덕션 URL: `https://www.yourbrand.com`
* 스테이징 URL: `https://staging.yourbrand.com` (해당되는 경우)
* 개발 URL: `https://dev.yourbrand.com` (해당되는 경우)

## 7.5 CTA 버튼 및 유사 상품 — 전체 설치 가이드

Kleep CTA 버튼 및 유사 상품 기능 설치(모든 Liquid 코드, 설정 스키마 및 보조 버튼 설정 포함)에 대한 전체 기술 참조는 아래의 전용 가이드를 참조하세요:

[CTA 버튼 및 유사 상품 — 전체 설치 가이드](/ko/cms/cta-button)

***

## 8. 레거시 테마 - 사이즈 가이드 설정

레거시 테마("레거시"라고도 하거나 Online Store 2.0 이전에 생성된 테마)는 앱 블록을 지원하지 않습니다. 설치 시 Liquid 코드 수정이 필요합니다.

<Warning>
  이 섹션은 Shopify 개발 지식(Liquid)이 필요합니다.
</Warning>

**전제 조건**

* 테마 코드 편집기 접근 권한 (**온라인 스토어 → 테마 → 코드 편집**)
* Shopify 관리자에서 Kleep 앱 임베드가 활성화되어 있어야 합니다 (**온라인 스토어 → 테마 → 커스터마이즈 → 앱 임베드 → Kleep**)

**1단계: 앱 임베드 활성화**

Shopify 관리자에서 **온라인 스토어 → 테마 → 커스터마이즈 → 앱 임베드**로 이동하여 Kleep 앱을 켜세요.

**2단계: 스니펫 호출**

Kleep이 표시되길 원하는 곳에 다음 코드를 붙여넣으세요. `snippets` 폴더 내 `Product info` 블록의 일부여야 합니다:

<Accordion title="코드">
  ```jsx theme={null}
  {% render 'kleep-button', cms: section.settings %}
  ```
</Accordion>

**3단계: 버튼 스니펫 생성**

`snippets` 폴더 내에 `kleep-button.liquid`라는 새 파일을 생성하세요. 다음 내용을 파일에 추가하세요:

<Accordion title="코드">
  ```jsx theme={null}
  <button
    type="button"
    style="display: none;{% if cms.font_family and cms.default_font_family == false %}font-family: '{{ cms.font_family }}' ;{% endif %}font-style: {{ cms.text_style }}; font-size: {{ cms.text_size }}px; font-weight: {{ cms.text_weight }}; text-transform: {{ cms.text_transform }}; color: {{ cms.text_color }}; background-color: {{ cms.bg_color }}; padding: {{ cms.padding_t }}px {{ cms.padding_r }}px {{ cms.padding_b }}px {{ cms.padding_l }}px;{% if cms.center %} margin: {{ cms.margin_y }}px auto;{% else %} margin: {{ cms.margin_y }}px {{ cms.margin_x }}px;{% endif %}; border: {{ cms.border_color }} {{ cms.border_width }}px solid; border-radius: {{ cms.border_radius }}px;"
    class="kleep-button"
    id="kleep-size-button"
    data-product-id="{{ product.id }}"
  >
    <span class="kleep-wrapper-content">
      {% if cms.text_underline %}
        <span
          style="position: absolute; width: calc(100% + 2px); height: 1px; bottom: -{{ cms.text_underline_offset }}px; left: 0; background-color: {{ cms.text_color }};"
        ></span>
      {% endif %}

      {% if cms.image_url != blank %}
        <img
          height="{{ cms.image_size }}"
          width="{{ cms.image_size }}"
          src="{{ cms.image_url }}"
          loading="lazy"
          alt="Kleep button image"
        >
      {% endif %}

      <span class="kleep-btn-text">
        <span class="kleep-default">
          {% if cms.custom_button_text_toggle %}
            {{ cms.custom_find_size_text }}
          {% else %}
            {{ 'blocks.button.text.without_hash' | t }}
          {% endif %}
        </span>
        <span style="display: none;" class="kleep-custom">
          {% if cms.custom_button_text_toggle %}
            {{ cms.custom_recommended_size_text }}{% if localization.language.iso_code == "fr" %}&nbsp;{% endif %}<span class="kleep-colon">:</span>
          {% else %}
            {{ 'blocks.button.text.with_hash' | t }}{% if localization.language.iso_code == "fr" %}&nbsp;{% endif %}<span class="kleep-colon">:</span>
          {% endif %}
          <span class="kleep-custom-res"></span>
        </span>
      </span>
    </span>

    <span
      style="display: none; color: {{ cms.text_color }}; border-top-color: {{ cms.text_color }};"
      class="kleep-spinner"
      id="size-spinner"
    ></span>
  </button>
  ```
</Accordion>

**4단계: 설정 스키마 추가**

섹션 파일 끝의 설정 스키마에 다음 옵션을 추가하세요:

<Accordion title="코드">
  ```json theme={null}
  {
    "type": "header",
    "content": "Button text",
        "info": "If you enable this feature, the button text you enter will be replaced for all languages in your store"
      },
      {
        "type": "checkbox",
        "default": false,
        "id": "custom_button_text_toggle",
        "label": "Enable custom button text"
      },
      {
        "type": "text",
        "id": "custom_find_size_text",
        "label": "Find my best size text",
        "info": "What text will display instead of\"Find my best size\"?"
      },
      {
        "type": "text",
        "id": "custom_recommended_size_text",
        "label": "Recommended size text",
        "info": "What text will display instead of\"Recommended size\"?"
      },
      {
        "type": "header",
        "content": "Image"
      },
      {
        "type": "url",
        "id": "image_url",
        "label": "Url Image"
      },
      {
        "type": "range",
        "id": "image_size",
        "min": 0,
        "max": 80,
        "step": 2,
        "unit": "px",
        "label": "Image size (square)",
        "default": 20
      },
      {
        "type": "header",
        "content": "CSS Styles"
      },
      {
        "type": "checkbox",
        "default": true,
        "id": "default_font_family",
        "label": "Theme font",
        "info": "If checked, the css variable `--font-body-family` is used"
      },
      {
        "type": "font_picker",
        "id": "font_family",
        "label": "Font Family",
        "default": "helvetica_n4"
      },
      {
        "type": "select",
        "id": "text_style",
        "label": "Text style",
        "default": "normal",
        "options": [
          { "label": "Normal", "value": "normal" },
          { "label": "Italic", "value": "italic" },
          { "label": "Oblique", "value": "oblique" }
        ]
      },
      {
        "type": "select",
        "id": "text_transform",
        "label": "Text transformation",
        "default": "none",
        "options": [
          { "label": "Normal", "value": "none" },
          { "label": "Capitalize", "value": "capitalize" },
          { "label": "Uppercase", "value": "uppercase" },
          { "label": "Lowercase", "value": "lowercase" }
        ]
      },
      {
        "type": "select",
        "id": "text_weight",
        "label": "Text weight",
        "default": "400",
        "options": [
          { "label": "100", "value": "100" },
          { "label": "200", "value": "200" },
          { "label": "300", "value": "300" },
          { "label": "400", "value": "400" },
          { "label": "500", "value": "500" },
          { "label": "600", "value": "600" },
          { "label": "700", "value": "700" },
          { "label": "800", "value": "800" },
          { "label": "900", "value": "900" }
        ]
      },
      {
        "type": "range",
        "id": "text_size",
        "min": 2,
        "max": 50,
        "step": 2,
        "unit": "px",
        "label": "Font size",
        "default": 16
      },
      {
        "type": "checkbox",
        "id": "text_underline",
        "label": "Text underline",
        "default": false
      },
      {
        "type": "range",
        "id": "text_underline_offset",
        "min": 1,
        "max": 20,
        "step": 1,
        "unit": "px",
        "label": "Underline offset",
        "default": 2
      },
      {
        "type": "color",
        "id": "text_color",
        "label": "Button text color",
        "default": "#ffffff"
      },
      {
        "type": "color",
        "id": "bg_color",
        "label": "Background color",
        "default": "#000000"
      },
      {
        "type": "color",
        "id": "border_color",
        "label": "Border color",
        "default": "#000000"
      },
      {
        "type": "range",
        "id": "border_width",
        "min": 0,
        "max": 8,
        "step": 1,
        "unit": "px",
        "label": "Border width",
        "default": 0
      },
      {
        "type": "header",
        "content": "Spacing"
      },
      {
        "type": "checkbox",
        "id": "center",
        "label": "Center the button",
        "default": false,
        "info": "This will override 'Horizontal margin'"
      },
      {
        "type": "range",
        "id": "margin_y",
        "min": 0,
        "max": 80,
        "step": 2,
        "unit": "px",
        "label": "Vertical margin",
        "default": 0
      },
      {
        "type": "range",
        "id": "margin_x",
        "min": 0,
        "max": 80,
        "step": 2,
        "unit": "px",
        "label": "Horizontal margin",
        "default": 0
      },
      {
        "type": "range",
        "id": "padding_t",
        "min": 0,
        "max": 40,
        "step": 2,
        "unit": "px",
        "label": "Padding top",
        "default": 12
      },
      {
        "type": "range",
        "id": "padding_r",
        "min": 0,
        "max": 40,
        "step": 2,
        "unit": "px",
        "label": "Padding right",
        "default": 16
      },
      {
        "type": "range",
        "id": "padding_b",
        "min": 0,
        "max": 40,
        "step": 2,
        "unit": "px",
        "label": "Padding bottom",
        "default": 12
      },
      {
        "type": "range",
        "id": "padding_l",
        "min": 0,
        "max": 40,
        "step": 2,
        "unit": "px",
        "label": "Padding left",
        "default": 16
      },
      {
        "type": "range",
        "id": "border_radius",
        "min": 0,
        "max": 40,
        "step": 2,
        "unit": "px",
        "label": "Border radius",
        "default": 0
      }
  ```
</Accordion>

**5단계: 유효성 검사**

Shopify 테마 커스터마이즈 영역에서 업데이트를 확인하세요. 상품 정보 블록 설정에서 시각적 요소를 구성하세요.

**선택 사항: 보조 버튼**

보조 버튼을 추가하려면 `snippets` 폴더 내에 `kleep-secondary-button.liquid`라는 새 파일을 생성하세요:

<Accordion title="코드">
  ```jsx theme={null}
  <div class="kleep-secondary-button-box">
      <button
                  type="button"
                  style="{% if cms.kleep_font_family and cms.kleep_default_font_family == false %}font-family: '{{ cms.kleep_font_family }}' ;{% endif %}font-style: {{ cms.kleep_text_style }}; font-size: {{ cms.kleep_text_size }}px; font-weight: {{ cms.kleep_text_weight }}; text-transform: {{ cms.kleep_text_transform }}; color: {{ cms.kleep_text_color }}; background-color: {{ cms.kleep_bg_color }}; {% if cms.kleep_center %} margin: {{ cms.kleep_margin_y }}px auto;{% else %} margin: {{ cms.kleep_margin_y }}px {{ cms.kleep_margin_x }}px;{% endif %}; border: {{ cms.kleep_border_color }} {{ cms.kleep_border_width }}px solid; border-radius: {{ cms.kleep_border_radius }}px;"
                  class="kleep-secondary-button"
                  onclick="kleep_cta();"
                  data-product-id="{{ product.id }}"
          >
          <span class="kleep-wrapper-content">
            {% if cms.kleep_text_underline %}
                <span style="position: absolute; width: calc(100% + 2px); height: 1px; bottom: -{{ cms.kleep_text_underline_offset }}px; left: 0; background-color: {{ cms.kleep_text_color }};"></span>
            {% endif %}
      
              {% if cms.kleep_image_url != blank %}
                  <img height="{{ cms.kleep_image_size }}" width="{{ cms.kleep_image_size }}" src="{{ cms.kleep_image_url }}"
                       loading="lazy" alt="Kleep button image">
              {% endif %}
      
            <span class="kleep-secondary-btn-text">
              <span class="kleep-secondary-default">
                {{ 'kleep.button.text.without_hash' | t }}
              </span>
              <span style="display: none;" class="kleep-secondary-custom">
                {{ 'kleep.button.text.with_hash' | t }}:
                <span class="kleep-secondary-custom-res"></span>
              </span>
            </span>
          </span>
      
              <span
                      style="display: none; color: {{ cms.kleep_text_color }}; border-top-color: {{ cms.kleep_text_color }};"
                      class="kleep-secondary-spinner"
              ></span>
          </button>
      </div>
  ```
</Accordion>

Kleep이 표시되길 원하는 곳에 다음 코드를 붙여넣으세요. `snippets` 폴더 내 `Product info` 블록의 일부여야 합니다.

<Accordion title="코드">
  ```jsx theme={null}
  {% render 'kleep-secondary-button', cms: section.settings %}
  ```
</Accordion>

***

## 9. 레거시 테마 - 유사 상품 설정

**1단계: 스니펫 생성**

다음 코드로 `snippets/kleep-similar-button.liquid` 파일을 생성하세요:

<Accordion title="코드">
  ```jsx theme={null}
  {% assign cms = block.settings %}
      {% assign domain = shop.domain %}
      {% assign translated_similar = '' %}
      {% assign translated_similar_missing = true %}
      
      {%- assign domain_key = domain | prepend: 'www.' | append: '.recommended' -%}
      {% assign raw_domain_similar = domain_key | t %}
      
      {% unless raw_domain_similar contains 'Translation missing'
        or raw_domain_similar contains domain
      %}
        {% assign translated_similar = raw_domain_similar %}
        {% assign translated_similar_missing = false %}
      {% endunless %}
      
      {%- if translated_similar_missing -%}
        {% assign raw_global_similar = 'kleep.recommended.text.btn' | t %}
        {% unless raw_global_similar contains 'Translation missing' %}
          {% assign translated_similar = raw_global_similar %}
          {% assign translated_similar_missing = false %}
        {% endunless %}
      {%- endif %}
      
      <button
        type="button"
        class="kleep-similar-btn {{ block.settings.extra_classes }}"
        data-kleep-similar
        data-product-id="{{ product.id }}"
        {% if product.selected_or_first_available_variant %}
          data-variant-id="{{ product.selected_or_first_available_variant.id }}"
        {% endif %}
        style="
          display:none; align-items:center; gap:.5rem;
          {% if block.settings.center %}margin: {{ block.settings.margin_y }}px auto; justify-content:center;{% else %}margin: {{ block.settings.margin_y }}px {{ block.settings.margin_x }}px;{% endif %}
        "
      >
        <span>
          {% if cms.custom_text != blank %}
            {{ cms.custom_text }}
          {% else %}
            {% if translated_similar_missing %}
              {{ 'kleep.recommended.text.btn' | t }}
            {% else %}
              {{ translated_similar }}
            {% endif %}
          {% endif %}
        </span>
      </button>
  ```
</Accordion>

**2단계: 스니펫 렌더링**

버튼이 표시되길 원하는 위치에 이 줄을 삽입하세요:

<Accordion title="코드">
  ```jsx theme={null}
  {% render 'kleep-similar-button' %}
  ```
</Accordion>

일반적인 배치: 변형 선택기 아래 또는 장바구니에 추가 폼 근처.

**3단계: 올바른 모드 활성화**

레거시 테마는 OS 2.0 블록을 삽입할 수 없으므로 위젯은 다음 중 하나를 사용해야 합니다:

* `custom_buttons`
* `popup+custom`
* `button+custom`

**여러 버튼 추가**

여러 버튼을 생성하려면 상품 템플릿의 다른 영역에 스니펫 코드를 배치하세요:

<Accordion title="코드">
  ```jsx theme={null}
  {% render 'kleep-similar-button' %}
  ```
</Accordion>

각 스니펫 호출은 추가 버튼을 생성합니다. 모든 버튼은 선택된 변형이 품절일 때만 자동으로 나타납니다.

***

## 10. 번역 (i18n)

테마 로케일 파일에 다음 번역을 추가하세요.

**영어 (`en.json`)**

<Accordion title="코드">
  ```json theme={null}
  {
    "kleep": {
      "button": {
        "text": {
          "without_hash": "Find my ideal size",
          "with_hash": "Ideal size"
            }
          },
          "recommended": {
            "text": {
              "btn": "View similar",
              "hint": "Size unavailable",
              "link": "See similar products"
            }
          },
          "search": {
            "text": {
              "inputPlaceholder": "Search...",
              "productsBlockTitle": "Products",
              "clearButton": "Clear"
            }
          },
          "searchPage": {
            "text": {
              "header": "search results",
              "query": "Results for",
              "submit": "Search",
              "input": "Search the store",
              "viewProduct": "View product"
            }
          }
        }
      }
  ```
</Accordion>

**프랑스어 (`fr.json`)**

<Accordion title="코드">
  ```json theme={null}
  {
    "kleep": {
      "button": {
        "text": {
          "without_hash": "Trouver ma taille idéale",
          "with_hash": "Taille idéale"
            }
          },
          "recommended": {
            "text": {
              "btn": "Voir similaire",
              "hint": "Taille indisponible",
              "link": "Voir des produits similaires"
            }
          },
          "search": {
            "text": {
              "inputPlaceholder": "Recherche...",
              "productsBlockTitle": "Produits",
              "clearButton": "Effacer"
            }
          },
          "searchPage": {
            "text": {
              "header": "résultats de la recherche",
              "query": "Résultats pour",
              "submit": "Recherche",
              "input": "Rechercher dans la boutique",
              "viewProduct": "Voir le produit"
            }
          }
        }
      }
  ```
</Accordion>

**이탈리아어 (`it.json`)**

<Accordion title="코드">
  ```json theme={null}
  {
    "kleep": {
      "button": {
        "text": {
          "without_hash": "Trova la mia taglia ideale",
          "with_hash": "Taglia ideale"
        }
      },
      "recommended": {
        "text": {
          "btn": "Visualizza simili",
          "hint": "Taglia non disponibile",
          "link": "Visualizza prodotti simili"
        }
      },
      "search": {
        "text": {
          "inputPlaceholder": "Cerca...",
          "productsBlockTitle": "Prodotti",
          "clearButton": "Cancella"
        }
      },
      "searchPage": {
        "text": {
          "header": "risultati della ricerca",
          "query": "Risultati per",
          "submit": "Cerca",
          "input": "Cerca nel negozio",
          "viewProduct": "Visualizza prodotto"
        }
      }
    }
  }
  ```
</Accordion>

**독일어 (`de.json`)**

<Accordion title="코드">
  ```json theme={null}
  {
    "kleep": {
      "button": {
        "text": {
          "without_hash": "Finde meine ideale Größe",
          "with_hash": "Ideale Größe"
        }
      },
      "recommended": {
        "text": {
          "btn": "Ähnliche Ansicht",
          "hint": "Größe nicht verfügbar",
          "link": "Ähnliche Produkte ansehen"
        }
      },
      "search": {
        "text": {
          "inputPlaceholder": "Suchen...",
          "productsBlockTitle": "Produkte",
          "clearButton": "Klar"
        }
      },
      "searchPage": {
        "text": {
          "header": "Suchergebnisse",
          "query": "Ergebnisse für",
          "submit": "Suchen",
          "input": "Durchsuchen Sie den Shop",
          "viewProduct": "Produkt ansehen"
        }
      }
    }
  }
  ```
</Accordion>

**스페인어 (`es.json`)**

<Accordion title="코드">
  ```json theme={null}
  {
    "kleep": {
      "button": {
        "text": {
          "without_hash": "Encontrar mi talla ideal",
          "with_hash": "Talla ideal"
        }
      },
      "recommended": {
        "text": {
          "btn": "Ver similares",
          "hint": "Talla no disponible",
          "link": "Ver productos similares"
        }
      },
      "search": {
        "text": {
          "inputPlaceholder": "Buscar...",
          "productsBlockTitle": "Productos",
          "clearButton": "Borrar"
        }
      },
      "searchPage": {
        "text": {
          "header": "resultados de búsqueda",
          "query": "Resultados para",
          "submit": "Buscar",
          "input": "Buscar en la tienda",
          "viewProduct": "Ver producto"
        }
      }
    }
  }
  ```
</Accordion>

**일본어 (`ja.json`)**

<Accordion title="코드">
  ```json theme={null}
  {
    "kleep": {
      "button": {
        "text": {
          "without_hash": "自分に合うサイズを探す",
          "with_hash": "好みのサイズ"
        }
      },
      "recommended": {
        "text": {
          "btn": "類似商品を見る",
          "hint": "サイズがありません",
          "link": "類似商品を見る"
        }
      },
      "search": {
        "text": {
          "inputPlaceholder": "検索...",
          "productsBlockTitle": "商品",
          "clearButton": "クリア"
        }
      },
      "searchPage": {
        "text": {
          "header": "検索結果",
          "query": "検索結果",
          "submit": "検索",
          "input": "ストアを検索",
          "viewProduct": "商品を見る"
        }
      }
    }
  }
  ```
</Accordion>

**한국어 (`ko.json`)**

<Accordion title="코드">
  ```json theme={null}
  {
    "kleep": {
      "button": {
        "text": {
          "without_hash": "내 이상적인 사이즈 찾기",
          "with_hash": "추천 사이즈"
        }
      },
      "recommended": {
        "text": {
          "btn": "유사한 상품 보기",
          "hint": "사용 불가",
          "link": "유사한 상품 보기"
        }
      },
      "search": {
        "text": {
          "inputPlaceholder": "검색...",
          "productsBlockTitle": "상품",
          "clearButton": "지우기"
        }
      },
      "searchPage": {
        "text": {
          "header": "검색 결과",
          "query": "다음에 대한 결과",
          "submit": "검색",
          "input": "매장 검색",
          "viewProduct": "상품 보기"
        }
      }
    }
  }
  ```
</Accordion>

**포르투갈어 (`pt.json`)**

<Accordion title="코드">
  ```json theme={null}
  {
    "kleep": {
      "button": {
        "text": {
          "without_hash": "Encontrar meu tamanho ideal",
          "with_hash": "Tamanho recomendado"
        }
      },
      "recommended": {
        "text": {
          "btn": "Ver similar",
          "hint": "Tamanho indisponível",
          "link": "Ver produtos similares"
        }
      },
      "search": {
        "text": {
          "inputPlaceholder": "Pesquisar...",
          "productsBlockTitle": "Produtos",
          "clearButton": "Limpar"
        }
      },
      "searchPage": {
        "text": {
          "header": "resultados da pesquisa",
          "query": "Resultados para",
          "submit": "Pesquisar",
          "input": "Pesquisar na loja",
          "viewProduct": "Ver produto"
        }
      }
    }
  }
  ```
</Accordion>

***

## 11. 기술 참조

**PDP의 CTA 위치**

위치는 `KleepSDK.getConstants()` 내의 DOM 셀렉터로 정의됩니다:

* **`targetProductInfoBlockQueries`** – 상품 세부 정보(제목, 가격, 사이즈 등)의 메인 컨테이너를 가리키는 셀렉터 배열. 스크립트는 이 셀렉터들을 반복하여 CTA 또는 팝업의 삽입 지점으로 첫 번째 발견된 것을 사용합니다.
* **`targetVariantQueries`** – 사이즈/변형 옵션이 있는 위치. 상품 정보 블록이 발견되면 스크립트는 그 안에서 변형 요소(사이즈 선택기 등)를 검색합니다. 각 변형 `<label>`(또는 동등한 것)이 팝업 CTA를 연결하는 대상이 됩니다.

**팝업 vs. 버튼 (데스크톱 vs. 모바일)**

`checkIfMobile()`을 사용하여 기기 유형을 감지합니다:

이 함수는 브라우저의 `navigator.userAgent` 문자열을 모바일 기기 목록(예: iPhone, Android, iPad)과 비교합니다.

* **데스크톱**: 변형 레이블 옆에 호버 팝업으로 CTA가 표시됩니다
* **모바일**: 터치 스크린에서 호버 상호작용이 작동하지 않으므로 스크립트는 호버 팝업을 단일 버튼으로 대체합니다

**상품 참조 구성**

Kleep은 상품 참조를 사용하여 카탈로그 전반에서 상품을 매칭합니다. 식별 방법을 구성하세요:

**참조 필드:** 브랜드의 상품 참조를 찾을 위치

* Shopify SKU 필드
* 메타필드 (어떤 것인지 지정)
* 태그 (접두사 포함, 예: `ref:ABC123`)

**마스터 상품 추출:** 변형 SKU에서 마스터 상품 ID를 도출하는 방법

* 예시: 변형 SKU가 `ABC123-S`, `ABC123-M`, `ABC123-L`인 경우, 마스터 상품 참조는 `ABC123`입니다
* 규칙: 첫 6자 가져오기 / 분리하여 첫 번째 부분 가져오기 / 커스텀 정규식

**Kleep 대시보드 → 설정 → 상품 참조**에서 구성하세요.

**커스터마이즈 참고사항**

* 셀렉터 및 CSS 조정 외에 다른 배치/레이아웃 변형은 제공되지 않습니다
* 외관(색상, 간격, 폰트 등)을 변경하려면 Kleep 앱 임베드 설정의 **"Input custom CSS styles"** 상자에 CSS를 붙여넣으세요

***

## 12. 라이브 전환 체크리스트

라이브 전환 전 다음을 확인하세요:

**버튼 표시**

* [ ] &#x20;최소 3개의 상품 페이지에서 버튼 표시
* [ ] &#x20;데스크톱 및 모바일에서 버튼 작동
* [ ] &#x20;CSS 충돌 없음 (버튼이 숨겨지거나 잘못 정렬되지 않음)
* [ ] &#x20;누적 레이아웃 이동(CLS) 문제 없음 — 버튼이 페이지 점프를 유발하지 않음
* [ ] &#x20;**레거시 테마 전용:** 버전 관리에서 커밋 참조

**데이터 품질**

* [ ] &#x20;\>98%의 상품에 사이즈 가이드 매핑됨
* [ ] &#x20;\<1%의 변형에 측정값 누락
* [ ] &#x20;고아 SKU 0개 (카테고리 매핑 없는 상품)

**추적**

* [ ] &#x20;5개 이벤트 모두 올바르게 발생
* [ ] &#x20;전체 사용자 여정 추적 (버튼 → 추천 → 장바구니)
* [ ] &#x20;페이로드 유효성 검사 완료

**성능**

* [ ] &#x20;JS 오류 \< 1%
* [ ] &#x20;API 지연 시간 P95 \< 500ms
* [ ] &#x20;모니터링 준비 완료

**사용자 여정**

* [ ] &#x20;사이즈 가이드 올바르게 열림
* [ ] &#x20;추천이 올바르게 표시됨
* [ ] &#x20;사이즈 가이드에서 장바구니 추가 작동
* [ ] &#x20;유사 상품 표시 (활성화된 경우)
* [ ] &#x20;모든 기기에서 반응형

> ✅ 모든 항목이 확인되면 라이브 전환 전 최종 QA 검증을 위해 Kleep CSM에게 알리세요.

***

## 13. 문제 해결

**버튼이 나타나지 않음**

* ☑️ Kleep 앱 임베드가 활성화되어 있는지 확인 (켜기 토글)
* ☑️ 테마 변경사항을 저장했는지 확인
* ☑️ 브라우저 캐시를 지우고 페이지를 다시 로드
* ☑️ 상품에 사이즈 변형이 구성되어 있는지 확인

**유사 상품이 나타나지 않음**

* ☑️ 설정에서 모드가 "비활성화"로 설정되어 있지 않은지 확인
* ☑️ 버튼은 변형이 품절일 때만 나타납니다
* ☑️ "커스텀" 모드의 경우 앱 블록을 추가했는지 확인

**검색이 작동하지 않음**

* ☑️ 앱 임베드에서 "커스텀 검색 활성화"가 활성화되어 있는지 확인
* ☑️ 검색 템플릿에 Kleep 검색 블록을 추가했는지 확인
* ☑️ 기본 검색이 숨겨져 있는지 확인

**Kleep 앱 블록을 찾을 수 없음**

"블록 추가"를 클릭할 때 "앱" 탭에 Kleep 블록이 보이지 않으면 테마가 레거시 테마일 가능성이 높습니다. 대안 설치 지침은 11-12 섹션을 참조하세요.

**데이터 매핑 문제**

* ☑️ 상품 데이터에 예상 필드(태그, 메타필드 등)가 포함되어 있는지 확인
* ☑️ **Kleep 대시보드 → 설정 → 데이터 매핑**에서 매핑 확인
* ☑️ 상품 스캔을 다시 실행하여 감지된 값 새로 고침

**이벤트가 발생하지 않음**

* ☑️ 브라우저 콘솔에서 JavaScript 오류 확인
* ☑️ 광고 차단기나 개인정보 보호 확장 프로그램이 Kleep 요청을 차단하지 않는지 확인
* ☑️ 시크릿 모드에서 테스트

**지원 문의**

여기에 나열되지 않은 문제가 발생하면 Kleep 팀에 문의하세요:

* 📧 **이메일:** [support@kleep.ai](mailto:support@kleep.ai)

***

### Kleep을 사용해 주셔서 감사합니다! 🎉

저희 팀이 사이즈 가이드의 설치 및 최적화를 도와드립니다.---

## 쿠키 및 데이터 개인정보 보호

Kleep은 방문자 동의에 의해 완전히 제어됩니다: 스크립트는 CMP를 통해 동의가 수집된 **후에만** 로드되며, 이에 따라 로딩 조건을 설정해야 합니다. 추적기의 전체 목록, 처리되는 데이터, 목적 및 법적 근거, 호스팅, 하위 처리자 및 보안에 대한 내용은 [쿠키, CMP 및 데이터 개인정보 보호](/ko/cookie-consent)를 참조하세요.
