diff --git a/aleksis/core/util/predicates.py b/aleksis/core/util/predicates.py
index f57b55620e2f7d32136f7b96c1fc869e245ca757..6c7dc95a08125ab27886aa48742ec4fd40a81244 100644
--- a/aleksis/core/util/predicates.py
+++ b/aleksis/core/util/predicates.py
@@ -8,6 +8,7 @@ from guardian.shortcuts import get_objects_for_user
 from rules import predicate
 
 from ..models import Group
+from .core_helpers import get_site_preferences
 from .core_helpers import has_person as has_person_helper
 
 
@@ -66,6 +67,19 @@ def has_any_object(perm: str, klass):
     return fn
 
 
+def check_site_preference(section: str, pref: str):
+    """Builds predicate which checks the boolean value of a given site preference"""
+    name = f"check_site_preference:{section}__{pref}"
+
+    @predicate(name)
+    def fn() -> bool:
+        if isinstance(get_site_preferences()[f"{section}__{pref}"], bool):
+            return get_site_preferences()[f"{section}__{pref}"]
+        return False
+
+    return fn
+
+
 @predicate
 def has_person(user: User) -> bool:
     """Predicate which checks whether a user has a linked person."""