Dashboard Widgets
The Dashboard is the first page users see when they log into the Payload Admin Panel. By default, it displays cards with the collections and globals. You can customize the dashboard by adding widgets - modular components that can display data, analytics, or any other content.
One of the coolest things about widgets is that each plugin can define its own. Some examples:
- Analytics
- Error Reporting
- Number of documents that meet a certain filter
- Jobs recently executed
Defining Widgets
Define widgets in your Payload config using the admin.dashboard.widgets property:
Widget Configuration
Property | Type | Description |
|---|---|---|
| | Unique identifier for the widget |
| | Path to the widget component (supports |
| | Optional widget-specific form fields shown in the edit drawer |
| | Minimum width the widget can be resized to (default: |
| | Maximum width the widget can be resized to (default: |
WidgetWidth Values: 'x-small' | 'small' | 'medium' | 'large' | 'x-large' | 'full'.
Creating a Widget Component
Widgets are React Server Components that receive WidgetServerProps:
For visual consistency with the Payload UI, we recommend:
- Use the
cardclass for card-style widget roots. It applies the same theme-aware surface, border, radius, and padding as Payload's built-in dashboard cards; omit it for unframed content. - Use our theme variables for backgrounds and text colors. For example, use
var(--color-bg)for backgrounds andvar(--color-text)for text colors.
Default Layout
Control the initial dashboard layout with the defaultLayout property:
The defaultLayout function receives the request object and should return an array of WidgetInstance objects.
If your widget has fields, you can type widgetData with generated widget types:
WidgetInstance Type
Property | Type | Description |
|---|---|---|
| | Slug of the widget to display |
| | Optional widget-specific data passed to |
| | Initial width of the widget (default: minWidth) |
width is constrained by each widget's minWidth and maxWidth when types are generated.
Built-in Widgets
Payload includes built-in welcome, activity, collections, and collection-query widgets. The activity widget has Recently Viewed and Pinned tabs. It loads the visible page on demand and displays a single grid row, with up to four documents per page. Its collection filter applies only to Recently Viewed. The collections widget displays collection and global cards. The collection-query widget displays documents from a selected collection.
If you don't define a defaultLayout, welcome, activity, and collections appear in that order, each at full width. The collection-query widget is available through the Add + menu.
User Customization
Users can customize their dashboard by:
- Clicking the dashboard dropdown in the breadcrumb
- Selecting "Edit Dashboard"
- Adding widgets via the "Add +" button
- Editing widget data (for widgets with
fields) via the edit button - Resizing widgets using the width dropdown on each widget (if multiple widths are allowed)
- Reordering widgets via drag-and-drop
- Deleting widgets using the delete button
- Saving changes or canceling to revert
Users can also reset their dashboard to the default layout using the "Reset Layout" option.
Was this page helpful?