# Webhooks

These pages document the legacy **webhook scrobblers**.

They exist for backwards compatibility.

{% tabs %}
{% tab title="End users" %}
{% hint style="warning" %}
Webhooks are deprecated. Prefer [Watcher](/crosswatch/scrobble/watcher.md).
{% endhint %}

If you still need them, use the setup guide:

* [Webhooks](/crosswatch/scrobble/webhooks.md)

### Modules (in this section)

* [Webhook: plextrakt](/blueprint-architecture/scrobble/webhooks/webhook-plextrakt.md)
* [Webhook: jellyfintrakt](/blueprint-architecture/scrobble/webhooks/webhook-jellyfintrakt.md)
* [Webhook: embytrakt](/blueprint-architecture/scrobble/webhooks/webhook-embytrakt.md)
  {% endtab %}

{% tab title="Power users" %}

### What these handlers do

They translate server payloads into tracker calls.

Common responsibilities:

* normalize payload shapes
* resolve external IDs when possible
* apply filters and dedupe
* call tracker APIs (mostly Trakt)
* optionally trigger watchlist auto-remove

### Code map

* `providers/webhooks/plextrakt.py`
* `providers/webhooks/jellyfintrakt.py`
* `providers/webhooks/embytrakt.py`

### Gotchas

* Event storms are normal. Dedupe is intentional.
* ID resolution drives success. Missing IDs cause skips.
  {% endtab %}
  {% endtabs %}


---

# Agent Instructions: 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:

```
GET https://wiki.crosswatch.app/blueprint-architecture/scrobble/webhooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
