1) Use NFOs for metadata and save watch status in the NFO.
2) Use an external service like Trakt or Simkl. Sync your watch status to either service then sync back in.
Trakt has recently added a lot of restrictions on free accounts, so I'm not sure if that is a viable option anymore. And our Simkl plugin is pretty basic at the moment (advanced features similar to Trakt are a WIP).
NFOs might be the best route. Especially if you already use NFOs.
Jellyfin 10.10.7 (Docker)
Ubuntu 24.04.2 LTS w/HWE
Intel i3 12100
Intel Arc A380
OS drive - SK Hynix P41 1TB
Storage
4x WD Red Pro 6TB CMR in RAIDZ1