diff --git a/district/wagtail_hooks.py b/district/wagtail_hooks.py
index ea3324d401ca66f0a0c822b8b60ade28a8417ab8..461e746ed8a2b4da06de45e92deb5cadb35d368a 100644
--- a/district/wagtail_hooks.py
+++ b/district/wagtail_hooks.py
@@ -1,3 +1,7 @@
+from wagtail.core import hooks
+
+from district.models import DistrictCenterPage, DistrictHomePage
+
 # import re
 #
 # from wagtail.core import hooks
@@ -44,3 +48,21 @@
 #
 #     web_pages_id_list = root_page.get_descendants().live().values_list("id", flat=True)
 #     return pages.filter(id__in=web_pages_id_list)
+
+
+@hooks.register("after_copy_page")
+def handle_copy_calendar(request, origin_page, copied_page):
+    if (
+        isinstance(copied_page, DistrictHomePage)
+        or isinstance(copied_page, DistrictCenterPage)
+    ) and origin_page.specific.calendar_id:
+        # get current calendar from origin page
+        calendar = origin_page.specific.calendar
+
+        # create copy of calendar
+        calendar.pk = None
+        calendar.save()
+
+        # set new copy of calendar
+        copied_page.calendar_id = calendar.id
+        copied_page.save()