---
title: "Analitik aplikasi | Tajo"
description: "Lacak instalasi, tampilan, tingkat konversi, dan metrik kustom untuk Stripe App Anda"
url: https://tajo.io/in/docs/stripe-apps/analytics/
markdown: https://tajo.io/in/docs/stripe-apps/analytics.md
lang: id-ID
author: "Set Noa"
author_url: https://tajo.io/in/set-noa/
robots: noindex
---

Ajukan akses awal

Masukkan nama depan dan alamat email kerja Anda. Kami akan mengirim tautan untuk mengonfirmasi permintaan akses Tajo.

# Analitik aplikasi

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

Stripe menyediakan analitik bawaan untuk aplikasi marketplace yang telah dipublikasikan, sehingga Anda dapat melihat instalasi, performa listing, dan keterlibatan pengguna. Anda juga dapat membangun analitik kustom menggunakan webhook dan API Stripe.

Caution

**Status: direncanakan, belum dibangun.** Tajo tidak memiliki Stripe App, jadi saat ini tidak ada apa pun di bagian ini yang dapat dipasang. Identifier aplikasi, URL, serta kredensial pada halaman ini adalah placeholder ilustratif, bukan endpoint aktif.

## Laporan yang tersedia

Stripe Dashboard menyediakan analitik berikut untuk aplikasi Anda yang telah dipublikasikan:

### Metrik instalasi

| Metrik | Deskripsi |
| --- | --- |
| **Instalasi** | Jumlah total instalasi aplikasi baru dalam periode yang dipilih |
| **Pencopotan** | Jumlah total pencopotan aplikasi dalam periode yang dipilih |
| **Instalasi bersih kumulatif** | Total berjalan dari instalasi dikurangi pencopotan dari waktu ke waktu |

### Performa listing

| Metrik | Deskripsi |
| --- | --- |
| **Tampilan listing** | Total tampilan halaman listing marketplace aplikasi Anda |
| **Tampilan unik** | Pengunjung unik yang melihat listing marketplace Anda |
| **Tingkat konversi MoM** | Persentase bulan ke bulan dari pengunjung listing yang memasang aplikasi |

### Metrik pertumbuhan

| Metrik | Deskripsi |
| --- | --- |
| **Laju pertumbuhan MoM** | Pertumbuhan bulan ke bulan pada instalasi bersih |
| **Tingkat churn** | Persentase pengguna terpasang yang mencopot aplikasi per bulan |

## Kesegaran data

Caution

Data analitik memiliki **jeda 48 jam**. Data yang Anda lihat di dashboard mencerminkan aktivitas kira-kira dua hari lalu. Rencanakan jendela pelaporan Anda dengan mempertimbangkan hal ini.

- Data diperbarui setiap hari dengan penundaan pemrosesan 48 jam
- Data historis tersedia sejak tanggal aplikasi Anda pertama kali dipublikasikan
- Metrik dihitung dalam zona waktu UTC
- Ekspor data sebagai CSV dari Stripe Dashboard untuk analisis eksternal

## Mengakses analitik melalui API

Anda dapat mengakses analitik aplikasi secara terprogram menggunakan Stripe Reporting API:

### Data instalasi

```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"
```

### Tampilan listing

```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"
```

### Akses terprogram (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;
};
```

## Tab Users

Tab Users di analitik aplikasi Anda menampilkan data pada level akun individual:

| Kolom | Deskripsi |
| --- | --- |
| **Account ID** | Akun Stripe yang memasang aplikasi Anda |
| **Tanggal instalasi** | Kapan aplikasi dipasang |
| **Status** | Aktif atau dicopot |
| **Tanggal pencopotan** | Kapan aplikasi dicopot (jika ada) |

Gunakan data ini untuk:

- Melacak status aktivasi tiap akun
- Menindaklanjuti akun yang sudah memasang tetapi belum menyelesaikan onboarding
- Mengidentifikasi akun yang mencopot aplikasi dan memahami penyebab churn
- Mengorelasikan data instalasi dengan analitik platform Anda sendiri

## Analitik kustom dengan webhook

Untuk analitik real-time dan wawasan yang lebih dalam, siapkan webhook guna melacak event aplikasi:

### Event webhook

Dengarkan event berikut untuk membangun analitik kustom:

| Event | Deskripsi |
| --- | --- |
| `account.application.authorized` | Pengguna memasang aplikasi Anda |
| `account.application.deauthorized` | Pengguna mencopot aplikasi Anda |

### Handler webhook

```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

Untuk platform Connect, gunakan Connect List API guna memperoleh informasi tentang akun yang telah memasang aplikasi Anda:

```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;
};
```

## Membangun dashboard analitik kustom

Padukan analitik Stripe dengan data Anda sendiri untuk mendapatkan gambaran menyeluruh:

```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,
  };
};
```

## Metrik utama yang perlu dilacak

Untuk integrasi Tajo Brevo, fokuslah pada metrik berikut:

| Metrik | Target | Mengapa penting |
| --- | --- | --- |
| **Tingkat instalasi ke aktivasi** | \> 70% | Persentase pemasang yang menuntaskan penyiapan Brevo |
| **Waktu hingga sinkronisasi pertama** | < 5 menit | Seberapa cepat pengguna merasakan manfaat setelah memasang |
| **Retensi 30 hari** | \> 80% | Persentase pengguna yang masih aktif setelah 30 hari |
| **Tingkat churn bulanan** | < 5% | Jaga angka pencopotan tetap rendah dengan integrasi yang bernilai |
| **Tingkat konversi listing** | \> 15% | Persentase pengunjung listing yang memasang aplikasi |
| **Pelanggan tersinkronisasi per akun** | \> 100 | Menunjukkan kedalaman pemakaian integrasi |

Tip

Siapkan peringatan otomatis untuk perubahan metrik yang signifikan. Lonjakan pencopotan atau penurunan tingkat aktivasi yang mendadak bisa menandakan bug atau masalah UX yang perlu segera ditangani.
