---
title: Admin Dashboard
banner:
content: |
Have an Open SaaS app in production? We'll send you some swag! 👕
---
import adminDashboard from '@assets/admin/admin-dashboard.png';
import dbStudio from '@assets/stripe/db-studio.png';
import { Image } from 'astro:assets';
This is a reference on how the Admin dashboard, available at `/admin`, is set up.
## Permissions
The Admin dashboard is only accessible to users with the `isAdmin` field set to true.
```tsx title="schema.prisma" {5}
model User {
id Int @id @default(autoincrement())
email String? @unique
username String?
isAdmin Boolean @default(false)
//...
```
To give yourself administrator priveledges, make sure you add your email addresses to the `ADMIN_EMAILS` environment variable in `.env.server` file before registering/logging in with that email address:
```sh title=".env.server"
ADMIN_EMAILS=me@example.com
// or add many admins with a comma-separated list
ADMIN_EMAILS=me@example.com,you@example.com,them@example.com
```
Or if you've already logged in with an email address that you want to give admin priveledges to, you can run the following command in a separate terminal window to update the user's `isAdmin` field manually:
```sh
wasp db studio
```
---
:::tip[Star our Repo on GitHub! 🌟]
We've packed in a ton of features and love into this SaaS starter, and offer it all to you for free!
If you're finding this template and its guides useful, consider giving us [a star on GitHub](https://github.com/wasp-lang/wasp)
:::
## Admin Dashboard Pages
### Analytics Dashboard
The Admin analytics dashboard is a single place for you to view your most important metrics and perform some admin tasks. At the moment, it pulls data from:
- [Payment Processor](/guides/payment-integrations/):
- total revenue
- revenue for each day of the past week
- [Google or Plausible](/guides/analytics/):
- total number of page views (non-unique)
- percentage change in page views from the previous day
- top sources/referrers with unique visitor count (i.e. how many people came from that source to your app)
- Database:
- total number of registered users
- daily change in number of registered users
- total number of paying users
- daily change in number of paying users
These metrics are aggregated within the background job `dailyStatsJob`, which by default is run every hour. You can change the frequency of this job by modifying its `cron` field:
```ts title="main.wasp" {8,7}
job dailyStatsJob {
executor: PgBoss,
perform: {
fn: import { calculateDailyStats } from "@src/analytics/stats"
},
schedule: {
cron: "0 * * * *" // every hour. useful in production
// cron: "* * * * *" // every minute. useful for debugging
},
entities: [User, DailyStats, Logs, PageViewSource]
}
```
For more info on Wasp's recurring background jobs, check out the [Wasp Jobs docs](https://wasp.sh/docs/advanced/jobs).
For a guide on how to integrate these services so that you can view your analytics via the dashboard, check out the [Payment Integrations](/guides/payment-integrations/) and [Analytics guide](/guides/analytics/) of the docs.
:::note[Help us improve]
We're always looking to improve the Admin dashboard. If you feel something is missing or could be improved, consider [opening an issue](https://github.com/wasp-lang/open-saas/issues) or [submitting a pull request](https://github.com/wasp-lang/open-saas/pulls)
:::
### Users
The Users page is where you can view all your users and their most important details. You can also search and filter users by:
- email address
- subscription/payment status
- admin status