diff --git a/synapse/events/utils.py b/synapse/events/utils.py
index ce4fe552045a48d7f9e923016a19dd15b8b03f8c..f4b21ca517bea3c21141c8eac1a69bf029773a0f 100644
--- a/synapse/events/utils.py
+++ b/synapse/events/utils.py
@@ -132,7 +132,7 @@ def _copy_field(src, dst, field):
     key_to_move = field.pop(-1)
     sub_dict = src
     for sub_field in field:  # e.g. sub_field => "content"
-        if sub_field in sub_dict and type(sub_dict[sub_field]) == frozendict:
+        if sub_field in sub_dict and type(sub_dict[sub_field]) in [dict, frozendict]:
             sub_dict = sub_dict[sub_field]
         else:
             return