Unable to mark unaired episodes as watched (works in Trakt iOS, not in SeriesGuide)

Hello,

I noticed an inconsistency between Trakt iOS and SeriesGuide when marking episodes as watched.

For the following show:
https://app.trakt.tv/shows/2026-315209

Some episodes are already available via early streaming, even though they are still marked as unaired on Trakt.

  • In Trakt iOS, I can long-press and mark these episodes as watched

  • In SeriesGuide, attempting to do so results in an error (marking fails)

This creates a mismatch in tracking, since I have already watched the episodes but cannot reflect that in SeriesGuide.

Is this a limitation in SeriesGuide, or could this behavior be aligned with Trakt’s iOS app?

Thanks!

// Translated by AI

Additionally, based on this discussion:
https://forums.trakt.tv/t/future-release-date-cannot-mark-as-watched/105033/2
it seems that the Trakt Android app may also be unable to mark such episodes as watched.

It seems the issue is not limited to unaired episodes.

For example:

Some episodes that are already aired still cannot be marked as watched (results in an error).

However, for another show:

Aired episodes can be marked as watched without any issues.

So this behavior appears to be inconsistent and not strictly related to the “unaired” status.

Thanks for reporting!

Can you do so again and afterwards email me your debug log: View and send debug log - SeriesGuide

SeriesGuide doesn’t have any restrictions (if I remember correctly). However, based on the discussions you have linked it’s possible that the Trakt servers now reject marking a future episode as watched.

I have uploaded the logs below for reference.

For this case:
TMDB show: The Regression of Great Sage Riddle (TV Series 2026- ) — The Movie Database (TMDB)

Trakt show: Trakt Web: Track Your Shows & Movies

According to the logs, it seems that Trakt could not find a matching show.

However, in reality:

  • I am able to mark episodes as watched in Trakt iOS
  • The watched status successfully syncs back to SeriesGuide

So there appears to be a contradiction between what the logs report and the actual behavior.

Logs:

