·5 min read

Creator Analytics & API: Understand How Your Apps Perform

New analytics dashboard with engagement metrics, app health monitoring, and trending rank — plus a full API for AI-powered workflows.

featureanalyticsapicreators

What's New

We've upgraded the creator dashboard with three new sections and launched a public API so you can access your app data programmatically.

Enhanced Dashboard

When you open Dashboard > Analytics for any of your apps, you'll now see:

Trending Rank — See your app's trending score and where it ranks among all published apps. The trending algorithm considers recent views, runs, and engagement to surface the best apps.

Engagement Metrics — Beyond views and runs, you can now see:

  • Sessions: How many times users opened your app
  • Average Duration: How long users spend in your app
  • Returning Users: Users who came back for more

App Health — We automatically detect runtime errors in your app (JavaScript errors, network failures, etc.) and show you a health summary:

  • Green = no issues in the last 24 hours
  • Yellow = a few issues detected
  • Red = many issues detected

You can expand the health section to see the top errors by occurrence, including what phase they happened in (runtime, build, etc.) and when they were last seen. No scary stack traces — just clear, actionable info.

Analytics API

You can now access all your analytics data via API using the same Personal Access Token you use for publishing. This is especially useful if you're building with AI coding agents — paste the API reference below into your agent's context and it can help you monitor your apps.

Get your API key: Go to Dashboard > Creator Tools and create a publish key if you don't have one.


Quick Start

# Set your token
export GAPP_TOKEN="gapp_your_token_here"

# Get overview of all your apps
curl -H "Authorization: Bearer $GAPP_TOKEN" \
  https://gapp.so/api/user/apps/stats

# Get detailed analytics for a specific app
curl -H "Authorization: Bearer $GAPP_TOKEN" \
  https://gapp.so/api/apps/my-app-slug/analytics?period=30d

# Check app errors
curl -H "Authorization: Bearer $GAPP_TOKEN" \
  https://gapp.so/api/apps/my-app-slug/errors?time_range=7d

What Each Metric Means

MetricWhat It Tells You
ViewsSomeone visited your app's landing page
RunsSomeone actually opened and used your app
Run Rate% of viewers who run the app (higher = better landing page)
SessionsIndividual usage sessions in your app
Avg DurationHow long users spend per session
Returning UsersUsers who came back and used your app again
Trending ScoreAlgorithmic score based on recent activity
Health StatusWhether your app is throwing errors

API Reference (for AI Agents)

The following section is designed to be pasted into AI agent context (Claude, Cursor, etc.) for programmatic access to your gapp.so app analytics.

Authentication

All endpoints accept a Personal Access Token via Bearer auth:

Authorization: Bearer gapp_xxxxxxxx...

Tokens are created at /dashboard/settings/creator-tools. The same token works for both publishing and analytics.

GET /api/user/apps/stats

Overview of all your apps.

Response:

{
  "success": true,
  "summary": {
    "total_apps": 5,
    "total_views": 12450,
    "total_runs": 3200,
    "views_today": 45,
    "runs_today": 12,
    "views_week": 890,
    "runs_week": 234,
    "views_month": 3400,
    "runs_month": 890
  },
  "apps": [
    {
      "id": "uuid",
      "slug": "my-app",
      "title": "My Cool App",
      "status": "active",
      "version": 3,
      "views": 5000,
      "runs": 1200,
      "views_today": 20,
      "runs_today": 5,
      "trending_score": 42,
      "trending_rank": 12,
      "health_status": "healthy",
      "errors_24h": 0,
      "created_at": "2026-01-15T00:00:00.000Z",
      "updated_at": "2026-03-18T00:00:00.000Z"
    }
  ]
}

GET /api/apps/{slug}/analytics

Detailed analytics for a single app.

Query Parameters:

ParamDefaultValues
period30d7d, 30d, 90d, all

Response:

