diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js
index 5d1035d1..9c6bd052 100644
--- a/server/socket-handlers/status-page-socket-handler.js
+++ b/server/socket-handlers/status-page-socket-handler.js
@@ -338,6 +338,10 @@ module.exports.statusPageSocketHandler = (socket) => {
statusPage.modified_date = R.isoDateTime();
statusPage.analytics_id = config.analyticsId;
statusPage.analytics_script_url = config.analyticsScriptUrl;
+ const validAnalyticsTypes = ["google", "umami", "plausible", "matomo"];
+ if (config.analyticsType !== null && !validAnalyticsTypes.includes(config.analyticsType)) {
+ throw new Error("Invalid analytics type");
+ }
statusPage.analytics_type = config.analyticsType;
await R.store(statusPage);
diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue
index defc980b..4003b4a0 100644
--- a/src/pages/StatusPage.vue
+++ b/src/pages/StatusPage.vue
@@ -156,7 +156,7 @@
class="form-select"
data-testid="analytics-type-select"
>
-
+
@@ -688,7 +688,9 @@ export default {
enableEditMode: false,
enableEditIncidentMode: false,
hasToken: false,
- config: {},
+ config: {
+ analyticsType: null,
+ },
selectedMonitor: null,
incident: null,
previousIncident: null,