---
title: "앱 애널리틱스 | Tajo"
description: "Stripe App의 설치 수, 조회 수, 전환율, 커스텀 지표를 추적합니다"
url: https://tajo.io/kr/docs/stripe-apps/analytics/
markdown: https://tajo.io/kr/docs/stripe-apps/analytics.md
lang: ko-KR
author: "Set Noa"
author_url: https://tajo.io/kr/set-noa/
robots: noindex
---

Tajo 사전 이용 신청

이름과 회사 이메일 주소를 입력하세요. Tajo 이용 신청을 확인할 수 있는 링크를 이메일로 보내드립니다.

# 앱 애널리틱스

[Set Noa](https://tajo.io/kr/set-noa/)

Stripe는 마켓플레이스에 게시된 앱을 위한 기본 애널리틱스를 제공하므로 설치 현황, 리스팅 성과, 사용자 인게이지먼트를 확인할 수 있습니다. 웹훅과 Stripe API를 활용해 커스텀 애널리틱스를 직접 구축할 수도 있습니다.

Caution

**상태: 예정, 아직 구축되지 않음.** Tajo에는 Stripe App이 없으므로 이 섹션의 어떤 것도 현재 설치할 수 없습니다. 이 페이지에 나오는 앱 식별자, URL, 자격 증명은 실제로 동작하는 엔드포인트가 아니라 예시용 자리표시자입니다.

## 제공되는 리포트

Stripe 대시보드는 게시된 앱에 대해 다음 애널리틱스를 제공합니다.

### 설치 지표

| 지표 | 설명 |
| --- | --- |
| **Installs** | 선택한 기간의 신규 앱 설치 총 건수 |
| **Uninstalls** | 선택한 기간의 앱 삭제 총 건수 |
| **Cumulative Net Installs** | 기간 누적 설치 수에서 삭제 수를 뺀 누계 |

### 리스팅 성과

| 지표 | 설명 |
| --- | --- |
| **Listing Views** | 마켓플레이스 리스팅 페이지의 총 조회 수 |
| **Unique Views** | 마켓플레이스 리스팅을 조회한 순 방문자 수 |
| **MoM Conversion Rate** | 리스팅 조회자 중 앱을 설치한 비율의 전월 대비 수치 |

### 성장 지표

| 지표 | 설명 |
| --- | --- |
| **MoM Growth Rate** | 순 설치 수의 전월 대비 성장률 |
| **Churn Rate** | 설치 사용자 중 매월 앱을 삭제하는 비율 |

## 데이터 최신성

Caution

애널리틱스 데이터에는 **48시간의 지연**이 있습니다. 대시보드에 표시되는 데이터는 약 이틀 전의 활동을 반영합니다. 리포팅 기간을 이에 맞춰 계획하십시오.

- 데이터는 48시간의 처리 지연을 두고 매일 갱신됩니다
- 과거 데이터는 앱을 처음 게시한 날짜부터 제공됩니다
- 지표는 UTC 시간대를 기준으로 계산됩니다
- 외부 분석을 위해 Stripe 대시보드에서 데이터를 CSV로 내보낼 수 있습니다

## API로 애널리틱스 조회하기

Stripe Reporting API를 사용하면 앱 애널리틱스에 프로그래밍 방식으로 접근할 수 있습니다.

### 설치 데이터

```bash
# Fetch app install report
curl https://api.stripe.com/v1/reporting/report_runs \
  -u sk_live_xxxxx: \
  -d "report_type=app.installs.daily" \
  -d "parameters[interval_start]=1709251200" \
  -d "parameters[interval_end]=1711929600" \
  -d "parameters[app_id]=com.tajo.brevo-integration"
```

### 리스팅 조회 수

```bash
# Fetch listing views report
curl https://api.stripe.com/v1/reporting/report_runs \
  -u sk_live_xxxxx: \
  -d "report_type=app.listing_views.daily" \
  -d "parameters[interval_start]=1709251200" \
  -d "parameters[interval_end]=1711929600" \
  -d "parameters[app_id]=com.tajo.brevo-integration"
```

### 프로그래밍 방식 접근 (Node.js)

```javascript
const stripe = require('stripe')('sk_live_xxxxx');

// Create a report run for app installs
const reportRun = await stripe.reporting.reportRuns.create({
  report_type: 'app.installs.daily',
  parameters: {
    interval_start: Math.floor(new Date('2025-03-01').getTime() / 1000),
    interval_end: Math.floor(new Date('2025-03-31').getTime() / 1000),
    app_id: 'com.tajo.brevo-integration',
  },
});

// Poll for report completion
const checkReport = async (reportId) => {
  const report = await stripe.reporting.reportRuns.retrieve(reportId);

  if (report.status === 'succeeded') {
    // Download the report file
    const file = await stripe.files.retrieve(report.result.id);
    console.log('Report URL:', file.url);
    return file;
  }

  if (report.status === 'failed') {
    throw new Error('Report generation failed');
  }

  // Report still processing
  return null;
};
```

## Users 탭

앱 애널리틱스의 Users 탭에서는 계정 단위의 개별 데이터를 확인할 수 있습니다.

| 열 | 설명 |
| --- | --- |
| **Account ID** | 앱을 설치한 Stripe 계정 |
| **Install Date** | 앱이 설치된 시점 |
| **Status** | 활성 상태 또는 삭제됨 |
| **Uninstall Date** | 앱이 삭제된 시점 (해당하는 경우) |

이 데이터는 다음 용도로 활용합니다.

- 계정별 활성화 상태 추적
- 설치했지만 온보딩을 마치지 않은 계정에 후속 조치
- 앱을 삭제한 계정을 파악하고 이탈 원인 이해
- 설치 데이터를 자사 플랫폼 애널리틱스와 연계 분석

## 웹훅으로 만드는 커스텀 애널리틱스

실시간 분석과 더 깊이 있는 인사이트가 필요하다면 웹훅을 설정해 앱 이벤트를 추적하십시오.

### 웹훅 이벤트

커스텀 애널리틱스를 구축하려면 다음 이벤트를 수신합니다.

| 이벤트 | 설명 |
| --- | --- |
| `account.application.authorized` | 사용자가 앱을 설치했습니다 |
| `account.application.deauthorized` | 사용자가 앱을 삭제했습니다 |

### 웹훅 핸들러

```javascript
const express = require('express');
const stripe = require('stripe')('sk_live_xxxxx');

const app = express();

app.post('/webhooks/stripe-app', express.raw({ type: 'application/json' }), async (req, res) => {
  const sig = req.headers['stripe-signature'];
  const webhookSecret = process.env.STRIPE_APP_WEBHOOK_SECRET;

  let event;

  try {
    event = stripe.webhooks.constructEvent(req.body, sig, webhookSecret);
  } catch (err) {
    console.error('Webhook signature verification failed:', err.message);
    return res.status(400).send('Webhook signature verification failed');
  }

  switch (event.type) {
    case 'account.application.authorized': {
      const account = event.data.object;
      console.log('App installed by:', account.id);

      // Track in your analytics system
      await trackEvent('app_installed', {
        account_id: account.id,
        timestamp: new Date(event.created * 1000),
      });

      // Trigger onboarding email
      await sendOnboardingEmail(account.id);
      break;
    }

    case 'account.application.deauthorized': {
      const account = event.data.object;
      console.log('App uninstalled by:', account.id);

      // Track churn
      await trackEvent('app_uninstalled', {
        account_id: account.id,
        timestamp: new Date(event.created * 1000),
      });

      // Clean up account data
      await cleanupAccountData(account.id);
      break;
    }

    default:
      console.log('Unhandled event type:', event.type);
  }

  res.json({ received: true });
});
```

### Connect List API

Connect 플랫폼에서는 Connect List API로 앱이 설치된 계정 정보를 가져올 수 있습니다.

```javascript
const stripe = require('stripe')('sk_live_xxxxx');

// List all connected accounts with your app installed
const getInstalledAccounts = async () => {
  const accounts = [];
  let hasMore = true;
  let startingAfter = null;

  while (hasMore) {
    const params = { limit: 100 };
    if (startingAfter) {
      params.starting_after = startingAfter;
    }

    const response = await stripe.accounts.list(params);

    for (const account of response.data) {
      // Check if your app is installed on this account
      if (account.settings?.apps?.includes('com.tajo.brevo-integration')) {
        accounts.push({
          id: account.id,
          email: account.email,
          created: account.created,
        });
      }
    }

    hasMore = response.has_more;
    if (response.data.length > 0) {
      startingAfter = response.data[response.data.length - 1].id;
    }
  }

  return accounts;
};
```

## 커스텀 애널리틱스 대시보드 만들기

Stripe 애널리틱스와 자체 데이터를 결합하면 전체 흐름을 한눈에 볼 수 있습니다.

```javascript
// Aggregate analytics for reporting
const getAppAnalytics = async (startDate, endDate) => {
  const [stripeInstalls, brevoSyncStats, activationData] = await Promise.all([
    // Stripe install data
    getStripeInstallReport(startDate, endDate),
    // Brevo sync metrics from Tajo
    getBrevoSyncMetrics(startDate, endDate),
    // Activation funnel from your database
    getActivationFunnel(startDate, endDate),
  ]);

  return {
    // Acquisition
    totalInstalls: stripeInstalls.installs,
    totalUninstalls: stripeInstalls.uninstalls,
    netInstalls: stripeInstalls.installs - stripeInstalls.uninstalls,
    listingConversionRate: stripeInstalls.conversionRate,

    // Activation
    onboardingCompleted: activationData.completedOnboarding,
    brevoConnected: activationData.connectedBrevo,
    firstSyncCompleted: activationData.firstSyncCompleted,
    activationRate: activationData.completedOnboarding / stripeInstalls.installs,

    // Engagement
    totalCustomersSynced: brevoSyncStats.totalCustomers,
    totalEventsSynced: brevoSyncStats.totalEvents,
    averageSyncFrequency: brevoSyncStats.avgSyncPerDay,

    // Retention
    churnRate: stripeInstalls.uninstalls / stripeInstalls.totalActive,
    monthlyGrowthRate: stripeInstalls.momGrowth,
  };
};
```

## 반드시 추적해야 할 핵심 지표

Tajo Brevo 연동에서는 다음 지표에 집중하십시오.

| 지표 | 목표 | 중요한 이유 |
| --- | --- | --- |
| **설치 대비 활성화율** | \> 70% | 설치자 중 Brevo 설정을 끝까지 마친 비율 |
| **첫 동기화까지 걸린 시간** | < 5분 | 설치 후 사용자가 가치를 체감하기까지의 속도 |
| **30일 리텐션** | \> 80% | 30일이 지난 뒤에도 활성 상태인 사용자 비율 |
| **월간 이탈률** | < 5% | 가치 있는 연동으로 앱 삭제를 낮게 유지 |
| **리스팅 전환율** | \> 15% | 리스팅 조회자 중 설치로 이어진 비율 |
| **계정당 동기화된 고객 수** | \> 100 | 연동을 얼마나 깊이 활용하는지를 보여 줌 |

Tip

지표가 크게 변할 때 자동으로 알림을 받도록 설정하십시오. 앱 삭제가 급증하거나 활성화율이 떨어지는 것은 즉시 대응이 필요한 버그나 UX 문제의 신호일 수 있습니다.