{
  "success": true,
  "app": {
    "id": "uuid",
    "slug": "my-app",
    "title": "My Cool App",
    "version": 3,
    "status": "active",
    "createdAt": "2026-01-15T00:00:00.000Z"
  },
  "summary": {
    "total_views": 5000,
    "total_runs": 1200,
    "unique_views": 4000,
    "unique_runs": 1000,
    "avg_daily_views": 167,
    "avg_daily_runs": 40,
    "run_rate": 24
  },
  "trending": {
    "score": 42,
    "rank": 12,
    "total_ranked": 456
  },
  "engagement": {
    "total_sessions": 890,
    "unique_users": 650,
    "avg_duration": 165,
    "median_duration": 120,
    "returning_users": 89
  },
  "timeseries": [
    {
      "date": "2026-03-01",
      "views": 150,
      "runs": 40,
      "unique_views": 120,
      "unique_runs": 35
    }
  ],
  "referrers": [
    { "source": "Direct", "views": 2500, "percentage": 50 },
    { "source": "google.com", "views": 1000, "percentage": 20 }
  ],
  "registrations": {
    "total": 45,
    "last7d": 5,
    "last30d": 18,
    "conversion_rate": 1.13
  },
  "health": {
    "status": "healthy",
    "errors_24h": 0,
    "errors_7d": 2,
    "top_errors": [
      {
        "message": "Cannot read property 'x' of undefined",
        "error_code": "CLIENT_JS_ERROR",
        "phase": "runtime_client",
        "severity": "error",
        "occurrence_count": 2,
        "last_seen_at": "2026-03-17T10:30:00.000Z"
      }
    ]
  },
  "period": "30d"
}

GET /api/apps/{slug}/errors

Detailed error list for a single app (privacy-safe — no user IDs or stack traces).

Query Parameters:

ParamDefaultValues
phaseallruntime_client, runtime_server, build, upload, storage
severityallerror, warning, info
time_range7d24h, 7d, 30d, all
limit20max 50
offset0

Response:

{
  "success": true,
  "app": { "id": "uuid", "slug": "my-app", "title": "My Cool App" },
  "errors": [
    {
      "id": "error-uuid",
      "phase": "runtime_client",
      "severity": "error",
      "error_code": "CLIENT_JS_ERROR",
      "message": "Cannot read property 'x' of undefined",
      "occurrence_count": 8,
      "first_seen_at": "2026-03-15T08:00:00.000Z",
      "last_seen_at": "2026-03-19T14:30:00.000Z",
      "resolved_at": null
    }
  ],
  "stats": {
    "total_unresolved": 3,
    "last_24h": 1,
    "last_7d": 5,
    "by_phase": { "runtime_client": 3 },
    "by_severity": { "error": 2, "warning": 1 }
  },
  "pagination": {
    "total": 3,
    "limit": 20,
    "offset": 0,
    "has_more": false
  }
}

Error Codes

CodeHTTPMeaning
AUTH_REQUIRED401Missing or invalid token
FORBIDDEN403App belongs to another creator
NOT_FOUND404App slug not found
VALIDATION_ERROR400Invalid query parameter
INTERNAL_ERROR500Server error

Example AI Agent Workflows

"Check if any of my apps have errors":

curl -s -H "Authorization: Bearer $GAPP_TOKEN" \
  https://gapp.so/api/user/apps/stats | \
  jq '.apps[] | select(.health_status != "healthy") | {slug, health_status, errors_24h}'

"Get my top-performing app this week":

curl -s -H "Authorization: Bearer $GAPP_TOKEN" \
  https://gapp.so/api/user/apps/stats | \
  jq '.apps | sort_by(-.views_today) | .[0] | {slug, title, views_today, trending_rank}'

"Show me errors for a specific app":

curl -s -H "Authorization: Bearer $GAPP_TOKEN" \
  https://gapp.so/api/apps/my-app/errors?time_range=24h | \
  jq '.errors[] | {message, phase, occurrence_count, last_seen_at}'

Ready to share your creation?

Publish your AI-built app and get a landing page in seconds.

Submit Your App