diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 4ef4447536ba9422b44e1e91b34223da0aa80b28..28ce7eee6fc8aff01df27b90eed14c99b4c7700e 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,20 +6,16 @@ All notable changes to this project will be documented in this file.
 The format is based on `Keep a Changelog`_,
 and this project adheres to `Semantic Versioning`_.
 
-Unreleased
-----------
-
-Added
-~~~~~
-
-* [OAuth] Expired tokens are now cleared in a periodic task
-* PDF file jobs are now automatically expired
-* Data checks are now scheduled every 15 minutes by default
+`2.7.1`_ - 2022-01-28
+---------------------
 
 Changed
 ~~~~~~~
 
 * PWA icons can now be marked maskable
+* [OAuth] Expired tokens are now cleared in a periodic task
+* PDF file jobs are now automatically expired
+* Data checks are now scheduled every 15 minutes by default
 
 Fixed
 ~~~~~
@@ -695,3 +691,4 @@ Fixed
 .. _2.5: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.5
 .. _2.6: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.6
 .. _2.7: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.7
+.. _2.7.1: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.7.1
diff --git a/docs/conf.py b/docs/conf.py
index faf02551a28f85c258edabf0dd2253d054e07344..999413717afee2564679f58494cf7ef627c51814 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -31,7 +31,7 @@ author = "The AlekSIS Team"
 # The short X.Y version
 version = "2.7"
 # The full version, including alpha/beta/rc tags
-release = "2.7.1.dev0"
+release = "2.7.1"
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/pyproject.toml b/pyproject.toml
index 0587d6373842c71e486667f13036971d2cd9cb72..e67e312e0ada0611260be29b84d4840e5a1c4725 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "AlekSIS-Core"
-version = "2.7.1.dev0"
+version = "2.7.1"
 packages = [
     { include = "aleksis" }
 ]