Amplitude 사용법
사용 목적 : 퍼널추적을 하기 위해서 Amplitude 사용한다.
- 무료 플랜은 매달 최대 천만개의 이벤트를 처리
- 고급 기능이 필요하면 유료 플랜으로 전환
React with Amplitude (JS Web SDK)
Goal
- API 키 발급합니다.
- Impression Event 남깁니다.
- Click Event 남깁니다.
- 퍼널 대시보드를 만들어봅니다.
install
yarn add @amplitude/analytics-browser
---?
yarn add amplitude-js 
yarn add @types/amplitude-js -D  
GET API Key
 
   
API 키는 설정 > Projects > API Key에 있습니다.
- Project Level 로 관리
Logger
import * as amplitude from '@amplitude/analytics-browser';
const AMPLITUDE_API_KEY = 'API_KEY';
class AmplitudeLogger {
  init() {
    amplitude.init(AMPLITUDE_API_KEY);
  }
  // user id기반 로깅, 중복로그 제거에 사용  
  setLoginUser(userId: number) {
    const padded = userId.toString().padStart(6, '0');
    console.log(`Set Login User: ${padded}`);
    amplitude.setUserId(padded);
  }
  unsetLoginUser() {
    amplitude.reset();
  }
  // 페이지 뷰 로깅  
  logPageView(page: string, options:any) {
    console.log(`PageView:${page}`);
    amplitude.track(`PageView:${page}`, options);
  }
  // 클릭 로깅  
  logClick(name: string, options:any) {
    console.log(`Click:${name}`);
    amplitude.track(`Click:${name}`, options);
  }
}
export const amplitudeLogger = new AmplitudeLogger();
Logger Usage
---
// root 컴포넌트에서 초기화 할 것  
  useEffect(() => {
    amplitudeLogger.init();
  }, []);
---
// page level의 logger HOC  
export const AmplitudePage = ({ pageName, children }: Props) => {
  useEffect(() => {
    amplitudeLogger.logPageView(pageName);
  }, [pageName]);
  return <>{children}</>;
};
---
// login page level의 logger HOC  
  useEffect(() => {
    if (user?.id) {
      amplitudeLogger.setLoginUser(user.id);
    } else {
      amplitudeLogger.unsetLoginUser();
    }
  }, [user?.id]);
---
퍼널 만들기

Data > Events  
- 이벤트가 잘 쌓이는지 확인한다.
- 이벤트 이름을 확인한다.

퍼널 만들기 : Create > Funnel  
- 이벤트 이름을 입력해서 첫번째 퍼널을 등록한다.
- 이어서 다음 퍼널을 등록한다.

- 유저 기반으로 중복제거가 되므로, Totals 로 측정한다. (테스트 환경)
Amplitude Event + URL Shorter Server
문제 : 특정 URL를 클릭했을때 Amplitude Event 남기면서 리다이렉트도 되어야 함.
시나리오 : 사용자가 특정 URL을 클릭하면 amplitude에 남고 다른 페이지로 진입한다.