App Analytics
Stripe liefert integrierte Analytics für veröffentlichte Marketplace-Apps und gibt dir damit Einblick in Installationen, Listing-Performance und Nutzungsverhalten. Du kannst außerdem eigene Analytics mit Webhooks und der Stripe API aufbauen.
Verfügbare Berichte
Das Stripe Dashboard stellt diese Analytics für deine veröffentlichte App bereit:
Installationsmetriken
| Metrik | Beschreibung |
|---|---|
| Installationen | Gesamtzahl neuer App-Installationen im gewählten Zeitraum |
| Deinstallationen | Gesamtzahl der App-Deinstallationen im gewählten Zeitraum |
| Kumulierte Netto-Installationen | Laufende Summe aus Installationen minus Deinstallationen über die Zeit |
Listing-Performance
| Metrik | Beschreibung |
|---|---|
| Listing-Aufrufe | Gesamte Seitenaufrufe deines Marketplace-Listings |
| Eindeutige Aufrufe | Eindeutige Besucher:innen, die dein Marketplace-Listing angesehen haben |
| MoM Conversion Rate | Anteil der Listing-Besucher:innen im Monatsvergleich, die die App installieren |
Wachstumsmetriken
| Metrik | Beschreibung |
|---|---|
| MoM Wachstumsrate | Wachstum der Netto-Installationen im Monatsvergleich |
| Abwanderungsrate | Anteil der installierten Nutzer:innen, die pro Monat deinstallieren |
Datenaktualität
Caution
Analytics-Daten haben eine Verzögerung von 48 Stunden. Die Daten, die du im Dashboard siehst, bilden Aktivitäten von vor etwa zwei Tagen ab. Plane deine Berichtszeiträume entsprechend.
- Daten werden täglich mit 48 Stunden Verarbeitungsverzögerung aktualisiert
- Historische Daten stehen ab dem Datum der Erstveröffentlichung deiner App zur Verfügung
- Metriken werden in der Zeitzone UTC berechnet
- Exportiere Daten als CSV aus dem Stripe Dashboard für Auswertungen außerhalb von Stripe
Zugriff auf Analytics über die API
Du kannst App-Analytics programmatisch über die Stripe Reporting API abrufen:
Installationsdaten
# Fetch app install reportcurl 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"Listing-Aufrufe
# Fetch listing views reportcurl 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"Programmatischer Zugriff (Node.js)
const stripe = require('stripe')('sk_live_xxxxx');
// Create a report run for app installsconst 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 completionconst 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“
Der Tab Users in den Analytics deiner App zeigt Daten auf Kontoebene:
| Spalte | Beschreibung |
|---|---|
| Account ID | Das Stripe-Konto, das deine App installiert hat |
| Install Date | Zeitpunkt der Installation |
| Status | Aktiv oder deinstalliert |
| Uninstall Date | Zeitpunkt der Deinstallation, sofern zutreffend |
Nutze diese Daten, um:
- Den Aktivierungsstatus einzelner Konten zu verfolgen
- Konten nachzufassen, die installiert, aber das Onboarding nicht abgeschlossen haben
- Konten mit Deinstallation zu erkennen und die Gründe für Abwanderung zu verstehen
- Installationsdaten mit den Analytics deiner eigenen Plattform zu verknüpfen
Eigene Analytics mit Webhooks
Für Echtzeit-Analytics und tiefere Einblicke richtest du Webhooks ein, die App-Events verfolgen:
Webhook-Events
Höre auf diese Events, um eigene Analytics aufzubauen:
| Event | Beschreibung |
|---|---|
account.application.authorized | Nutzer:in hat deine App installiert |
account.application.deauthorized | Nutzer:in hat deine App deinstalliert |
Webhook-Handler
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
Für Connect-Plattformen liefert die Connect List API Informationen zu Konten, auf denen deine App installiert ist:
const stripe = require('stripe')('sk_live_xxxxx');
// List all connected accounts with your app installedconst 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;};Ein eigenes Analytics-Dashboard bauen
Kombiniere die Stripe-Analytics mit deinen eigenen Daten zu einem Gesamtbild:
// Aggregate analytics for reportingconst 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, };};Wichtige Metriken
Für die Tajo Brevo-Integration konzentrierst du dich am besten auf diese Metriken:
| Metrik | Ziel | Warum sie zählt |
|---|---|---|
| Rate von Installation zu Aktivierung | > 70% | Anteil der Installierenden, die das Brevo-Setup abschließen |
| Zeit bis zur ersten Synchronisierung | < 5 Minuten | Wie schnell Nutzer:innen nach der Installation einen Nutzen sehen |
| 30-Tage-Retention | > 80% | Anteil der Nutzer:innen, die nach 30 Tagen noch aktiv sind |
| Monatliche Abwanderungsrate | < 5% | Halte Deinstallationen mit einer wertvollen Integration niedrig |
| Listing Conversion Rate | > 15% | Anteil der Listing-Besucher:innen, die installieren |
| Synchronisierte Kund:innen pro Konto | > 100 | Zeigt, wie tief die Integration genutzt wird |
Tip
Richte automatische Benachrichtigungen für auffällige Metrikänderungen ein. Ein plötzlicher Anstieg der Deinstallationen oder ein Einbruch der Aktivierungsrate kann auf einen Fehler oder ein UX-Problem hinweisen, das sofort Aufmerksamkeit braucht.