RevenueCat
OAuth로 RevenueCat을 연동해 모바일 IAP/구독 매출, MRR, 구독자 수, Trial 등을 한 곳에서 추적합니다.
Last updated: 2026-05-18
RevenueCat 연동은 OAuth 2.0 + PKCE 흐름으로 read-only 토큰만 받습니다. 토큰은 AES-256-GCM 암호화되어 저장되며, refresh token은 single-use rotating입니다.
사전 준비
- RevenueCat 계정 + 1개 이상의 프로젝트
- OAuth 권한 승인 가능 (project owner / collaborator)
- Starter / Plus / Max 플랜 (수익 알림은 유료 기능)
OAuth 연결
계정 설정 열기
/dashboard/account 또는 /dashboard/integrations의 RevenueCat 카드에서 Connect 클릭.
RevenueCat 인증
데스크탑은 팝업, 모바일은 페이지 이동으로 RevenueCat 로그인 화면이 열립니다. 로그인 후 read-only 권한에 동의하세요.
다중 프로젝트 자동 발견
계정 내 모든 프로젝트를 metadata.projects[]에 저장합니다. 통계 호출 시 모든 프로젝트를 fan-out + 합산해 표시합니다.
완료
팝업이 닫히거나 확인 페이지가 표시됩니다. 계정/연동 페이지에 연결된 프로젝트명이 표시됩니다.
RevenueCat은 계정 단위 연동입니다. 한 번 연결하면 Opseer 모든 프로젝트에서 동일하게 사용되며, RevenueCat 계정 내 모든 project를 자동 발견 + 합산해 표시합니다.
요청 권한 (Scopes)
모두 read-only — Opseer는 RevenueCat 데이터를 변경하지 않습니다.
Project Configuration (8개)
- project_configuration:projects:read, project_configuration:apps:read, project_configuration:entitlements:read, project_configuration:offerings:read, project_configuration:packages:read, project_configuration:products:read, project_configuration:experiments:read, project_configuration:virtual_currencies:read
Customer Information (3개)
- customer_information:subscriptions:read, customer_information:purchases:read, customer_information:invoices:read
Charts & Metrics (4개)
- charts_metrics:overview:read, charts_metrics:charts:read, charts_metrics:experiment_results:read, charts_metrics:benchmarks:read
표시되는 데이터
/dashboard/revenue/revenuecat에서 Overview Metrics(snapshot) + Charts API(시계열) 두 종류를 호출해 카드와 차트로 표시합니다.
Snapshot 메트릭 (Today/Yesterday — Overview API)
- MRR (Monthly Recurring Revenue)
- Active Subscriptions
- Active Trials
- New Customers
시계열 메트릭 (Period — Charts API)
per-project × 6 chart slug fan-out (mrr / revenue / actives_new / churn / conversion_to_paying / actives). multi-project은 Promise.allSettled로 합산 후 표시합니다.
- MRR Trend, Revenue, New Subscriptions, Churn, Trial Conversion, Active Users
- Subscription Movement Chart (newSubs / churnedSubs)
snapshot 메트릭은 today/yesterday realtime 호출, 시계열 메트릭은 revenue_daily_cache 90일 sliding window 적용. 단 charts API의 D-1 lag 메트릭은 오늘 datapoint 비어있으면 set 안 함. Charts & Metrics rate limit: 15/min — 3+ projects일 때 429 시 graceful skip.
Sandbox vs production
Opseer는 운영 매출에 집중합니다. RevenueCat은 sandbox / production을 API resource 레벨에서 구분 — RevenueCat 대시보드에서 보이는 데이터가 운영 데이터인지 먼저 확인하세요.
토큰 rotation 정책
- access_token: 1시간 만료
- refresh_token: 30일 절대 만료, rotation마다 reset
- refresh_token은 single-use — Opseer가 동시 refresh race를 re-read winner 패턴으로 처리
- 30일 이상 미사용 또는 명시적 revoke 시에만 재인증 필요
연동 해제
RevenueCat 카드(계정/연동 페이지)의 "Disconnect" 클릭. 암호화된 토큰이 제거되고 연동이 inactive로 표시됩니다. RevenueCat 측에서도 완전히 폐기하려면 RevenueCat OAuth 승인 목록에서 Opseer를 제거하세요.
보안
- OAuth 2.0 + PKCE (S256) — code_verifier는 Opseer 서버 외부로 나가지 않음
- Confidential client — client_secret은 server-side 전용
- AES-256-GCM 토큰 암호화 저장 (opseer_user_integration.config)
- write scope 요청 X — Opseer는 RevenueCat 데이터를 변경할 수 없음
문제 해결
"No project found"
RevenueCat 계정에 프로젝트가 없습니다. RevenueCat 대시보드에서 프로젝트를 먼저 생성하고 다시 연결하세요.
"OAuth failed" 또는 invalid_grant
Refresh token race 또는 30일 미사용. 연동 해제 후 재연결하면 새 토큰 발급됩니다.