2026-04-18 21:06:32.188 ListWidgetProvider D onReceive: widget DATA_CHANGED action.
2026-04-18 21:06:32.200 ListWidgetProvider D scheduled widget UPDATE alarm.
2026-04-18 21:06:40.219 ListWidgetRemoteViewsFactory D onQueryForData for appWidgetId=17
2026-04-18 21:08:23.840 NotificationService$Companion D Notification cleared, received delete intent Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 xflg=0x4 pkg=com.battlelancer.seriesguide cmp=com.battlelancer.seriesguide/.ui.ShowsActivity }
2026-04-18 21:08:23.868 CalendarFragment2ViewModel$updateCalendarQuery D updateCalendarQuery
2026-04-18 21:08:23.872 SgSyncAdapter$Companion D Requesting sync: queueing request!
2026-04-18 21:08:23.877       BillingTools I updateUnlockState: pass=true, amazon=false, play=false
2026-04-18 21:08:23.879 LatestEpisodeUpdateTask D Updating next episodes for all shows
2026-04-18 21:08:23.929      SgSyncService D Creating sync service
2026-04-18 21:08:23.929      SgSyncService D Binding sync adapter
2026-04-18 21:08:23.931      SgSyncAdapter I Syncing: DELTA_REGULAR
2026-04-18 21:08:23.933       SyncProgress D Syncing: TMDB...
2026-04-18 21:08:23.974           ShowSync D Updating 0 show(s)...
2026-04-18 21:08:23.974      SgSyncAdapter D Syncing: TMDB shows...DONE
2026-04-18 21:08:23.987           TmdbSync D Updating 0 movie(s)...
2026-04-18 21:08:23.987      SgSyncAdapter D Syncing: TMDB...DONE
2026-04-18 21:08:23.987      SgSyncAdapter D Syncing: Hexagon...SKIP
2026-04-18 21:08:23.991       SyncProgress D Syncing: TRAKT...
2026-04-18 21:08:24.068 ShowsViewModel$updateQuery D Running query update.
2026-04-18 21:08:24.123 ShowsFragment$onViewCreated D Scheduled query update.
2026-04-18 21:08:24.327 ShowsFragment$onViewCreated D Scheduled query update.
2026-04-18 21:08:24.880       SyncProgress D Syncing: TRAKT_EPISODES...
2026-04-18 21:08:24.880   TraktEpisodeSync D syncWatched: no changes since 2026-04-16 15:52:43
2026-04-18 21:08:24.881   TraktEpisodeSync D syncCollected: no changes since 2026-02-13 13:15:56
2026-04-18 21:08:24.881       SyncProgress D Syncing: TRAKT_RATINGS...
2026-04-18 21:08:24.881   TraktRatingsSync D downloadForEpisodes: no changes since 2025-07-09 13:41:50
2026-04-18 21:08:24.882   TraktRatingsSync D downloadForShows: no changes since 2026-04-14 10:05:21
2026-04-18 21:08:24.882       SyncProgress D Syncing: TRAKT_NOTES...
2026-04-18 21:08:24.883     TraktNotesSync D syncForShows: no changes since 2025-04-30 18:30:01
2026-04-18 21:08:24.883       SyncProgress D Syncing: TRAKT_MOVIES...
2026-04-18 21:08:24.883     TraktMovieSync D syncLists: no changes
2026-04-18 21:08:24.885 MovieTools$Companion D deleteUnusedMovies: removed 0 movies
2026-04-18 21:08:24.885       SyncProgress D Syncing: TRAKT_RATINGS...
2026-04-18 21:08:24.885   TraktRatingsSync D downloadForMovies: no changes since 2026-01-29 14:20:37
2026-04-18 21:08:24.885      SgSyncAdapter D Syncing: trakt...DONE
2026-04-18 21:08:24.885 LatestEpisodeUpdateTask D Updating next episodes for all shows
2026-04-18 21:08:24.886      SgSyncAdapter I Syncing: SUCCESS
2026-04-18 21:08:24.888 ListWidgetProvider D onReceive: widget DATA_CHANGED action.
2026-04-18 21:08:24.891 ListWidgetProvider D scheduled widget UPDATE alarm.
2026-04-18 21:08:25.091 ShowsFragment$onViewCreated D Scheduled query update.
2026-04-18 21:08:50.753 SgSyncAdapter$Companion D Requesting sync: did sync recently, skip.
2026-04-18 21:08:50.754       BillingTools I updateUnlockState: pass=true, amazon=false, play=false
2026-04-18 21:09:23.188 SgSyncAdapter$Companion D Requesting sync: did sync recently, skip.
2026-04-18 21:09:23.189       BillingTools I updateUnlockState: pass=true, amazon=false, play=false
2026-04-18 21:09:23.979 SgSyncAdapter$Companion D Requesting sync: did sync recently, skip.
2026-04-18 21:09:23.980       BillingTools I updateUnlockState: pass=true, amazon=false, play=false
2026-04-18 21:09:23.981 LatestEpisodeUpdateTask D Updating next episodes for all shows
2026-04-18 21:09:24.180 ShowsViewModel$updateQuery D Running query update.
2026-04-18 21:09:24.181 ShowsFragment$onViewCreated D Scheduled query update.
2026-04-18 21:09:24.212 ShowsFragment$onViewCreated D Scheduled query update.
2026-04-18 21:09:24.932 SgSyncAdapter$Companion D Requesting sync: did sync recently, skip.
2026-04-18 21:09:24.973       PackageTools D installingPackageName = 'com.android.vending'
2026-04-18 21:09:24.980     SgAppContainer I preventExternalLinks=true installedByPlay=true region=CN isEEA=false isUS=false
2026-04-18 21:09:25.046 SeasonWatchInfoViewModel$special$$inlined$map D Loading watch providers for SeasonWatchInfo(showTmdbId=313395, seasonNumber=1, region=JP)
2026-04-18 21:09:25.257   ExtensionManager I Loading extension subscriptions
2026-04-18 21:09:25.265   ExtensionManager D Restored subscription: ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.WebSearchExtensionReceiver} token: 6be72618-ba20-43ad-9501-4f0e5ce59c19
2026-04-18 21:09:25.265   ExtensionManager D Restored subscription: ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.YouTubeExtensionReceiver} token: b366ada4-41b9-43fe-ae54-fecca6b8b8ee
2026-04-18 21:09:25.265   ExtensionManager I App restart: temporarily un-subscribing from all extensions.
2026-04-18 21:09:25.265   ExtensionManager D disableExtension: unsubscribing from ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.WebSearchExtensionReceiver}
2026-04-18 21:09:25.266   ExtensionManager D disableExtension: unsubscribing from ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.YouTubeExtensionReceiver}
2026-04-18 21:09:25.267   ExtensionManager D Saving 0 subscriptions
2026-04-18 21:09:25.268   ExtensionManager I App restart: re-subscribing to installed extensions.
2026-04-18 21:09:25.268   ExtensionManager D enableExtension: subscribing to ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.WebSearchExtensionReceiver}
2026-04-18 21:09:25.269   ExtensionManager D enableExtension: subscribing to ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.YouTubeExtensionReceiver}
2026-04-18 21:09:25.269   ExtensionManager D Saving 2 subscriptions
2026-04-18 21:09:25.270   ExtensionManager D requestAction: requesting from ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.WebSearchExtensionReceiver} for 7104636
2026-04-18 21:09:25.271   ExtensionManager D requestAction: requesting from ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.YouTubeExtensionReceiver} for 7104636
2026-04-18 21:09:25.277 OverviewFragment$episodeActionsLoaderCallbacks D onLoadFinished: received 0 actions
2026-04-18 21:09:25.576 OverviewFragment$episodeActionsLoaderCallbacks D onLoadFinished: received 2 actions
2026-04-18 21:09:25.937 SgSyncAdapter$Companion D Requesting sync: queueing request!
2026-04-18 21:09:25.954      SgSyncService D Creating sync service
2026-04-18 21:09:25.955      SgSyncService D Binding sync adapter
2026-04-18 21:09:25.958      SgSyncAdapter I Syncing: SINGLE_REGULAR
2026-04-18 21:09:25.959       SyncProgress D Syncing: TMDB...
2026-04-18 21:09:25.959           ShowSync D Updating 1 show(s)...
2026-04-18 21:09:27.646       GetShowTools W getShowDetails: no Trakt show found, using default values.
2026-04-18 21:09:28.282 LatestEpisodeUpdateTask D Updating next episode for show 1058
2026-04-18 21:09:28.286 SgActivityHelper$Companion D addActivity: removed 0 outdated activities
2026-04-18 21:09:28.287 SgActivityHelper$Companion D Added 1 activities with time 1776517768286
2026-04-18 21:09:28.291 SgSyncAdapter$Companion D Requesting sync: queueing request!
2026-04-18 21:09:28.296 ListWidgetProvider D onReceive: widget DATA_CHANGED action.
2026-04-18 21:09:28.299 ListWidgetProvider D scheduled widget UPDATE alarm.
2026-04-18 21:09:28.303   Errors$Companion E get season
java.io.InterruptedIOException
	at okhttp3.internal.http2.Http2Stream.waitForIo$okhttp(Http2Stream.kt:716)
	at okhttp3.internal.http2.Http2Stream.takeHeaders(Http2Stream.kt:156)
	at okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders(Http2ExchangeCodec.kt:105)
	at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.kt:117)
	at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:97)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:101)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:85)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:74)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at com.uwetrottmann.trakt5.TraktV2Interceptor.handleIntercept(TraktV2Interceptor.java:59)
	at com.battlelancer.seriesguide.traktapi.SgTraktInterceptor.intercept(SgTraktInterceptor.java:30)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at com.uwetrottmann.tmdb2.TmdbInterceptor.handleIntercept(TmdbInterceptor.java:62)
	at com.battlelancer.seriesguide.tmdbapi.SgTmdbInterceptor.intercept(SgTmdbInterceptor.kt:22)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at com.battlelancer.seriesguide.modules.HttpClientModule$provideOkHttpClient$$inlined$-addInterceptor$1.intercept(OkHttpClient.kt:1394)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:226)
	at okhttp3.internal.connection.RealCall.execute(RealCall.kt:178)
	at retrofit2.OkHttpCall.execute(OkHttpCall.java:207)
	at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall.execute(DefaultCallAdapterFactory.java:108)
	at com.battlelancer.seriesguide.tmdbapi.TmdbTools3.getSeason(TmdbTools3.kt:156)
	at com.battlelancer.seriesguide.shows.tools.AddUpdateShowTools.getEpisodesOfSeason(AddUpdateShowTools.kt:271)
	at com.battlelancer.seriesguide.shows.tools.AddUpdateShowTools.updateShow(AddUpdateShowTools.kt:508)
	at com.battlelancer.seriesguide.shows.tools.ShowSync.sync(ShowSync.kt:93)
	at com.battlelancer.seriesguide.sync.SgSyncAdapter.sync(SgSyncAdapter.kt:153)
	at com.battlelancer.seriesguide.sync.SgSyncAdapter.onPerformSync(SgSyncAdapter.kt:111)
	at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:354)

