# 레벨 스튜디오: HighLevel 기능·화면·동작 분석

조사일: 2026-10-26 (Asia/Seoul) · 분석 대상: HighLevel 웹 SaaS · 재구현 가칭: 레벨 스튜디오

## 1. 이 문서가 확인한 범위

이 문서는 사용자가 첨부한 화면 2장과 HighLevel 공식 도움말·개발자 문서를 근거로 제품을 분해한 1차 분석이다. 로그인한 HighLevel 계정의 실제 조작, 유료 플랜별 화면, 서버 소스, 비공개 API, 원본 데이터베이스, 내부 AI 프롬프트는 이 조사 담당 범위에서 확보하지 않았다. 따라서 **제품 전체를 실행 관찰하거나 원본과 완전히 동일하게 복원했다는 뜻이 아니다.** 공개 문서에서 확인되는 행동, 첨부 화면에 보이는 구조, 구현을 위한 설계 제안을 구분한다.

공식 도움말은 계속 갱신된다. 첨부 영상이 촬영된 시점의 제품과 2026-10-26에 문서로 확인한 제품 사이에는 메뉴명·Labs·권한·플랜·지역별 차이가 있을 수 있다. 문서에 적힌 기능도 실제 대상 계정에서 제공되는지는 로그인 후 별도로 확인해야 한다.

| 표기 | 의미 | 사용할 수 있는 주장 |
|---|---|---|
| 첨부화면 | 사용자가 제공한 정지 화면에서 직접 확인 | 보이는 텍스트·배치·현재 표시된 단계 |
| 공식문서 | HighLevel 공식 도움말/API/변경 기록에서 확인 | 문서가 설명하는 지원 동작·조건 |
| 설계제안 | 레벨 스튜디오 구현을 위해 작성한 자체 설계 | 만들 방법·검증 기준. 원본 내부 구조라는 주장 불가 |
| 미확인 | 로그인·실행·특정 플랜·외부 연결이 필요 | 원본과 동등하다고 판정 불가 |

동봉한 `feature-matrix.csv`는 세부 기능별 확인 근거와 재구현 우선순위를 정리한 작업 목록이다. 그 목록은 **구현 완료표가 아니다.** 실행 가능한 구현의 실제 범위는 프로젝트 인계 문서를 따른다.

## 2. 첨부 이미지에서 직접 읽히는 구조

### 이미지 1: 공개 홈페이지

- HighLevel 브랜드, Login, Start 14-day trial, AI를 내세운 제품 소개와 무료 체험 CTA가 있다.
- 공개 메시지는 고객 유입·육성·예약·매출·리뷰·재방문을 하나의 운영 도구에서 처리한다는 내용이다.
- 오른쪽 예시 화면에는 Reputation Management, Overview / Requests / Reviews / Widget / Settings 탭이 보인다.
- 리뷰 요청 버튼, AI 요약, 리뷰 수·감정·평균 평점 관련 카드가 보인다. 영상 오버레이와 발표자 얼굴은 제품 UI가 아니다.

### 이미지 2: Imports

- 왼쪽 사이드바: 계정 선택, 검색, Ask AI, Dashboard, Conversations, Calendars, Contacts, Opportunities, Payments, AI Studio(Beta), AI Agents, Marketing, Automation, Sites, Memberships, Media Storage, Reputation, Reporting, Settings.
- 본문 제목: Imports. 설명은 contacts, opportunities, custom objects 가져오기다.
- 상단은 Start → Upload → Map → Verify의 4단계다. 현재 Upload가 활성화돼 있다.
- 업로드 카드에는 파일 선택/드래그 앤드 드롭, CSV 및 최대 30 MB 표시, 샘플 파일과 도움말 링크가 보인다.
- 가져오기 방식 선택에 Create and update contacts가 선택돼 있다. 하단 Back / Cancel / Next가 보인다.
- 오른쪽 상단의 전화·AI·공지·알림·도움말·사용자 원형 아이콘은 보이지만 클릭 동작은 정지 화면으로 검증하지 않았다.

재구현 시 좌측 업무 영역, 상단 계정·전역 도구, 본문 탭, 4단계 import wizard라는 구조를 참고할 수 있다. 얼굴 영상·유튜브 재생바·브라우저 프레임은 복제 대상에서 제외한다.

## 3. 제품의 업무 모델

