App Overview Analytics#
The App Overview page in Dify displays time-series charts and summary metrics for a single app. It is gated by the APP_MONITOR RBAC permission and adapts its chart set to the app's mode (chat, completion, or workflow).
Frontend Entry Points#
| File | Role |
|---|---|
page.tsx | Route entry and Suspense/loading shell |
view.tsx | Fetches app/user details and renders chart view. The monitor-permission redirect is not enforced here; the app-detail layout (layout-main.tsx) gates access before child pages render, reading the app detail from the TanStack Query cache (consoleQuery.apps.byAppId.get) |
chart-view.tsx | Date-range picker, metric selection, mode-specific chart layout |
app-chart.tsx | Shared chart UI/query wrapper and individual metric definitions |
app-chart-utils.ts | Chart type enum, summary calculations, cost/token tooltip logic |
All five files live under web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/ or web/app/components/app/overview/.
Date-Range Controls#
The date picker behavior differs by deployment: cloud initializes to "today" and offers today / last 7 days / last 30 days presets, while community and enterprise editions expose the full long-range picker . All queries accept an optional start/end pair formatted as YYYY-MM-DD HH:MM; if omitted, the backend resolves the range from the current account's timezone .
Metrics by App Mode#
Chat Apps#
- Messages – daily message count
- Active end users – daily active end-user count
- Average session interactions
- Tokens per second
- User satisfaction rate
- Token usage / cost
Completion Apps#
Same set as chat, but average response time replaces average session interactions, and the messages chart is omitted .
Workflow Apps#
- Workflow runs (labeled "daily conversations" in the route but reports
runs) - Daily terminals (active users)
- Token usage / cost
- Average user interactions
Cost charts plot token_count on the Y-axis; an approximate dollar amount from total_price is shown in the tooltip when the API provides it .
Backend API Endpoints#
All standard-app statistics are served as individual GET time-series endpoints under /apps/<uuid:app_id>/statistics/…, implemented in api/controllers/console/app/statistic.py.
| Endpoint | Metric |
|---|---|
GET /apps/{app_id}/statistics/daily-messages | Daily message counts |
GET /apps/{app_id}/statistics/daily-conversations | Daily conversation counts |
GET /apps/{app_id}/statistics/daily-end-users | Daily active-user counts |
GET /apps/{app_id}/statistics/token-costs | Daily token count, price, currency |
GET /apps/{app_id}/statistics/average-session-interactions | Avg. session interactions |
GET /apps/{app_id}/statistics/user-satisfaction-rate | User satisfaction rate |
GET /apps/{app_id}/statistics/average-response-time | Avg. response latency |
GET /apps/{app_id}/statistics/tokens-per-second | Tokens per second |
Workflow apps use a separate controller, api/controllers/console/app/workflow_statistic.py, under the /apps/{app_id}/workflow/statistics/… prefix:
| Endpoint | Metric |
|---|---|
GET /apps/{app_id}/workflow/statistics/daily-conversations | Daily workflow runs |
GET /apps/{app_id}/workflow/statistics/daily-terminals | Daily terminal counts |
GET /apps/{app_id}/workflow/statistics/token-costs | Daily workflow token counts |
GET /apps/{app_id}/workflow/statistics/average-app-interactions | Avg. app interactions |
All endpoints require the APP_MONITOR permission .