diff --git a/CHANGES.md b/CHANGES.md
index 15d2894bc691a285827d01859d692ee40e360d74..99e314c68dfeef0d3285a5ecdcd877be705d55dd 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,9 +1,15 @@
-Synapse 1.29.0rc1 (2021-03-04)
-==============================
+Synapse 1.29.0 (2021-03-08)
+===========================
 
 Note that synapse now expects an `X-Forwarded-Proto` header when used with a reverse proxy. Please see [UPGRADE.rst](UPGRADE.rst#upgrading-to-v1290) for more details on this change.
 
 
+No significant changes.
+
+
+Synapse 1.29.0rc1 (2021-03-04)
+==============================
+
 Features
 --------
 
diff --git a/debian/changelog b/debian/changelog
index 04cd0d0d68dcf1826d05ec2390ed9ae5a328c4ec..3feefd8a1c3176bfbafb75cdf3f3db71ca785675 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,12 @@
-matrix-synapse-py3 (1.29.0) UNRELEASED; urgency=medium
+matrix-synapse-py3 (1.29.0) stable; urgency=medium
 
   [ Jonathan de Jong ]
   * Remove the python -B flag (don't generate bytecode) in scripts and documentation.
 
- -- Synapse Packaging team <packages@matrix.org>  Fri, 26 Feb 2021 14:41:31 +0100
+  [ Synapse Packaging team ]
+  * New synapse release 1.29.0.
+
+ -- Synapse Packaging team <packages@matrix.org>  Mon, 08 Mar 2021 13:51:50 +0000
 
 matrix-synapse-py3 (1.28.0) stable; urgency=medium
 
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 2c24d4ae036067bc5d90b3ba1e6bef91e8413f08..56ca888862b27383afccb91702d37ab0724ef1e8 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -48,7 +48,7 @@ try:
 except ImportError:
     pass
 
-__version__ = "1.29.0rc1"
+__version__ = "1.29.0"
 
 if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
     # We import here so that we don't have to install a bunch of deps when