Plex
Find your Plex Token and make note of the URL and Port used to connect to your Plex instance.
Allowed Users and Defaults
Multi-scrobbler will automatically scrobble for these users by default:
- The User authenticated with the Plex Token
- and the Local User
The Local User (PLEX_LOCAL_USER) is how Plex identifies anyone directly accessing the Plex UI from a local IP (who does not need to login).
To allow MS to scrobble for other users use usersAllow or PLEX_USERS_ALLOW (env) from the below configuration docs. However, because you are overriding the default settings you must also explicitly list the authenticated user and the Local User if you want them to also be able to scrobble.
Examples
Defaults
If usersallow and PLEX_USERS_ALLOW are not defined then the Plex Token authenticated User and Local User will be scrobbled for.
Only A Specific User
"usersallow": ["SomeUser"]orPLEX_USERS_ALLOW: SomeUser
Only the Plex user SomeUser will be scrobbled for. The Plex Token authenticated user and the Local User will not be scrobbled for.
A Specific User + Defaults
(Assuming the plex authenticated user is FoxxMD)
"usersallow": ["FoxxMD", "PLEX_LOCAL_USER", "SomeUser"]orPLEX_USERS_ALLOW: FoxxMD,PLEX_LOCAL_USER,SomeUser
The Plex user SomeUser, the Plex Token authenticated user (FoxxMD) and the Local User will be scrobbled for.
Allowed Libraries and Defaults
By default multi-scrobbler will only scrobble media found in Plex libraries that are labelled as Music.
librariesAlloworPLEX_LIBRARIES_ALLOWwill override this
Use Plex metadata with Musicbrainz for better scrobbling
Matching With Plex
In Plex, if the Plex Music Agent is set on a Music Library then Plex attempts to match your music with Musicbrainz when it is first imported.

Plex uses ID3/metdata tags to match or falls back to matching based on file name and folder names. If it cannot find a match it can be fixed through a Fix Match option in the album/track context menu. See plex documentation for more information.
You can verify if an Item has been matched by:
- Clicking on the Item context menu (...)
- Get Info
- View XML
If a node like this is present then it has been matched: <Guid id="mbid://4e631558-13b0..."/>
Using Musicbrainz With Multi-Scrobbler
The MBID from the above <Guid> node is a Track, a special type of ID that specifically identifies a song on a specific album. If this is present then Multi-scrobbler can use it to gaurantee your scrobble, and all its metadata, is matched 1:1 with what is in your Plex library when using the Musicbrainz Stage to enrich your scrobble.
To configure MS to use Musicbrainz with your Plex metadata use one of the methods below:
- ENV
- File
- File AIO
Add to your multi-scrobbler docker compose file environment section for Musicbrainz ENV Configuration:
# a real email that Musicbrainz can use to contact you in case of issues
- MB_CONTACT=myEmail@myEmailProvider.com
- MB_PRESETS=id,default
- PLEX_TRANSFORMS=musicbrainz
Your AIO Config:
{
// ...
"transformers": [
{
"type": "musicbrainz",
"name": "MyMB",
"data": {
"apis": [
{
// a real email that Musicbrainz can use to contact you in case of issues
"contact": "myEmail@myEmailProvider.com"
}
]
}
}
]
}
In your File Config:
[
{
"name": "MyPlex",
"data": { /* ... */},
"options": {
"playTransform": {
"preCompare": [
{
"type": "musicbrainz",
"name": "MyMB"
"searchOrder": ["mbidrecording", "basicOrIds", "basic"]
}
]
}
}
}
]
Your AIO Config:
{
// ...
"transformers": [
{
"type": "musicbrainz",
"name": "MyMB",
"data": {
"apis": [
{
// a real email that Musicbrainz can use to contact you in case of issues
"contact": "myEmail@myEmailProvider.com"
}
]
}
}
]
// ...
"sources": [
// ...
{
"name": "MyPlex",
"type": "plex",
"data": { /* ... */},
"options": {
"playTransform": {
"preCompare": [
{
"type": "musicbrainz",
"name": "MyMB",
"searchOrder": ["mbidrecording", "basicOrIds", "basic"]
}
]
}
}
}
]
}
Configuration
- ENV
- File
- AIO
| Environmental Variable | Required? | Default | Description |
|---|---|---|---|
PLEX_URL | Yes | The URL of the Plex server IE http://localhost:32400 | |
PLEX_TOKEN | Yes | The Plex Token to use with the API | |
PLEX_USERS_ALLOW | No | Comma-separated list of usernames (from Plex) to scrobble for | |
PLEX_USERS_BLOCK | No | Comma-separated list of usernames (from Plex) to disallow scrobble for | |
PLEX_DEVICES_ALLOW | No | Comma-separated list of devices to scrobble from | |
PLEX_DEVICES_BLOCK | No | Comma-separated list of devices to disallow scrobbles from | |
PLEX_LIBRARIES_ALLOW | No | Comma-separated list of libraries to allow scrobbles from | |
PLEX_LIBRARIES_BLOCK | No | Comma-separated list of libraries to disallow scrobbles from |
[
{
"name": "MyPlexApi",
"enable": true,
"clients": [],
"data": {
"token": "1234",
"url": "http://192.168.0.120:32400",
"usersAllow": [
"FoxxMD",
"SomeOtherUser"
],
"usersBlock": [
"AnotherUser"
],
"devicesAllow": [
"firefox"
],
"devicesBlock": [
"google-home"
],
"librariesAllow": [
"GoodMusic"
],
"librariesBlock": [
"BadMusic"
]
},
"options": {
"logPayload": true,
"logFilterFailure": "debug",
"ignoreInvalidCert": false
}
}
]
or explore the schema with an example and live editor/validator
{
"sources": [
{
"name": "MyPlexApi",
"enable": true,
"clients": [],
"data": {
"token": "1234",
"url": "http://192.168.0.120:32400",
"usersAllow": [
"FoxxMD",
"SomeOtherUser"
],
"usersBlock": [
"AnotherUser"
],
"devicesAllow": [
"firefox"
],
"devicesBlock": [
"google-home"
],
"librariesAllow": [
"GoodMusic"
],
"librariesBlock": [
"BadMusic"
]
},
"options": {
"logPayload": true,
"logFilterFailure": "debug",
"ignoreInvalidCert": false
},
"type": "plex"
}
]
}
or explore the schema with an example and live editor/validator