diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/sendToServerMixin.js b/aleksis/apps/alsijil/frontend/components/coursebook/absences/sendToServerMixin.js
index 55cae9e6e8d69b0f4e5d299e9869228ccf9c2702..18a19c1a968362a748b9e21ce583c41f4f14b025 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/sendToServerMixin.js
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/sendToServerMixin.js
@@ -28,6 +28,8 @@ export default {
         return;
       }
 
+      this.beforeSendToServer(participations, field, value);
+
       this.mutate(
         updateParticipationStatuses,
         {
@@ -51,9 +53,13 @@ export default {
             participationStatus.isOptimistic = newStatus.isOptimistic;
           });
 
+          this.duringUpdateSendToServer(participations, field, value, incomingStatuses)
+
           return storedDocumentations;
         },
       );
+
+      this.afterSendToServer(participations, field, value)
     },
     addExtraMarks(participations, extraMarkId) {
       // Get all participation statuses without this extra mark and get the respective person ids
@@ -91,5 +97,14 @@ export default {
         },
       );
     },
+    beforeSendToServer(_participations, _field, _value) {
+      // Noop hook
+    },
+    duringUpdateSendToServer(_participations, _field, _value, _incoming) {
+      // Noop hook
+    },
+    afterSendToServer(_participations, _field, _value) {
+      // Noop hook
+    },
   },
 };