diff --git a/gso/__init__.py b/gso/__init__.py
index bb036cdc5882276b2239d1c42ac8f791a27b1764..2df27bcb762638dee24e7c6449b34f7e99b4782d 100644
--- a/gso/__init__.py
+++ b/gso/__init__.py
@@ -1,5 +1,7 @@
 """The main entrypoint for :term:`GSO`, and the different ways in which it can be run."""
 
+import os
+
 import sentry_sdk
 import typer
 from orchestrator import OrchestratorCore, app_settings
@@ -13,16 +15,10 @@ from gso.api import router as api_router
 from gso.auth.oidc import oidc_instance
 from gso.auth.opa import graphql_opa_instance, opa_instance
 from gso.graphql_api.types import GSO_SCALAR_OVERRIDES
+from gso.settings import load_oss_params
 
 SCALAR_OVERRIDES.update(GSO_SCALAR_OVERRIDES)
 
-sentry_sdk.init(
-    dsn="https://2b0b82245bfa6631041802c997ed8b58@test-observer01.geant.org/3",
-    # Set traces_sample_rate to 1.0 to capture 100%
-    # of transactions for performance monitoring.
-    traces_sample_rate=1.0,
-)
-
 
 def init_gso_app() -> OrchestratorCore:
     """Initialise the :term:`GSO` app."""
@@ -47,3 +43,12 @@ def init_cli_app() -> typer.Typer:
     cli_app.add_typer(imports.app, name="import-cli")
     cli_app.add_typer(netbox.app, name="netbox-cli")
     return cli_app()
+
+
+def init_sentry() -> None:
+    """Only initialize Sentry if not in testing mode."""
+    if os.getenv("TESTING", "false").lower() == "false" and (sentry_config := load_oss_params().SENTRY):
+        sentry_sdk.init(dsn=sentry_config.DSN, environment=sentry_config.environment, traces_sample_rate=1.0)
+
+
+init_sentry()
diff --git a/gso/settings.py b/gso/settings.py
index 47720f1db83fda119e5fd6eea943b25d50403653..8feb2ed16f2a0437ecd635ffa36ff91b597bd779 100644
--- a/gso/settings.py
+++ b/gso/settings.py
@@ -12,7 +12,7 @@ from pathlib import Path
 from typing import Annotated
 
 from pydantic import Field
-from pydantic_forms.types import UUIDstr
+from pydantic_forms.types import UUIDstr, strEnum
 from pydantic_settings import BaseSettings
 from typing_extensions import Doc
 
@@ -190,6 +190,22 @@ class KentikParams(BaseSettings):
     md5_password: str
 
 
+class EnvironmentEnum(strEnum):
+    """The different environments in which the GSO system can run."""
+
+    DEVELOPMENT = "development"
+    TEST = "test"
+    UAT = "uat"
+    PRODUCTION = "production"
+
+
+class SentryParams(BaseSettings):
+    """Settings for Sentry."""
+
+    DSN: str
+    environment: EnvironmentEnum
+
+
 class OSSParams(BaseSettings):
     """The set of parameters required for running :term:`GSO`."""
 
@@ -203,6 +219,7 @@ class OSSParams(BaseSettings):
     EMAIL: EmailParams
     SHAREPOINT: SharepointParams
     KENTIK: KentikParams
+    SENTRY: SentryParams | None = None
 
 
 def load_oss_params() -> OSSParams:
diff --git a/test/__init__.py b/test/__init__.py
index 433e89b0fcb66b0730237cc78cded4048140751c..d9001c9314bacef63647c108731562e2f4194f99 100644
--- a/test/__init__.py
+++ b/test/__init__.py
@@ -1,3 +1,4 @@
+import os
 from uuid import uuid4
 
 LSO_RESULT_SUCCESS = {
@@ -19,3 +20,5 @@ LSO_RESULT_FAILURE = {
 }
 
 USER_CONFIRM_EMPTY_FORM = [{}]
+
+os.environ["TESTING"] = "true"