> 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/getting-started/support-matrix/scrobbling.md).

# Scrobbling

Real-time Watcher and webhook support, routes, and playback rules.

This section covers real-time scrobbling support.

It shows route compatibility, Watcher and webhook behavior, and the progress thresholds that affect scrobble events.

{% hint style="success" %}
Use Watcher when possible. Scrob can be either a source or a sink.
{% endhint %}

### Quick links

<table data-view="cards"><thead><tr><th>Title</th><th data-card-target data-type="content-ref">Open</th></tr></thead><tbody><tr><td>Choose between Watcher and webhooks</td><td><a href="/crosswatch/settings/scrobbler/webhook-or-watcher.md">Webhook or Watcher</a></td></tr><tr><td>Set up Watcher routes</td><td><a href="/crosswatch/settings/scrobbler/watcher.md">Watcher</a></td></tr><tr><td>Set up webhook mappings</td><td><a href="/crosswatch/settings/scrobbler/webhooks.md">Webhooks</a></td></tr><tr><td>Filter by user, server, or library</td><td><a href="/crosswatch/settings/scrobbler/filters.md">Filters</a></td></tr></tbody></table>

### Route support

| Route role                       | Supported providers                                                                                                                                           |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Watcher sources                  | Plex, Jellyfin, Emby, Kodi, Scrob, and Stremio through the experimental CrossWatch add-on                                                                     |
| Native webhook playback sources  | Plex, Jellyfin, and Emby                                                                                                                                      |
| Watcher and webhook destinations | AniList, Kitsu, MyAnimeList, BingeBase, CrossWatch local, FlickList, Floppy, MDBList, PunchPlay, Scrob, SIMKL, Trakt, WeTrakr, Plex, Jellyfin, Emby, and Kodi |

AniList, Kitsu, and MyAnimeList are **Limited** destinations. They accept watched anime movies and episodes only. MyAnimeList support is experimental. Media-server destinations need matching existing library items.

Floppy is destination-only. Stremio add-on reporting is Watcher support, not a native webhook source. Scrob → WeTrakr is supported.

Routes cannot return to the exact same provider and profile endpoint. Different profiles of one provider remain valid routes.

#### Anime scrobbling

AniList, Kitsu, and experimental MyAnimeList process qualifying stop events after the configured watched threshold. They do not receive resumable positions or continuous start and pause progress. Anime ID Mapping and custom mappings resolve titles and episode numbering. These routes do not enable Playback Progress Manager support.

### Scrobbling capabilities

#### Core behavior

| Capability                                 |                                              Watcher |                                              Webhook | Notes                                                           |
| ------------------------------------------ | ---------------------------------------------------: | ---------------------------------------------------: | --------------------------------------------------------------- |
| Independent enablement                     | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Watcher and webhook can be enabled independently                |
| Automatic start on app boot                | <i class="fa-check" style="color:green;">:check:</i> |                                                  N/A | Available for the watcher source                                |
| Route-based configuration                  | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Routes connect a media source profile to a tracker sink profile |
| Start, pause, and stop progress handling   | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Sink thresholds control pause versus completed stop             |
| Pause debounce                             | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Suppresses very short pause events                              |
| Near-completion start suppression          | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Suppresses credit or near-end start flapping                    |
| Automatic watchlist removal after watching | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Configurable for movie, show, and episode types                 |

#### Filtering and routing

| Capability                 |                                              Watcher |                                              Webhook | Notes                                          |
| -------------------------- | ---------------------------------------------------: | ---------------------------------------------------: | ---------------------------------------------- |
| Username allowlist         | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Plex account or user filtering                 |
| Server UUID allowlist      | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Empty means unrestricted unless blocked        |
| Server UUID blocklist      | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Always ignored when matched                    |
| Media library allowlist    | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Available per Plex, Jellyfin, and Emby profile |
| Kodi source-path allowlist | <i class="fa-check" style="color:green;">:check:</i> |                                                  N/A | Configured in the Kodi connection profile      |

#### Plex-specific behavior

| Capability                         |                                              Watcher |                                              Webhook | Notes                                                     |
| ---------------------------------- | ---------------------------------------------------: | ---------------------------------------------------: | --------------------------------------------------------- |
| Autoplay suppression               |   <i class="fa-xmark" style="color:red;">:xmark:</i> | <i class="fa-check" style="color:green;">:check:</i> | Webhook-only protection for short autoplay transitions    |
| Live session progress probing      |   <i class="fa-xmark" style="color:red;">:xmark:</i> | <i class="fa-check" style="color:green;">:check:</i> | Webhook-only session probing to improve progress accuracy |
| Plex rating forwarding to Trakt    | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Optional                                                  |
| Plex rating forwarding to SIMKL    | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Optional                                                  |
| Plex rating forwarding to MDBList  | <i class="fa-check" style="color:green;">:check:</i> | <i class="fa-check" style="color:green;">:check:</i> | Optional                                                  |
| Plex Pass requirement for webhooks |   <i class="fa-xmark" style="color:red;">:xmark:</i> | <i class="fa-check" style="color:green;">:check:</i> | Required by Plex to send webhook events                   |

Optional Plex rating forwarding supports Trakt, SIMKL, MDBList, CrossWatch local, Floppy, PunchPlay, FlickList, WeTrakr, AniList, and Scrob. It is available through Watcher and Plex webhook handling. Provider media and mapping restrictions apply. Kitsu is not a Plex rating-forwarding target.

#### Watcher polling

Emby, Jellyfin, Kodi, and Scrob poll every 10 seconds while playing and every 30 seconds while idle by default. Configure poll intervals from 5–60 seconds and idle intervals from 5–120 seconds. Routes sharing a source profile share one watcher. The lowest configured interval wins. Polling differs from add-on event reporting.

#### Emby-specific behavior

| Capability                             |                                            Watcher |                                              Webhook | Notes                                   |
| -------------------------------------- | -------------------------------------------------: | ---------------------------------------------------: | --------------------------------------- |
| Emby Premiere requirement for webhooks | <i class="fa-xmark" style="color:red;">:xmark:</i> | <i class="fa-check" style="color:green;">:check:</i> | Required by Emby to send webhook events |

### Scrobble progress rules

{% hint style="info" %}
The default thresholds reduce noisy updates and prevent early stops from marking items watched.
{% endhint %}

| Rule                                   |    Default | Purpose                                               |
| -------------------------------------- | ---------: | ----------------------------------------------------- |
| Progress reporting step (Watcher only) | 25 percent | Reduces unnecessary sink updates from watcher polling |
| Stop becomes pause below               | 80 percent | Prevents an early stop from marking content watched   |
| Forced completed stop at               | 95 percent | Treats near completion as watched                     |
| Allowed progress regression            |  5 percent | Tolerates small backward progress changes             |
| Pause debounce                         |  5 seconds | Ignores micro-pauses                                  |
| Near-end start suppression             | 99 percent | Suppresses credit-related start flapping              |
| Watched threshold                      | 90 percent | Default CrossWatch watched completion threshold       |

Thresholds are configurable and sink behavior varies. The 80% rule is not a universal watched threshold. Some destinations apply their own completion semantics.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://wiki.crosswatch.app/getting-started/support-matrix/scrobbling.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