HighLevel은 한 개의 연락처 앱을 넘어, Agency 아래 여러 Sub-account(Location)를 두고 각 사업장의 CRM·메시지·예약·결제·마케팅·콘텐츠·자동화·분석을 연결하는 제품이다. Sub-account는 CRM 운영 단위이고 Agency는 계정 생성·SaaS 재판매·청구·브랜딩·공통 템플릿 등을 관리하는 상위 범위다. [공식 역할 범위](https://help.gohighlevel.com/support/solutions/articles/48001078296)

다음은 원본 내부 구조가 아니라 레벨 스튜디오의 **설계제안**이다.

```text
Agency(스튜디오/운영사)
  └─ Workspace(Location/사업장)
      ├─ 사용자·권한·통화·시간대·연결 설정
      ├─ Contact ← 태그·커스텀 필드·회사·수신거부
      │   ├─ Conversation → Message → 외부 채널 전송 결과
      │   ├─ Opportunity → Pipeline → Stage / Status
      │   ├─ Appointment → Calendar / 담당자 / 예약 가능 시간
      │   ├─ Invoice / Order / Subscription → Payment
      │   ├─ FormSubmission / SiteVisit / CourseEnrollment
      │   └─ Event → WorkflowRun → 실행 단계 / 결과 / 재시도
      ├─ Content: Page / Funnel / Form / Survey / Media
      ├─ Membership: Course / Lesson / Group / Member
      ├─ AI: Agent / KnowledgeSource / Version / Run
      └─ Reporting: Widget / Query / Report / Schedule
```

이 구조의 핵심은 업무 메뉴별로 데이터를 따로 만드는 것이 아니라 동일한 Contact와 Workspace 식별자를 일관되게 공유하는 것이다. 이벤트와 실행 이력은 상태 변경과 분리해서 저장하면 메시지 실패, 예약 취소, 영업 재개 등의 이력을 복원하기 쉽다.

## 4. 모듈별 분석

각 절의 ‘재구현’ 및 ‘검증’은 자체 제안이다. 공식문서 근거가 제품 내부 구현을 입증하지는 않는다.

### 4.1 계정·권한·설정

**문서 확인:** Agency / Account 사용자 유형, Admin / User 역할, 접근 가능한 sub-account, 모듈별 권한과 세부 작업 권한을 조합한다. Sub-account에는 Only Assigned Data로 담당 연락처·영업기회·예약/작업 등 지원 데이터의 가시성을 제한하는 설정이 있다. 관리자 권한도 적용 가능한 세부 설정에 영향을 받는다. [Agency 권한](https://help.gohighlevel.com/support/solutions/articles/155000002543), [Sub-account 권한](https://help.gohighlevel.com/support/solutions/articles/155000002544)

**흐름:** 사용자 초대/편집 → 접근 범위 지정 → 역할 선택 → 모듈·행동 허용 → 담당 데이터 제한 → 저장 → 대상 사용자로 조회 검증.

**재구현:** 모든 레코드에 `workspaceId`, 변경 작업에 `actorId`를 둔다. 메뉴 숨김과 서버 접근 검증을 함께 구현한다. 계정 전환 시 검색·선택·캐시를 초기화한다. `permission(module, action, scope)`를 단일 정책 함수로 관리한다.

**검증:** 다른 사업장 ID를 URL/API에 넣어도 읽거나 수정하지 못해야 한다. 담당 데이터 제한은 목록·검색·내보내기·대시보드 모두에 적용돼야 한다. 권한 변경과 사용자 초대는 감사 이력에 남긴다. 비밀 값과 외부 연결 토큰은 일반 설정 내보내기에서 분리한다.

### 4.2 연락처 CRM

**문서 확인:** Contacts → Smart Lists에서 연락처를 추가·편집·삭제한다. 이름·이메일·전화와 계정에서 구성한 추가 필드를 관리하며, 신규 리드의 폼/설문 제출로 연락처가 만들어질 수 있다. [연락처 관리](https://help.gohighlevel.com/support/solutions/articles/155000005055/)

**입력/출력:** 이름·이메일·전화·담당자·소스·태그·필드 → 연락처 ID, 목록, 상세 기록. 상세는 대화·영업기회·예약 등의 연결 지점이다.

**재구현:** 검색, 정렬, 태그/담당자/날짜 필터, 동적 저장 목록, 선택 건수, 일괄 태그, CSV 출력, 상세 편집을 우선 구현한다. 문자열 이메일 비교와 국제 전화번호 정규화는 표시값과 비교값을 구분한다. 빈 이메일은 중복 키로 취급하지 않는다. 수신거부는 채널별로 관리한다.

**검증:** 새 연락처가 검색과 집계에 즉시 반영돼야 한다. 유효하지 않은 이메일·전화는 저장 전에 알려야 한다. 삭제·복구·일괄 조작이 관련 기록에 미치는 영향은 명시적으로 결정한다. 원본의 삭제 복구 보존 기간과 실제 상세 화면은 로그인 후 확인 항목이다.

### 4.3 회사·커스텀 오브젝트

**문서 확인:** 커스텀 오브젝트는 사업별 데이터 유형과 필드·관계를 모델링한다. 예를 들어 부동산 객체의 속성과 고객·판매자·거래 관계를 다룰 수 있다. 공식 도움말은 생성·편집, 레코드 관리, 고급 필터·목록·감사 이력을 별도 기능으로 분류한다. [커스텀 오브젝트 사례](https://help.gohighlevel.com/support/solutions/articles/155000004176-custom-objects-real-estate-case-study), [공식 도움말 목차](https://help.gohighlevel.com/support/solutions)

**재구현:** `ObjectDefinition`, `FieldDefinition`, `ObjectRecord`, `AssociationDefinition`, `Association`을 분리한다. 필드 타입은 텍스트·숫자·날짜·단일/다중 선택·참조부터 시작한다. 필수·고유·기본값·옵션 목록을 스키마로 관리한다. 기존 데이터가 있을 때 타입 변경은 사전 검사와 변환 보고서를 거친다.

**검증:** 참조 대상 삭제, 필드 이름 변경, 선택 옵션 제거, 고유값 충돌, 순환 관계, 서로 다른 workspace 연결을 시험한다. 객체 수·관계 수·필드 수·플랜 한도와 원본의 회사 자동 연결 규칙은 대상 계정에서 확인한다.

### 4.4 CSV 가져오기: 첨부 화면의 우선 재구현 대상

**문서 확인:** 연락처 import는 Admin 권한, CSV 파일, 30 MB 미만, 비어 있지 않은 헤더를 요구한다. 새 연락처에는 이름·이메일·전화 중 하나가 필요하다. 연락처와 영업기회를 한 행에서 함께 가져올 수 있고, 기존 연락처 매칭 우선순위는 Contact ID → Email → Phone이다. [연락처 CSV import](https://help.gohighlevel.com/support/solutions/articles/155000004432-importing-contacts-using-a-csv-file)

**문서 확인:** 날짜·다중선택·태그 등은 필드별 형식 규칙을 따른다. 기존 필드가 없는 열은 자동으로 새 스키마를 만드는 것으로 가정하면 안 된다. [CSV 필드 형식](https://gohighlevelassist.freshdesk.com/support/solutions/articles/155000005143-csv-file-format-for-importing-contacts-and-opportunities)

**문서 확인:** 커스텀 오브젝트 import에는 생성/수정/병합, 고유 필드에 따른 중복 처리, 빈값 처리와 Bulk Actions 결과가 있다. 객체 하나씩 처리하는 제약이 문서화돼 있다. [커스텀 객체 CSV import](https://help.gohighlevel.com/support/solutions/articles/155000007407-bulk-import-custom-object-records-csv-with-bulk-actions), [공식 변경 기록](https://ideas.gohighlevel.com/changelog/bulk-import-for-custom-objects-create-update)

**재구현 명세:**

1. **Start:** 객체 선택. 연락처 단독 / 연락처+영업기회 / 커스텀 객체 중 지원 범위만 활성화한다.
2. **Upload:** 로컬 파일 선택 또는 드롭 → 확장자·바이트 크기 검사 → UTF-8 BOM 처리 → 구분자/헤더 분석 → 샘플 행 미리보기. 생성 / 수정 / 생성+수정 방식과 빈값 처리 옵션을 고른다.
3. **Map:** 원본 열, 시스템 필드, 샘플 값, 무시 여부를 나란히 보여준다. 자동 매핑은 제안으로 표시하고 사용자가 바꿀 수 있게 한다. 같은 목적 필드에 두 열을 중복 연결하면 경고한다.
4. **Verify:** 행별 검증, 새로 생성/수정/건너뜀/오류 예상 수, 매핑·태그·동의 설정 요약을 보여준다. 사용자가 확정한 뒤에만 데이터를 변경한다.
5. **Result:** import 작업 ID, 전체/성공/오류/건너뜀 수, 생성/수정 수, 행 번호별 원인, 오류 CSV, 실행 시각을 남긴다. 재시도 시 이미 성공한 행의 중복 생성 방지가 필요하다.

**설계 결정:** 앞 단계로 돌아가면 파일 자체는 유지하되 매핑 변경에 영향받는 검증 결과는 폐기한다. 마지막 실행 버튼은 중복 클릭을 막고 작업 ID로 중복 실행을 방지한다. 실패한 행만 재실행할 수 있어야 한다. 가져오기 취소와 브라우저 닫기 후 작업 상태를 구분한다.

**필수 시험:** 쉼표가 든 인용 문자열, 줄바꿈이 든 셀, 이스케이프 따옴표, BOM, 빈 마지막 행, 중복 헤더, 헤더만 있는 파일, 비정상 따옴표, 한글, 0으로 시작하는 전화, 이메일 대소문자, 기존 ID/이메일/전화가 서로 다른 레코드를 가리키는 충돌, 파일 내부 중복, 빈값 덮어쓰기, 잘못된 파이프라인/단계, 30MB 경계, 일부 오류, 실행 중 재로딩.

### 4.5 대화·통합 인박스

**문서 확인:** Conversations에는 들어오는 스레드의 응답 목표 시간을 추적하는 SLA가 있으며, 공통 또는 채널별 목표와 기한 임박/초과 표시를 설정한다. Email·SMS·Facebook·WhatsApp·TikTok 등의 채널별 목표 사례가 설명돼 있다. [Conversation SLA](https://help.gohighlevel.com/support/solutions/articles/155000006745)

**재구현 흐름:** 인박스 필터 → 스레드 선택 → 연락처/담당자/채널 확인 → 메시지 작성 → 첨부/템플릿 → 전송 확인 → 결과·오류 표시. 읽음, 미응답, 담당, 보관 등의 운영 상태를 별도 필드로 둔다.

**설계:** 메시지의 작성·큐 대기·공급자 수락·전달·읽음·실패를 혼동하지 않는다. 외부 채널이 연결되지 않았으면 작성과 로컬 초안까지만 제공한다. 실제 전송했다고 표시하지 않는다. 웹훅 재전달은 공급자 메시지 ID로 중복 제거한다.

**예외:** 번호/채널 미연결, 토큰 만료, 채널별 발송 가능 시간, 첨부 제한, 수신거부, 메시지 공급자 오류, 서로 다른 담당자의 동시 답장. 이 규칙의 세부값은 각 공급자 연결 후 검증한다.

### 4.6 캘린더·예약

**문서 확인:** Meetings와 Services 일정 유형이 있으며 personal·round robin·collective·class·service 등의 예약 형태, 담당자/캘린더/그룹 또는 직원/서비스/카테고리 필터를 사용한다. 서비스 보기의 외부 캘린더 변경 동기화에는 별도 제한이 설명돼 있다. [Calendar View](https://help.gohighlevel.com/support/solutions/articles/155000006096-calendar-view-services)

**문서 확인:** 연결한 Google/Outlook/iCloud 캘린더의 충돌 확인 기능이 외부 일정 구간을 차단한다. 기본 캘린더와 충돌 검사 설정은 서로 다른 역할이다. [예약 충돌](https://help.gohighlevel.com/support/solutions/articles/155000003548)

**재구현:** 가용 요일·시간·기간·슬롯 간격·전후 버퍼·최소 예약 전 시간·인원·담당자·장소를 정의한다. UTC 시작/종료와 표시 시간대를 저장한다. 생성/변경/취소/노쇼를 이력으로 남긴다. 저장 직전에 슬롯 가용성을 다시 검사한다.

**검증:** 담당자 중복, 전후 버퍼, 자정 넘김, 주간 경계, 공휴일/휴무, 동일 슬롯 동시 예약, 시간대 변환, 일광절약시간, 알림 재예약, 취소된 일정의 가용성 회복. 원본의 정확한 분배 알고리즘과 상태 이름은 실제 계정에서 관찰한다.

### 4.7 영업기회·파이프라인

**문서 확인:** Stage는 파이프라인 안의 진행 위치이고 Status는 Open / Won / Lost / Abandoned라는 결과 상태다. 담당자·팔로워·금액·소스·날짜·커스텀 필드 조건을 AND/OR로 결합한다. [영업기회 필터](https://help.gohighlevel.com/support/solutions/articles/155000001241)

**문서 확인:** 칸반 카드 다중 선택으로 담당자·파이프라인·단계·상태를 일괄 변경한다. 선택 모드에서는 카드 열기/드래그 동작이 제한된다. [일괄 작업](https://help.gohighlevel.com/support/solutions/articles/155000005536-bulk-actions-in-cards-view)

**재구현:** 연락처 연결, 기회명, 파이프라인, 단계, 상태, 금액·통화, 담당자, 소스, 실패 사유를 저장한다. 칸반 드롭은 서버 성공 후 확정하며 실패하면 원위치와 오류를 표시한다. 단계 이동과 상태 변경 이벤트를 구분한다.

**검증:** 다른 파이프라인으로 이동할 때 단계 재지정, 삭제된 단계 처리, 영업 재개, 다중 기회 허용 여부, 일괄 선택의 페이지 범위, 담당 권한, 통화별 합계, 중복 이벤트 방지. 단계 이름이 ‘수주’여도 Status가 Won이라고 자동 가정하지 않는다.

### 4.8 결제·청구·상품

**문서 확인:** Payments → Invoices & Estimates에서 고객·상품·가격을 설정하고 저장한 뒤 보낸다. Draft / Sent / Paid 등의 상태를 목록에서 확인하며 반복 청구와 분할 납부 관련 기능이 있다. [청구서](https://help.gohighlevel.com/support/solutions/articles/155000005075/)

**문서 확인:** 결제 공급자와 수단의 지원 여부는 주문서·폼·청구서·구독·결제 링크·강의·커뮤니티·예약·POS 등 제품 영역별로 다르며, 지원되는 일회성 결제 수단이 정기 결제까지 보장하지 않는다. [영역별 결제 공급자](https://help.gohighlevel.com/support/solutions/articles/155000006075), [Stripe 설정](https://help.gohighlevel.com/support/solutions/articles/155000005164)

**재구현:** 상품/가격/세율/할인/청구서/항목/납부/환불/구독을 분리한다. 금액은 최소 통화 단위 정수 또는 정확한 decimal로 계산한다. 청구서 발송과 결제 완료는 별도 작업이다. 외부 결제 연결 전에는 청구서 초안·PDF/출력용 보기만 제공한다.

**검증:** 부분 납부, 초과 납부, 중복 웹훅, 환불, 취소, 통화 자리수, 할인/세금 적용 순서, 만료된 결제 링크, 결제 성공 후 화면 재시도. 테스트 모드와 실제 결제 모드 상태를 분리한다.

### 4.9 마케팅

**문서 확인:** Marketing에는 Social Planner·Email Marketing·Ad Manager·Template Library가 있다. 이메일은 캠페인·통계·템플릿 등으로 나뉜다. [마케팅 공식 목차](https://help.gohighlevel.com/support/solutions/48000449565)

**문서 확인:** Social Planner는 소셜 계정 연결, 초안·검토·예약·게시와 성과 확인을 지원한다. 지원 플랫폼과 게시물 유형·분석은 채널마다 다르다. 실제 예약/게시에는 유효한 채널 연결이 필요하다. [Social Planner 시작](https://help.gohighlevel.com/support/solutions/articles/155000005063-getting-started-setup-social-planner)

**문서 확인:** 이메일 클릭 성과는 전송 전에 추적을 켠 발송 캠페인에서 수집하며, 초안/예약 단계에 수신자 반응 통계가 생기는 것은 아니다. [이메일 클릭 성과](https://help.gohighlevel.com/support/solutions/articles/155000006833-click-performance-in-email-statistics)

**재구현:** 캠페인 목표·대상 필터·템플릿·발신자·미리보기·예약 시간·승인자·채널별 변형·발송 결과를 저장한다. 콘텐츠 생성과 외부 게시를 분리한다. 예약된 발송은 앱 창을 닫아도 실행될 백엔드 작업자가 있어야 실제 예약 기능으로 표시할 수 있다.

**검증:** 수신거부, 대상 목록 평가 시점, 예약 시간대, 연결 만료, 승인 거절, 채널별 미디어 규격, 중복 게시, 발송량 제한, 일부 실패. 광고 계정 연결·과금·정책 검증은 별도 통합 범위다.

### 4.10 워크플로 자동화

**문서 확인:** Workflow Builder에는 Draft/Publish가 있다. Draft는 실제 트리거·동작을 활성화하지 않으며, 기다리는 단계의 연락처는 재개할 때 현재 단계를 유지한다. 외부 앱 연결에 Webhook 동작 등을 쓸 수 있다. [Workflow Builder](https://help.gohighlevel.com/support/solutions/articles/155000001254)

**문서 확인:** 연락처·폼/설문·예약·영업기회·리뷰·추적 등 다양한 이벤트 트리거가 분류돼 있다. [트리거 목록](https://help.gohighlevel.com/support/solutions/articles/155000002292-a-list-of-workflow-triggers)

**문서 확인:** 영업기회 단계/상태/실패 사유 조건으로 자동화를 시작하고 알림·필드 변경·작업 생성·이메일 등의 후속 동작을 구성한다. [Pipeline Stage Changed](https://help.gohighlevel.com/support/solutions/articles/155000002493-workflow-trigger-pipeline-stage-changed)

**재구현:** 정의와 실행 인스턴스를 분리한다. 노드(트리거·조건·대기·태그·담당·영업기회·초안 메시지·웹훅)와 연결선, 버전, 등록 정책, 중단 정책을 저장한다. 활성 실행은 고정된 버전을 가리키고 편집본과 분리한다. 각 실행에는 입력 이벤트·현재 단계·시도·다음 실행 시각·오류를 기록한다.

**검증:** 중복 이벤트, 재등록, 노드 삭제, 배포 중 실행, 대기 중 취소, 공급자 타임아웃, 재시도 중복 전송, 비가시적 순환, 시간대, 분기 값 누락. 브라우저에서만 재생하는 흐름은 ‘시뮬레이션’으로 표시한다.

### 4.11 Sites·퍼널·폼·설문

**문서 확인:** 사이트/퍼널 빌더 안에서 폼·설문을 만들고 기존 자산을 재사용한다. 필드·스타일·동작을 편집하고 제출 기록을 관리한다. 폼과 설문은 직접 상호 변환되지 않는다. [Forms & Surveys in Site Builder](https://help.gohighlevel.com/support/solutions/articles/155000006719-create-forms-surveys-inside-the-site-builder)

**문서 확인:** 폼/설문의 분석에는 기간 비교, 자산별 성과, 특정 설문 슬라이드의 이탈 분석이 있으며 조건 점프로 수치가 단순한 선형 감소와 다를 수 있다. [폼·설문 분석](https://help.gohighlevel.com/support/solutions/articles/155000004181)

**재구현:** Site → Page, Funnel → Step, Form → Field, Survey → Slide/Branch를 별도 정의한다. 공통 블록·토큰·미디어는 재사용한다. 편집 저장·미리보기·게시를 구분하고 게시된 버전은 고정한다. 제출은 검증 후 Contact 및 이벤트와 연결한다.

**검증:** 필수 필드, 선택 옵션, 조건 분기, 새로고침/중복 제출, 공개 페이지의 workspace 경계, 미리보기의 실제 전송 방지, 외부 임베드, 모바일·키보드 탐색, custom domain/DNS/SSL, 게시 버전 롤백. ‘페이지 카드가 표시됨’과 실제 편집·호스팅 기능을 구분해야 한다.

### 4.12 멤버십·강의·커뮤니티

**문서 확인:** 강의 편집은 모듈·레슨·퀴즈·과제 구조와 영상/파일, 재정렬을 다룬다. [강의 시작](https://help.gohighlevel.com/support/solutions/articles/155000005072-getting-started-launch-a-course)

**문서 확인:** Communities는 그룹·채널·회원·브랜딩·도메인과 역할별 접근을 관리한다. Admin / Contributor / Member 같은 커뮤니티 역할은 CRM 직원 역할과 구별해야 한다. [커뮤니티 설정](https://help.gohighlevel.com/support/solutions/articles/155000000280-how-to-setup-customize-and-manage-your-communities)

**문서 확인:** 커뮤니티 안에서 강의를 무료/유료로 제공하고 일회성 또는 정기 가격을 설정하는 흐름이 있다. [유료 강의](https://help.gohighlevel.com/support/solutions/articles/155000002135)

**재구현:** Course·Module·Lesson·Offer·Enrollment·Progress, Group·Channel·Post·Comment·Membership을 분리한다. 로그인 직원과 수강 회원의 권한 체계를 분리한다. 결제/초대/수동 승인으로 받은 수강권은 근거와 만료일을 보관한다.

**검증:** 미구매 강의 직접 URL 접근, 구독 종료, 환불 후 접근, 진도 저장, 영상 권한, 공개/비공개 채널, 가입 승인, 차단/신고, 게시물 삭제, 수강권 변경 이력. 공개 강의 카드만으로 인증·유료 콘텐츠 보호까지 완료된 것으로 보지 않는다.

### 4.13 미디어 저장소

**문서 확인:** Media Storage는 업로드·폴더·전역 검색·정렬·미리보기·삽입을 제공하고, 업로드별 진행/완료/실패/취소 상태를 표시한다. 폴더 업로드 한도는 문서상 중첩 3단계·한 번에 1,000파일이다. [Media Storage](https://help.gohighlevel.com/support/solutions/articles/155000002707-complete-guide-to-media-storage)

**문서 확인:** Media Picker는 폼·설문·퀴즈·QR 등에 공통 미디어를 넣는 선택 창이다. [Media Picker](https://help.gohighlevel.com/support/solutions/articles/155000007745-how-to-add-and-reuse-images-in-forms-surveys-qr-codes-with-media-picker)

**재구현:** 원본 파일·파일명·MIME·바이트·해시·폴더·가시성·참조 자산·업로드 상태를 저장한다. 큰 파일은 청크 또는 서명 URL 방식으로 전송하고 취소/재시도를 독립 처리한다. 삭제 전에 참조 중인 페이지·청구서·강의를 보여준다.

**검증:** 같은 이름, 실제 MIME 불일치, 중단 후 재시도, 0바이트, 대용량, 폴더 순환, 공개 URL 접근, 사용 중인 이미지 삭제. 파일 메타데이터만 저장한 상태를 실제 파일 백업/클라우드 업로드라고 표시하지 않는다.

### 4.14 평판·리뷰

**문서 확인:** Reputation은 리뷰 요청·위젯·경쟁사 분석·GBP 최적화·리스팅·영상 후기 등의 영역을 포함한다. [공식 평판 관리 목차](https://help.gohighlevel.com/support/solutions/48000449583)

**문서 확인:** 신규 계정 설정 마법사는 리뷰 플랫폼 연결, 리뷰 링크, 첫 요청, 선택적 Reviews AI, 리뷰 위젯 등을 안내한다. [리뷰 설정](https://help.gohighlevel.com/support/solutions/articles/155000005201-guided-review-setup-wizard-reputation-management-)

**재구현:** ReviewSource·Review·Reply·ReviewRequest·RequestAttempt·Widget를 분리한다. 평점·채널·담당·응답 상태 필터, 요청/응답 초안, 위젯 미리보기를 제공한다. 평균 평점과 감정 분석 결과를 서로 다른 지표로 취급한다. 실제 리뷰 플랫폼 연결 전에는 샘플 리뷰와 로컬 초안을 명시한다.

**검증:** 플랫폼 중복 수집, 삭제/수정된 리뷰, 권한 만료, 요청 수신거부, 과거 리뷰 응답 일괄 발행, AI 초안 검토, 위젯 공개 범위. 리뷰 요청 버튼을 눌렀다는 사실과 고객에게 실제 전달됐다는 결과를 분리한다.

### 4.15 대시보드·리포팅

**문서 확인:** 영업기회 위젯은 개수·금액·상태·담당자·파이프라인·단계 등을 집계한다. 일부 이번 달 위젯은 고정된 날짜 범위를 갖고, 상태 변경 날짜 기반 보고는 재오픈 등으로 과거 수치가 달라질 수 있다. [영업기회 위젯](https://help.gohighlevel.com/support/solutions/articles/155000008109-opportunities-widgets-in-dashboards-reports)

**문서 확인:** Custom Reports는 대시보드에서 전환하거나 새로 만들고, 페이지·위젯·테마를 구성해 PDF 내보내기와 예약 이메일을 지원한다. 브라우저·사업장·광고 계정 시간대가 서로 다른 계산에 쓰일 수 있다. [Custom Reports](https://help.gohighlevel.com/support/solutions/articles/155000003965-how-to-create-custom-reports-and-schedule-reports)

**재구현:** 지표마다 데이터 출처, 계산식, 기준 날짜 필드, 시간대, 통화, 필터, 갱신 시각을 표시한다. 집계 카드 → 필터 적용 원본 목록으로 이동할 수 있게 한다. 권한 제한이 집계에도 적용돼야 한다.

**검증:** 빈 기간, 0으로 나누기, 기간 경계, 수주 후 재오픈, 취소 결제, 여러 통화, 현재 담당자와 과거 담당자, 늦게 들어온 이벤트, 표의 페이지 수와 전체 집계. 샘플 고정 수치를 실제 사업 성과처럼 표시하지 않는다.

### 4.16 AI 기능: 서로 다른 여섯 영역

**문서 확인:** Ask AI는 사용자가 요청하는 인앱 도우미, Conversation AI는 고객 대화, Managed Agents는 이벤트 기반 업무 실행, Agent Studio는 에이전트 시각 설계, AI Studio는 웹 경험 생성, Knowledge Base는 지원 AI에 사업 지식을 제공하는 영역이다. [AI 제품 구분](https://help.gohighlevel.com/support/solutions/articles/155000002166), [Managed/Conversation/Ask AI](https://help.gohighlevel.com/support/solutions/articles/155000008362-super-agents-conversation-ai-ask-ai-what-s-the-difference-)

**문서 확인:** AI Studio는 Labs에서 활성화하는 프롬프트 기반 웹 빌더이며 템플릿/URL/이미지 참고, 시각 편집, 버전, 미리보기와 게시를 지원한다. 프로젝트를 표준 Sites/Funnels 빌더로 옮기는 것은 지원하지 않는다고 설명한다. [AI Studio](https://help.gohighlevel.com/support/solutions/articles/155000007587-ai-studio-in-highlevel)

**문서 확인:** Agent Studio는 트리거·의사결정·지식 검색·도구·외부 연계를 노드로 설계하는 환경이다. [Agent Studio](https://help.gohighlevel.com/support/solutions/articles/155000007393)

**문서 확인:** Conversation AI는 초안 제안/자동 응답 등의 모드와 채널 연결을 갖는다. 최신 채널별 배포는 연결 목적지·연락처 태그로 라우팅하며 동일 조건 충돌을 막는다. [봇 구성](https://help.gohighlevel.com/support/solutions/articles/155000004401), [채널 라우팅](https://help.gohighlevel.com/support/solutions/articles/155000008266)

**재구현:** 실제 모델 연결 전에는 에이전트 설정 저장·지식 파일 목록·흐름 시뮬레이션·초안 수동 편집을 제공한다. 모델이 연결되면 생성 결과, 도구 요청, 검토 상태, 실행 결과, 토큰/비용과 버전을 기록한다. 외부 전송·결제·삭제 같은 도구는 사용자/업무 권한을 다시 검사한다.

**검증:** 근거 없는 답변, 지식 갱신 실패, 잘못된 도구 인자, 권한 초과, 외부 문서의 지시문, 지연/실패, 중복 실행, 사람에게 이관, 채널 겹침, 예산·사용량 한도. 모델 연결이 없는 상태에서 ‘AI가 분석/답변 완료’라고 표시하면 안 된다.

### 4.17 Agency·SaaS 판매·스냅샷

**문서 확인:** SaaS Configurator는 요금·기능·스냅샷·추가 기능·사용량 등을 묶어 고객 sub-account 구독을 판매/온보딩한다. V1(Stripe 기반)과 V2(Agency Sub-Account 기반)는 구분된 청구 구조다. [SaaS Configurator](https://help.gohighlevel.com/support/solutions/articles/155000008015-getting-started-with-the-saas-configurator)

**문서 확인:** Snapshot은 워크플로·퍼널·폼 등 재사용 가능한 구성을 선택해 복사하는 도구이며 연락처·대화·예약·실시간 이력을 옮기는 전체 데이터 백업이 아니다. 원본 변경이 자동 반영되지 않고 갱신/배포가 필요하다. [Snapshots](https://help.gohighlevel.com/support/solutions/articles/48000982511-snapshots-overview)

**재구현:** Workspace 생성·정지, 요금제의 기능 허용, 구독 상태, 사용량 원장, 브랜딩, 구성 템플릿을 분리한다. 스냅샷 패키지는 자산 ID를 새 ID로 치환하고 연결 참조를 재작성한다. 충돌은 보존/대체/건너뜀을 미리 보여준다.

**검증:** 결제 성공 후 계정 생성 실패, 구독 변경, 사용량 재청구, 템플릿 버전, 외부 토큰 제외, 같은 이름 자산 충돌, 일부 복사 실패와 재시도. 재사용 템플릿과 사용자 데이터 백업을 별도 기능으로 제공해야 한다.

### 4.18 공개 API·연결

**문서 확인:** 공식 API는 연락처·대화·캘린더·결제 등 영역과 OAuth scope, sub-account/agency 범위를 구분한다. 연락처 upsert는 location 중복 설정의 우선순위에 따른다. [API 목차](https://marketplace.gohighlevel.com/docs/), [Scopes](https://marketplace.gohighlevel.com/docs/Authorization/Scopes/index.html), [Contacts API](https://marketplace.gohighlevel.com/docs/ghl/contacts/contacts/)

**문서 확인:** OAuth API 2.0 한도는 앱/리소스별 burst 100요청/10초, 일 200,000요청으로 문서화돼 있으며 응답의 한도 헤더를 사용하도록 안내한다. [Rate limits](https://marketplace.gohighlevel.com/docs/other/rate-limits/index.html)

**재구현:** 연동 어댑터마다 연결·만료·허용 scope·동기화 cursor·최근 성공·오류를 저장한다. 커넥터의 서버 비밀과 브라우저 UI 설정을 분리한다. 재시도는 지수 대기와 요청별 멱등 키를 사용한다. 공개 API가 존재한다는 사실은 비공개 기능과 서버 내부를 모두 알 수 있다는 뜻이 아니다.

**검증:** OAuth 만료/회수, 429/5xx, 누락 이벤트, 중복 웹훅, 재동기화, 부분 페이지, scope 부족, 외부 삭제, 공급자 스키마 변경. 필요한 기능만 최소 범위로 요청한다.

## 5. 공통 상태·오류 UX 설계제안

| 상황 | 표시·동작 | 남길 데이터 |
|---|---|---|
| 목록이 처음부터 비어 있음 | 기능 설명과 첫 작업 CTA | 현재 필터, 전체/필터 결과 수 |
| 필터 결과가 0건 | 필터 해제와 수정 | 검색 조건 |
| 로딩 | 기존 데이터 보존, 진행 표시 | 요청 ID, 시작 시각 |
| 저장 중 | 중복 클릭 방지, 입력 유지 | 작업 ID |
| 입력 오류 | 필드 근처 원인, 포커스 이동 | 검증 코드 |
| 일부 성공 | 성공/실패/건너뜀 수 분리 | 행/레코드별 결과 |
| 공급자 연결 없음 | 초안 저장·연결 안내 | 연결 상태 |
| 권한 없음 | 범위와 제한 작업 명확화 | 접근 거부 감사 기록 |
| 충돌 | 최신 값/내 변경 비교 후 재시도 | 버전, actor, timestamp |
| 네트워크 실패 | 입력 유지와 재시도 | 안전한 오류 코드 |
| 실제 외부 작업 미실행 | 초안·미연결·시뮬레이션 표시 | 실제 실행 여부 |

테이블 선택 수와 전체 수를 분리하고, 일괄 작업은 대상 범위를 보여준다. 파괴적 작업은 영향받는 참조 수와 복구 가능 여부를 구체적으로 알려준다. 토스트만으로 실패를 알리지 않고 작업 화면과 이력에도 남긴다.

## 6. 레벨 스튜디오 구현 순서 제안

| 단계 | 제품 범위 | 완료 판정 |
|---|---|---|
| P0 | 공통 레이아웃, Contact CRUD, 검색·필터·태그, CSV 4단계 import, 데이터 내보내기/복원 | 새 실행·새로고침·잘못된 CSV·중복 처리까지 작동 |
| P1 | 파이프라인, 로컬 예약, 인박스 초안, 청구서 초안, 운영 대시보드 | 같은 Contact를 각 모듈에서 공유하고 집계 일치 |
| P2 | 워크플로 정의/실행 로그, 폼·페이지 편집, 미디어, 리뷰 요청 초안 | 이벤트가 추적되고 외부 미연결은 명시 |
| P3 | 서버 저장·인증·사업장 분리, 공급자별 메시지/예약/결제/소셜 연결 | 권한·웹훅·재시도·실제 전달/결제 결과 검증 |
| P4 | AI 실행, 지식 검색, 고급 리포트, 강의·커뮤니티, Agency/SaaS | 계정별 권한과 운영 실패 복구까지 검증 |

이 순서는 전체 요구를 축소하는 선언이 아니라, 원본의 넓은 기능을 검증 가능한 단위로 완성하기 위한 의존 순서다. 각 단계의 화면 표시만으로 외부 연동이나 서버 기능까지 완료됐다고 평가해서는 안 된다.

## 7. 로그인 후 남은 정밀 조사 목록

사용자는 이후 HighLevel 계정이 없다고 알린 뒤 신규 계정을 준비해 로그인할 예정이라고 밝혔다. 이 문서의 조사 시점까지는 공개 문서와 로그인 전 클라이언트 관찰만 확인됐으며, 로그인 후 관찰은 후속 증거를 기다리는 상태다. 다음 목록은 합법적인 계정 접근이 마련된 뒤의 조사 계획이다. 비밀번호·OTP를 문서에 저장하지 않는다. 수정·전송·게시·결제·삭제가 필요한 시험은 샘플 데이터와 명시적 범위로 수행한다.

1. **계정 기초:** Agency/Location ID는 비공개 메모에만 보관. 플랜·지역·시간대·통화·활성 Labs·권한별 메뉴 차이 기록.
2. **메뉴 전수:** 최상위/하위 메뉴와 기본 진입 URL, 탭, 우측 서랍·모달·빈 상태·리스트 열·검색/정렬/필터를 화면별로 번호 부여.
3. **Contacts:** 생성/상세/편집/태그/담당/메모/작업/동적 목록/삭제·복구. 실제 필수값과 중복 경고.
4. **Imports:** Start 객체 선택, Upload mode 옵션, Map 자동 매칭, Verify 체크, 진행 결과, 오류 CSV, 취소·재시도. 첨부 화면과의 차이.
5. **Conversations:** 연결된 채널과 전송 승인 경계, 스레드 검색, SLA, 담당자, 첨부, 발송 결과, 수신거부.
6. **Calendars:** 종류별 생성 폼, 가용 시간, 충돌, 분배, 외부 동기화, 예약 변경/취소/노쇼.
7. **Opportunities:** 파이프라인 편집, 카드 상세, 단계·상태, 실패 사유, 일괄 작업, 이동·삭제 동작.
8. **Payments:** 상품·가격·할인·세금·견적/청구서·문서계약·주문·구독·환불 탭과 공급자별 차이. 실제 결제 없이 테스트 모드 우선.
9. **Marketing:** 이메일/소셜/광고/제휴 각 영역의 작성·미리보기·승인·예약·결과, 연결 만료·재연결.
10. **Automation:** 트리거/동작 전체 목록과 설정 스키마, 분기·대기·Goal, 버전·등록 정책·실행 로그·실패 복구.
11. **Sites:** 편집기 블록·스타일·반응형·버전, 도메인 연결, 폼/설문/퀴즈/블로그/스토어/웹세미나/QR/채팅위젯 제공 범위.
12. **Memberships:** 강의 생성, 수강권, 고객 포털, 회원 역할, 결제 연결, 그룹/채널/콘텐츠 검토.
13. **AI:** Ask AI, AI Studio, Agent Studio, Conversation/Voice/Managed Agents, Knowledge Base, 실행·비용·버전·테스트 흐름. 자동 작업은 실행 승인 범위 확인.
14. **Reputation/Reporting:** 플랫폼 연결, 리뷰 요청·응답, 위젯, 지표 계산·필터·예약 보고서·내보내기 차이.
15. **Agency/Settings:** 계정 생성/전환, SaaS/청구, Snapshot, 사용자/권한, 통합, audit, custom fields/values/objects, 도메인·브랜딩·수신거부.

각 관찰은 `screen_id`, `route`, `role`, `precondition`, `action`, `expected`, `observed`, `network_summary`, `evidence_path`, `unknowns`로 기록한다. 실제 개인 고객 자료·전체 메시지·비밀 토큰은 일반 코드 저장소에 넣지 않는다. REA에서 얻은 공개 스크립트도 서버의 원본 소스 또는 모든 기능의 실행 증거로 취급하지 않는다.

## 8. 원본 동등성 판정 기준

동등성은 기능별로 평가한다. 예를 들어 ‘CSV import 4단계 화면 구현’과 ‘원본의 모든 import 규칙 동등’은 서로 다른 항목이다.

- **시각:** 주요 영역, 간격, 메뉴·필드, 화면 크기별 동작을 스크린샷으로 비교.
- **행동:** 정상·빈값·중복·권한·오류 입력에 대한 출력/상태를 같은 시나리오로 비교.
- **데이터:** 입력→저장→검색→집계→내보내기→복원 후 값과 관계 보존.
- **외부 통합:** 공급자 수락/전달/실패·웹훅·재시도·중복 방지까지 확인.
- **운영:** 재시작·배포·새 clone·복원·비밀 주입과 실행 절차를 검증.
- **추적:** 모든 판정에 근거 경로와 확인 시점, 미확인 항목을 남김.

현재 이 문서의 판정은 **공개 근거 기반 제품 분해 및 재구현 설계 1차 완료, 로그인 내부 행동 분석은 미완료**다. 원본 전체 분석 완료나 전체 기능 동등 구현 완료를 주장하지 않는다.
