Floppy
Menu

Floppy + Jellyfin

History in. Watched state back.

Bring detailed history and live playback from Jellyfin into Floppy, then choose whether watched state should flow back to Jellyfin. Your server stays yours; the direction is yours too.

One Jellyfin connection. History in, watched state back.

Connect with a server URL and API key, then let Floppy pull history on a schedule, listen for live events, and optionally push watched or unwatched state back to Jellyfin.

HistoryAutomatic pulls every four hours
LivePlayback and webhook events
Two-way SyncWatched and unwatched state

What Jellyfin unlocks

History comes in. Watched state can go back.

Jellyfin and Floppy can share more than playback. You choose the direction for watched state: Jellyfin to Floppy, Floppy to Jellyfin, both, or off.

01 / History

Pull in the watches you already have.

Floppy queues a history pull when you connect and can continue automatically every four hours. Playback Reporting preserves individual plays and rewatches when its plugin API is available.

02 / Live activity

See playback while it happens.

Jellyfin webhook events can update Floppy’s live playback card, current position, percentage, resume context, and history surfaces for movies and TV episodes.

03 / Two-way state

Keep watched state aligned.

Floppy can push watched or unwatched state to Jellyfin for movies and episodes, manually, hourly, after a webhook, or through the shared sync controls.

04 / Collection

Know what exists on your server.

Item Added and Item Deleted events maintain Jellyfin library ownership in Floppy. This is collection presence—not a promise of full A/V format metadata.

05 / Recovery

Keep a manual route for old history.

Upload a Playback Reporting TSV export when the plugin cannot be exposed through the API. Repeated uploads are handled safely, with a 50 MB file limit.

A sensible first run

Set up the server, then choose the depth.

The basic connection is small. The plugins and sync direction determine how much of Jellyfin’s history and watched state Floppy can keep current.

1

Create a key

Generate an API key in Jellyfin.

2

Connect server

Enter the server URL and API key.

3

Confirm user

Use the correct username with an admin key.

4

Check metadata

Enable TMDB and TVDB providers.

5

Choose plugins

Add webhooks and Playback Reporting as needed.

6

Pick sync direction

Choose provider, Floppy, both, or off.

Connection scope matters:

Jellyfin currently has no library selector in Floppy. History pulls scan all Movies and Episodes visible to the connected Jellyfin user. Dashboard or admin API keys are not tied to one user, so provide the exact Jellyfin username during setup.

Two plugins, two jobs

Live events and deep history are different layers.

The official and community webhook plugins are two setup paths for the same Floppy integration. Playback Reporting is a separate plugin with a different job: supplying historical per-play detail.

Webhook plugin

Use the official Stable-repository plugin when your server can access it, or the community plugin when that route fits your setup. Either path can send live events to Floppy.

  • Playback start, pause, progress, and stop
  • Item added and item deleted
  • Optional MarkPlayed and MarkUnplayed events
  • Filter events to the Jellyfin users you choose

Playback Reporting

When the plugin API is available to Floppy, automatic pulls can preserve individual plays, rewatches, dates, and durations. If it is unavailable, Floppy falls back to Jellyfin’s current watched state.

  • Full per-play history when available
  • Incremental sync for large histories
  • Manual TSV upload as another route
  • Fallback: at most one play per item
  • Large first histories may need multiple bounded pulls

The data directions

Three paths, three different meanings.

Jellyfin playback, Jellyfin history, and watched-state sync should not be treated as the same thing. The distinction makes it easier to understand what Floppy can recover and what it can send back.

Jellyfin playbackWhat is happening now
webhook →
Floppy live playback + historyHome, progress, and completed activity
Jellyfin historyWhat the server records over time
pull / TSV →
Floppy watch historyIndividual plays when Playback Reporting is available
Floppy watched stateYour status in Floppy
→ push
Jellyfin watched stateWatched or unwatched on movies and episodes
Watched state is not full history:

Pushing a watched state to Jellyfin does not recreate Floppy rewatch records, ratings, playback timestamps, or resume positions. The outbound path is intentionally narrower.

Webhook behavior

Fast updates, with clear boundaries.

Jellyfin webhooks arrive at Floppy through a tokenized endpoint and are processed asynchronously. They cover movies and TV episodes; music and audiobook playback do not use the active Jellyfin webhook path.

Play / PauseCreate or update in-progress playback and the live playback surface. Pause updates the live card but does not create a durable tracking event by itself.
StopUpdates progress and can mark the item completed when usable position and duration data support it. Jellyfin’s own Played flag can also establish completion.
Item Added / DeletedMaintain whether a resolvable movie or episode exists in the connected Jellyfin library.
MarkPlayed / MarkUnplayedOptional manual state events. Unplayed retracts the latest matching state rather than blindly erasing all older movie history.

Know the scope

Jellyfin is focused, and that is useful.

The integration has a strong movie and TV workflow. Keeping its current limits explicit makes the two-way sync promise easier to trust.

Supported today

Movies and TV episodes, automatic history pulls, Playback Reporting, live webhooks, live playback, library ownership, manual TSV imports, and watched-state sync in both directions.

Not currently part of the path

No Jellyfin Watchlist sync, music or audiobook synchronization, rating synchronization, Plex-style webhook sharing, or rich Jellyfin A/V format metadata.

Matching depends on metadata

Floppy prefers TMDB, TVDB, and IMDb IDs, with fallback matching. Keep those providers enabled in Jellyfin; if an item still does not match, correct its metadata in Jellyfin and run another pull.

Fallback history is smaller

Without Playback Reporting access, Jellyfin’s current watched state cannot recover rewatches, individual play dates, durations, or older plays that are no longer represented by the server.

Security and operations

A connection you can inspect.

The Jellyfin API key is encrypted before storage. Connection health, pull and push timestamps, errors, and Playback Reporting availability are surfaced so a quiet integration does not have to be a mysterious one.

Keep the webhook token private

The webhook endpoint is authenticated by the Floppy token in its URL. Treat it as a secret. Regenerating the token means updating Jellyfin and any other integration webhooks that use it.

Watch the status surfaces

Floppy records connection health, last pull and push times, last errors, and Playback Reporting availability. Changing the server or Jellyfin user resets incremental sync state safely.

Choose the direction

Keep the server that works. Control where watched state goes.

Connect Jellyfin for detailed history and live playback, then choose whether Floppy, Jellyfin, both, or neither should own watched state.