> For the complete documentation index, see [llms.txt](https://wiki.crosswatch.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.crosswatch.app/crosswatch/navigation/main-dashboard-widgets.md).

# Main dashboard widgets

CrossWatch `v0.9.24` adds configurable media widgets to the **Main** page.

These widgets give you a visual view of watchlist, history, ratings, and scrobble activity.

CrossWatch combines data from all configured providers.

{% hint style="warning" %}
All dashboard widgets require a configured TMDb metadata key.

Without it, CrossWatch hides these widgets on the **Main** page.

Set it up in [TMDb Metadata](/crosswatch/providers/metadata-id-mapping/tmdb-metadata.md).
{% endhint %}

<figure><img src="/files/a4udXTmrLzizpDvscbMN" alt=""><figcaption></figcaption></figure>

### Available widgets

#### Watchlist widget

The Watchlist widget shows the newest active watchlist items.

It can show:

* poster art
* title and release year
* total watchlist count
* provider icons
* a synced indicator when an item exists on both sides of a sync pair
* a button that opens the full **Watchlist** page

The dashboard shows up to `20` posters.

Selecting a poster opens more media details.

Items are sorted by added date, newest first.

The widget uses the current CrossWatch watchlist state.

It includes active items even when they exist on only one provider.

A configured TMDb metadata key is required.

Without it, CrossWatch hides the Watchlist widget.

#### Recent History widget

The Recent History widget shows the latest watched movies, shows, seasons, and episodes.

It can show:

* poster or episode art
* title and media type
* release year, when available
* season and episode numbers
* relative watched time
* provider and instance icons
* total unique history count

CrossWatch reads history from provider sync state and local tracker state.

Matching entries from multiple providers are merged.

This avoids duplicate rows from provider fan-out.

The first `6` entries are shown.

Use **Expand** to load `6` more at a time, up to `24`.

#### Latest Ratings widget

The Latest Ratings widget shows the most recently rated media.

It can show:

* poster art
* rating score from `1` to `10`
* relative rating time
* season and episode details, when relevant
* provider and instance icons
* total unique rating count

CrossWatch reads ratings from provider sync state and local tracker state.

Matching ratings from different providers are merged into one entry.

The first `9` ratings are shown.

Use **Expand** to load `9` more at a time, up to `24`.

#### Recent Scrobble widget

The Recent Scrobble widget shows successful media activity recorded by the CrossWatch scrobbler and activity system.

It can include activity from:

* webhook routes
* watcher routes
* history sync activity
* manual watched actions

Each entry can show:

* poster or episode art
* title
* season and episode numbers
* activity method
* relative activity time
* source and target provider icons

The widget reads successful entries from the CrossWatch activity log.

It does not start a new provider synchronization.

The first `6` entries are shown.

Use **Expand** to load `6` more at a time, up to `24`.

### Recent Scrobble widget vs Recent Activity

The **Main** page has two separate scrobble views.

The **Recent Scrobble** widget is the visual media widget.

It shows artwork, media details, relative times, and provider route icons.

The **Recent Activity** list is the existing text-based list in the statistics area.

Its visibility and row count are configured separately.

Hiding one does not hide the other.

See [Recent Activity](/crosswatch/scrobble/recent-activity.md).

### Configure dashboard widgets

Open **Settings → UI settings → User interface → Dashboard widgets**.

You can show or hide each widget independently:

* Watchlist widget
* Recent History widget
* Latest Ratings widget
* Recent Scrobble widget

Changes apply after you click **Save**.

CrossWatch does not need a restart.

All four widgets are shown by default unless you disable them.

See [User interface](/crosswatch/navigation/ui-settings/user-interface.md).

### Configuration file reference

You can manage the same settings in `config.json`:

```json
{
  "ui": {
    "show_watchlist_preview": true,
    "show_recent_history_widget": true,
    "show_latest_ratings_widget": true,
    "show_recent_scrobble_widget": true
  }
}
```

Use `true` to show a widget.

Use `false` to hide it.

Use the UI when possible.

It validates and saves these values correctly.

See [Configuration (config.json)](/crosswatch/configuration-config-json.md).

### Refresh behavior

Dashboard widgets reload when:

* the **Main** page opens
* you select a widget refresh button
* a synchronization completes
* a manual watched action is saved
* the watchlist is refreshed
* settings are changed
* the activity log is cleared

Refreshing a widget reloads data CrossWatch already knows.

It does not run a full synchronization.

### Data requirements

All dashboard widgets require a configured TMDb metadata key.

Without it, CrossWatch hides these widgets on the **Main** page.

Widgets only display information CrossWatch has already collected.

For **Watchlist**, **Recent History**, and **Latest Ratings**, enable the relevant features in at least one sync pair and run a synchronization.

For **Recent Scrobble**, configure a webhook or watcher route and let CrossWatch record activity.

A configured TMDb metadata key is required for every dashboard widget.

When artwork cannot be resolved, CrossWatch uses a placeholder image.

### Empty widgets

A widget can be visible but empty when CrossWatch has not collected the corresponding data yet.

Common messages include:

* `No items to show yet.`
* `No watched history recorded yet.`
* `No ratings recorded yet.`
* `No recent scrobble recorded yet.`

Run the relevant synchronization or generate a scrobble event to populate the widget.

### Troubleshooting

#### A widget is not visible

Check **Settings → UI settings → User interface → Dashboard widgets**.

Save the settings, then return to **Main**.

Confirm that a TMDb metadata key is configured.

If needed, follow [TMDb Metadata](/crosswatch/providers/metadata-id-mapping/tmdb-metadata.md).

#### The Watchlist widget is missing

Confirm that a TMDb metadata key is configured.

If needed, follow [TMDb Metadata](/crosswatch/providers/metadata-id-mapping/tmdb-metadata.md).

Confirm that a watchlist sync has completed.

Confirm that watchlist items have valid TMDb mappings.

#### Recent History or Latest Ratings is empty

Confirm that **History** or **Ratings** is enabled in at least one sync pair.

Run a synchronization so CrossWatch can build the current provider state.

#### Recent Scrobble is empty

Confirm that scrobbling is enabled.

Confirm that at least one webhook or watcher route is configured.

Only successful activity log entries are included.

#### The total is larger than the visible entry count

The count chip shows the full number of unique entries known to the widget.

The dashboard initially shows only the first `6` history or scrobble entries, or the first `9` ratings.

Use **Expand** to show more.

### Related topics

* [Navigation](/crosswatch/navigation.md)
* [User interface](/crosswatch/navigation/ui-settings/user-interface.md)
* [Recent Activity](/crosswatch/scrobble/recent-activity.md)
* [Watchlist](/crosswatch/configure-pairs/features/watchlist.md)
* [Configuration (config.json)](/crosswatch/configuration-config-json.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.crosswatch.app/crosswatch/navigation/main-dashboard-widgets.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
