diff --git a/src/components/shows/TimeSlotRow.vue b/src/components/shows/TimeSlotRow.vue
index 49acab7733971fd1205ec988529ec0d6f6fd7582..d7069ca461602f82ae0f739a25093c515b6d11b6 100644
--- a/src/components/shows/TimeSlotRow.vue
+++ b/src/components/shows/TimeSlotRow.vue
@@ -161,7 +161,8 @@ const hasEnded = computed(() => now.value > end.value)
 const { create: createEpisode, isSaving: isCreatingEpisode } = useCreateBehaviour(
   async function () {
     const episode = await episodeStore.create({ showId: props.timeslot.showId })
-    episodeId.value = episode.id
+    // We don’t set episodeId.value here, because we need to know when the change has been persisted.
+    await timeslotStore.partialUpdate(props.timeslot.id, { episodeId: episode.id })
     await router.push({
       name: 'show-timeslot-details',
       params: { timeslotId: props.timeslot.id },