diff --git a/aleksis/core/frontend/components/calendar/Calendar.vue b/aleksis/core/frontend/components/calendar/Calendar.vue
index d2f5875c48915bb7f7d011a86f6ab72279a6b747..04d64e34cf0ed69cc01b9a9c959f89e8f40f912e 100644
--- a/aleksis/core/frontend/components/calendar/Calendar.vue
+++ b/aleksis/core/frontend/components/calendar/Calendar.vue
@@ -243,8 +243,12 @@ export default {
 
         this.$apollo.queries.calendar.setVariables(this.queryVariables);
         this.$apollo.queries.calendar.skip = false;
+        this.$apollo.queries.calendar.startPolling(30000);
         this.fetchedDateRange = { start: extendedStart, end: extendedEnd };
       } else if (olderStart || youngerEnd) {
+        // Stop polling the query with old variables
+        this.$apollo.queries.calendar.stopPolling();
+
         // Define newly fetched date range
         let newStart = olderStart ? extendedStart : this.fetchedDateRange.start;
         let newEnd = youngerEnd ? extendedEnd : this.fetchedDateRange.end;
@@ -281,6 +285,14 @@ export default {
         });
 
         this.fetchedDateRange = { start: newStart, end: newEnd };
+
+        // Restart polling the query with newly set variables
+        this.$apollo.queries.calendar.setVariables(this.queryVariables);
+        this.$apollo.queries.calendar.startPolling(30000);
+        this.fetchedDateRange = {
+          start: this.queryVariables.start,
+          end: this.queryVariables.end
+        };
       }
     },
   },