# 핵심 개념

allob 을 쓰면서 계속 나오는 용어를 정리했어요. 한 번 읽어 두면 나머지 페이지와 에이전트의 설명을 따라가기 쉬워요.

## 계정과 제품

**계정**은 사업 하나예요. 이메일과 메일로 받는 코드로 로그인하고, 계정을 만든 사람이 소유자가 돼요.

계정이 여러 개면 화면 왼쪽 메뉴 아래에서 지금 볼 계정을 골라요. 계정 이름·주소 이름 바꾸기는 메뉴의 **계정 설정**에서 해요.

계정 삭제는 소유자만 할 수 있어요. 웹 화면의 **계정 설정 › 계정 삭제**나 allob 폰 앱의 **전체 › 계정 삭제**에서 주소 이름을 입력하고 삭제해요. 폰 앱에서는 Face ID·지문이나 폰 잠금으로 한 번 더 확인하고, 폰 잠금도 없는 폰은 메일로 받은 확인 코드를 입력해요. 제품·연결·기록·키·서류가 모두 삭제되고 되돌릴 수 없어요. 다른 계정이 없으면 로그인 기록도 함께 삭제돼요. 에이전트는 계정을 삭제할 수 없어요.

소유자가 아니어도 **탈퇴**할 수 있어요. 웹 화면의 **계정 설정 › allob 탈퇴**나 폰 앱의 **전체 › 탈퇴하기**를 누르면 속한 모든 계정에서 빠지고 로그인 기록(이메일·로그인한 기기·알림 받는 기기·물어보기 대화)이 삭제돼요. 소유한 계정이 있으면 먼저 그 계정을 삭제해야 해요. 로그인하지 않고 삭제 방법을 보려면 [계정 삭제 안내](https://allob.app/account-deletion)를 열어요.

**제품**은 계정 안의 앱이나 웹사이트 하나예요. 일기 앱과 사진 앱을 같이 운영한다면 계정 하나에 제품 두 개를 만들어요. 이벤트·릴리스·지표·연결은 모두 제품별로 따로 쌓여요.

제품마다 **플랫폼**을 하나 이상 골라요. 웹·iOS·Android·macOS 중 제품이 돌아가는 곳이에요. 같은 일기 서비스가 웹과 앱으로 있으면 제품 하나에 플랫폼 셋(웹·iOS·Android)이에요. 플랫폼에 따라 첫 이벤트 스키마가 정해져요. 받을 SDK(웹·앱·서버)는 코드 폴더를 보고 정하고, 폴더에서 알 수 있는 게 없을 때만 플랫폼을 따라요.

코드 폴더는 제품 하나와 연결해요. 폴더에서 `allob folder link <제품>` 을 실행하면 `allob.json` 파일이 생기고, 그 폴더와 하위 폴더에서 실행하는 allob 명령은 모두 그 제품을 대상으로 해요. `allob.json` 에는 비밀 값이 없어서 저장소에 커밋해도 괜찮아요.

```json
{
  "version": 2,
  "account": "my-studio",
  "product": "diary",
  "sdk": { "web": "web/src/allob", "server": "server/src/allob", "app": "app/src/allob" }
}
```

| 필드 | 뜻 |
|---|---|
| `account`·`product` | 연결한 계정과 제품 |
| `sdk` | SDK 를 받을 폴더. `web`(웹 SDK)·`server`(서버 코드)·`app`(앱 SDK)·`native`(앱 측정 모듈 — [광고·분석 도구 붙이기](/docs/app#광고분석-도구google-애널리틱스meta-붙이기), 다른 대상과 다른 폴더) 중 쓰는 것만 적어요. 경로는 `allob.json` 이 있는 폴더 기준이에요 |
| `proxy` | 선택. 이미 설치된 옛 앱 버전이 아직 내 서버의 이 경로(예: `/api/e`)로 보낼 때만 써요. `server.ts` 에 넘기는 함수가 들어가요. 웹 페이지와 새 앱 빌드는 늘 allob 으로 바로 보내요. [이미 설치된 옛 앱 버전](/docs/app#이미-설치된-옛-앱-버전) 참고 |

## 사업 가이드와 할 일

사업자 등록부터 스토어 계정·결제·출시·광고·세금까지의 절차는 [사업 가이드](/docs/journey)에 단계별로 있어요. 사업마다 해야 할 일이 달라서(앱만 파는지, 웹에서 직접 결제받는지, 광고를 하는지) 화면에서 따라가지 않고, 내 경우에 해당하는 것만 골라 해요. 가이드 페이지마다 있는 프롬프트를 코딩 에이전트에 붙여 넣으면 해당하는지부터 같이 봐요.

에이전트는 같은 할 일 목록을 CLI 로 다뤄요. `allob path view` 로 다음 할 일을, `allob step view <id>` 로 안내를 보고, `allob step done`·`allob step answer`·`allob step skip` 으로 적어요. allob 이 직접 확인할 수 있는 할 일(이벤트가 들어왔나, 폴더를 연결했나)은 allob 이 확인한 뒤에만 끝나요. 에이전트가 적은 것은 누가 어느 기기에서 적었는지 기록에 남아요(`allob path log`).

되돌리기 어려운 답(과세 유형, 개발자 계정 유형처럼)과 제품 주소는 사람이 확인해요. 누가 명령을 보내든 바로 적히지 않고 확인 요청이 돼요. 알림을 켜 뒀다면 폰으로 오고, 명령이 보여 주는 링크나 **금고**의 승인을 기다리는 요청에서도 열려요. 내용을 보고 승인하면 그때 적혀요. 기다리는 것은 `allob approval list` 로 봐요. 에이전트는 링크를 보여 준 뒤 작업을 멈추지 않고 `allob approval wait <요청 ID>`(MCP 는 `wait_approval`)로 내 답을 기다렸다가, 승인되면 바로 다음 일로 넘어가요. 20분이 지나도 답이 없으면 기다리기를 멈추고 알려 줘요 — 승인한 뒤 "계속해"라고 말하면 이어서 해요.

**내 사업** 화면에는 사업자 정보와 등록 서류(사업자등록증명·통신판매업 신고증 등)를 둬요. 등록 서류는 [키·서류](/docs/vault)에 들어가요. 이 브라우저에서 암호화해서 allob 도 열어 볼 수 없고, 에이전트가 꺼낼 때마다 확인해요. 내가 볼 때는 서류 옆 **보기**를 누르고 PIN·패스키로 확인하면 이 브라우저에서 열어 저장할 수 있어요.

## 이벤트

**이벤트**는 사용자가 한 행동 하나예요. "일기를 썼다", "결제 화면을 봤다", "결제했다"가 각각 이벤트예요. 이벤트에는 **속성**을 붙일 수 있어요. 예를 들어 결제 이벤트에 어떤 요금제였는지(월간·연간)를 함께 기록해요.

사람 수는 **기기**로 세요. 같은 사람이 휴대폰과 노트북으로 들어오면 두 명으로 세요.

몇 가지 이벤트는 따로 정의하지 않아도 항상 쓸 수 있어요. 이것을 **표준 이벤트**라고 해요. 광고를 보고 들어온 순간(`ad_land`), 가입(`signup_complete`), 결제(`purchase`) 등이 있어요. 전체 목록은 [스키마 레퍼런스](/docs/schema#표준-이벤트)에 있어요.

## 스키마와 SDK

**스키마**는 제품이 보내는 이벤트와 속성, 퍼널을 적은 JSON 파일(`allob.schema.json`, `allob.json` 옆)이에요. 스키마를 올릴 때마다 버전이 하나씩 올라가요.

**SDK** 는 스키마로 만든 측정 코드예요. `allob sdk pull` 을 실행하면 스키마에 적은 이벤트마다 함수가 생겨요. 스키마에 없는 이벤트나 정해지지 않은 값을 보내려고 하면 코드를 실행하기 전에 에러로 알려 줘요.

```mermaid
flowchart LR
  A[allob.schema.json 고치기] --> B[allob schema push] --> C[allob sdk pull] --> D[코드에서 이벤트 보내기]
```

SDK 는 세 종류예요.

| SDK | 어디에 쓰나 | `allob.json` `sdk` | 가이드 |
|---|---|---|---|
| 웹 SDK | 웹사이트, 웹앱 | `web` | [웹사이트에 측정 넣기](/docs/web) |
| 앱 SDK | React Native·Expo 앱, 웹뷰 앱 | `app` | [앱에 측정 넣기](/docs/app) |
| 서버 SDK | 결제 알림을 받는 서버 | `server` | [결제 기록하기](/docs/payments) |

## 퍼널과 리텐션

**퍼널**은 사용자가 순서대로 거치는 흐름이에요. "일기 쓰기 → 결제 화면 → 결제 시작 → 결제"처럼요. 각 단계에 몇 명이 도착했는지 보면 어디서 가장 많이 떠나는지 알 수 있어요.

**리텐션**은 처음 방문한 사람이 며칠 뒤에 다시 방문했는지의 비율이에요. allob 은 1일·7일·14일·30일 뒤 다시 방문한 비율을 보여 줘요.

## 릴리스와 마케팅 변경

숫자가 바뀌었을 때 원인을 찾으려면 무엇을 언제 바꿨는지 알아야 해요. allob 은 두 가지를 기록해요.

| 기록 | 언제 | 예시 |
|---|---|---|
| **릴리스** | 사용자가 보는 배포를 했을 때 | 새 결제 화면, 버그 수정 |
| **마케팅 변경** | 광고·게시물·할인·스토어 정보를 바꿨을 때 | 광고 예산 2배, 인스타그램 릴스 게시 |

두 기록은 지표 그래프 위에 점으로 표시돼요. 점을 누르면 그 전후 같은 기간의 숫자를 비교해 줘요. 자세한 내용은 [릴리스와 마케팅 변경](/docs/releases)에 있어요.

## 연결

**연결**은 App Store Connect, Google Play, RevenueCat, Google Analytics 같은 외부 서비스 계정을 allob 에 연결해 두는 거예요. 앱 스토어나 결제 서비스 키를 allob 에 한 번 넣어 두면 제품마다 어떤 앱을 쓸지 고를 수 있어요. 키는 넣을 때 실제로 동작하는지 확인하고 암호화해서 저장해요. 자세한 내용은 [외부 서비스 연결하기](/docs/connections)에 있어요.
