diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index c47546e235ce26da6fef88fee0a2e0324d9df75f..74ed22802286eaeccc4d92b6c1e255364c3503b2 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -6,6 +6,7 @@ from dynamic_preferences.types import (
     BooleanPreference,
     ChoicePreference,
     IntegerPreference,
+    ModelChoicePreference,
     ModelMultipleChoicePreference,
 )
 
@@ -203,3 +204,20 @@ class GroupTypesRegisterAbsence(ModelMultipleChoicePreference):
     help_text = _(
         "If you leave it empty, all member of groups the user is an owner of will be shown."
     )
+
+
+@site_preferences_registry.register
+class GroupTypePriorityCoursebook(ModelChoicePreference):
+    section = alsijil
+    name = "group_type_priority_coursebook"
+    required = False
+    default = None
+    model = GroupType
+    verbose_name = _(
+        "Group type of groups to be shown first in the group "
+        "select field on the coursebook overview page"
+    )
+    help_text = _("If you leave it empty, no group type will be used.")
+
+    def get_queryset(self):
+        return GroupType.objects.managed_and_unmanaged()
diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py
index c2ed8a2eef99acc833e5680d42fb658c553c352f..f63b8c2c9b8c5c029371e4663f6d70b2e5271bb8 100644
--- a/aleksis/apps/alsijil/schema/__init__.py
+++ b/aleksis/apps/alsijil/schema/__init__.py
@@ -1,7 +1,7 @@
 from datetime import datetime
 
 from django.core.exceptions import PermissionDenied
-from django.db.models.query_utils import Q
+from django.db.models import BooleanField, ExpressionWrapper, Q
 
 import graphene
 
@@ -156,6 +156,13 @@ class Query(graphene.ObjectType):
             Group.objects.for_current_school_term_or_all()
             .filter(Q(members=person) | Q(owners=person) | Q(parent_groups__owners=person))
             .distinct()
+            .annotate(
+                is_priority=ExpressionWrapper(
+                    Q(group_type=get_site_preferences()["alsijil__group_type_priority_coursebook"]),
+                    output_field=BooleanField(),
+                )
+            )
+            .order_by("is_priority")
         )
 
     @staticmethod