2026-04-18 21:09:28.303      SgSyncAdapter D Sync interrupted by system, trying again later.
2026-04-18 21:09:28.303       SyncProgress D Syncing: TMDB...FAILED
2026-04-18 21:09:28.306 ListWidgetProvider D onReceive: widget DATA_CHANGED action.
2026-04-18 21:09:28.307 ListWidgetProvider D scheduled widget UPDATE alarm.
2026-04-18 21:09:28.309      SgSyncService D Creating sync service
2026-04-18 21:09:28.309      SgSyncService D Binding sync adapter
2026-04-18 21:09:28.310      SgSyncAdapter I Syncing: JOBS_IMMEDIATE
2026-04-18 21:09:28.311 NetworkJobProcessor D Running job 15710 EPISODE_WATCHED_FLAG
2026-04-18 21:09:28.315 NetworkJobProcessor D Job 15710 completed, will remove.
2026-04-18 21:09:28.328      SgSyncService D Creating sync service
2026-04-18 21:09:28.328      SgSyncService D Binding sync adapter
2026-04-18 21:09:28.329      SgSyncAdapter I Syncing: SINGLE_REGULAR
2026-04-18 21:09:28.330       SyncProgress D Syncing: TMDB...
2026-04-18 21:09:28.330           ShowSync D Updating 1 show(s)...
2026-04-18 21:09:28.332       GetShowTools W getShowDetails: no Trakt show found, using default values.
2026-04-18 21:09:28.491   ExtensionManager D requestAction: requesting from ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.WebSearchExtensionReceiver} for 7104637
2026-04-18 21:09:28.493   ExtensionManager D requestAction: requesting from ComponentInfo{com.battlelancer.seriesguide/com.battlelancer.seriesguide.extensions.YouTubeExtensionReceiver} for 7104637
2026-04-18 21:09:28.499 OverviewFragment$episodeActionsLoaderCallbacks D onLoadFinished: received 0 actions
2026-04-18 21:09:28.715 OverviewFragment$episodeActionsLoaderCallbacks D onLoadFinished: received 2 actions
2026-04-18 21:09:30.051 SgSyncAdapter$Companion D Requesting sync: sync active, skip.
2026-04-18 21:09:30.053       BillingTools I updateUnlockState: pass=true, amazon=false, play=false
2026-04-18 21:09:30.054 LatestEpisodeUpdateTask D Updating next episodes for all shows
2026-04-18 21:09:30.104 ShowsFragment$onViewCreated D Scheduled query update.
2026-04-18 21:09:30.251 ShowsViewModel$updateQuery D Running query update.
2026-04-18 21:09:30.284 ShowsFragment$onViewCreated D Scheduled query update.
2026-04-18 21:09:30.459 OverviewFragment$episodeActionsLoaderCallbacks D onLoadFinished: received 2 actions
2026-04-18 21:09:30.966 SgSyncAdapter$Companion D Requesting sync: sync active, skip.
2026-04-18 21:09:30.967       BillingTools I updateUnlockState: pass=true, amazon=false, play=false
2026-04-18 21:09:32.710      SgSyncAdapter D Syncing: TMDB shows...DONE
2026-04-18 21:09:32.710      SgSyncAdapter I Syncing: SUCCESS
2026-04-18 21:09:32.721 NotificationAlarmReceiver D Run notifications service right away
2026-04-18 21:09:32.721 NotificationService D Waking up...
2026-04-18 21:09:32.722 NotificationService D Settings: specials: YES
2026-04-18 21:09:32.739 NotificationService D Woke up earlier than planned, checking to notify or reschedule
2026-04-18 21:09:32.739 NotificationService D No new episodes
2026-04-18 21:09:32.744 NotificationService D Setting alarm: exact=true time=2026-04-19T15:50:00Z
2026-04-18 21:09:32.748 ListWidgetProvider D onReceive: widget DATA_CHANGED action.
2026-04-18 21:09:32.750 ListWidgetProvider D scheduled widget UPDATE alarm.

Thanks! According to these messages SeriesGuide does properly set the episode watched at Trakt. Otherwise, you would have received an error notification. So that can’t be the issue.

Yes

Thanks for the clarification.

However, I did receive an error notification from SeriesGuide in the Android notification bar when attempting to mark the episode as watched.

Also, I can confirm on the Trakt History page that no corresponding history entry was created.

So from my side, it does seem that the request failed and was not successfully recorded on Trakt.


// Translated by AI

I tried again today, and I am still unable to mark the episode as watched.

Logs: eol-2026-05-22

Update: the issue is that Trakt servers don’t return details, notably a Trakt ID, when looking up these shows by their TMDB ID. This prevents SeriesGuide from uploading any changes related to that show.

I’ve emailed Trakt support about this. Let’s see what happens.

1 Like