diff --git a/CHANGELOG b/CHANGELOG
index 7c1215ee470a296cd6f317d1e1d63f71699b90f6..4ce156e06db3305d6bfca16822fea1a588f73dd3 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,11 +1,7 @@
 Changelog
 =========
 
-0.6 (Unreleased)
-----------------
-
-- Always use username in sidebar (#89)
-- Fixed broken import because of missing transaction
+.. towncrier
 
 
 0.5.2 (2018-02-26)
diff --git a/changes/__init__.py b/changes/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/changes/changelog.d/89.bugfix b/changes/changelog.d/89.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..5338e87dbe2b41530f386f26d5361bebe1871906
--- /dev/null
+++ b/changes/changelog.d/89.bugfix
@@ -0,0 +1 @@
+Always use username in sidebar (#89)
diff --git a/changes/changelog.d/changelog.misc b/changes/changelog.d/changelog.misc
new file mode 100644
index 0000000000000000000000000000000000000000..46516abc7e5b6b54963db2e9f1ed38e45eaf43c9
--- /dev/null
+++ b/changes/changelog.d/changelog.misc
@@ -0,0 +1 @@
+Switched to towncrier for changelog management and compilation
diff --git a/changes/changelog.d/transaction-import.bugfix b/changes/changelog.d/transaction-import.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..0efe3f000da2c5de0f809032c318170bd8601c3c
--- /dev/null
+++ b/changes/changelog.d/transaction-import.bugfix
@@ -0,0 +1 @@
+Fixed broken import because of missing transaction
diff --git a/changes/template.rst b/changes/template.rst
new file mode 100644
index 0000000000000000000000000000000000000000..f4d94dee8e3d9b0fd548b30c8649c8c1856a1bb3
--- /dev/null
+++ b/changes/template.rst
@@ -0,0 +1,27 @@
+{% for section, _ in sections.items() %}
+{% if sections[section] %}
+{% for category, val in definitions.items() if category in sections[section]%}
+{{ definitions[category]['name'] }}:
+
+{% if definitions[category]['showcontent'] %}
+{% for text in sections[section][category].keys()|sort() %}
+- {{ text }}
+{% endfor %}
+
+{% else %}
+- {{ sections[section][category]['']|join(', ') }}
+
+{% endif %}
+{% if sections[section][category]|length == 0 %}
+No significant changes.
+
+{% else %}
+{% endif %}
+
+{% endfor %}
+{% else %}
+No significant changes.
+
+
+{% endif %}
+{% endfor %}
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..baea16861cd0cb3b81afa8c6561921148f8b1d68
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,33 @@
+[tool.towncrier]
+    package = "changes"
+    package_dir = ""
+    filename = "CHANGELOG"
+    directory = "changes/changelog.d/"
+    start_string = ".. towncrier\n"
+    template = "changes/template.rst"
+    issue_format = ""
+    title_format = "{version} (unreleased)"
+    underlines = "-"
+
+    [[tool.towncrier.section]]
+        path = ""
+
+    [[tool.towncrier.type]]
+        directory = "feature"
+        name = "Features"
+        showcontent = true
+
+    [[tool.towncrier.type]]
+        directory = "bugfix"
+        name = "Bugfixes"
+        showcontent = true
+
+    [[tool.towncrier.type]]
+        directory = "doc"
+        name = "Documentation"
+        showcontent = true
+
+    [[tool.towncrier.type]]
+        directory = "misc"
+        name = "Other"
+        showcontent = true