diff --git a/mautrix_amp/portal.py b/mautrix_amp/portal.py
index 68854f3dd5f45ec76eb0be56988531408967715b..b08f87ba4a14193ca96c30d500c44ec2bc1f844f 100644
--- a/mautrix_amp/portal.py
+++ b/mautrix_amp/portal.py
@@ -239,8 +239,9 @@ class Portal(DBPortal, BasePortal):
             self.avatar_hash = avatar_hash
             try:
                 self.avatar_mxc = await self.az.intent.upload_media(data=avatar)
-                await self.main_intent.set_room_avatar(self.mxid, self.avatar_mxc)
-                self.avatar_set = True
+                if self.mxid:
+                    await self.main_intent.set_room_avatar(self.mxid, self.avatar_mxc)
+                    self.avatar_set = True
             except Exception:
                 self.log.exception("Failed to set room avatar")
                 self.avatar_set = False
@@ -393,6 +394,12 @@ class Portal(DBPortal, BasePortal):
                 "redact": 0
             }
         })
+        if self.avatar_mxc:
+            initial_state.append({
+                "type": str(EventType.ROOM_AVATAR),
+                "content": {"url": self.avatar_mxc},
+            })
+            self.avatar_set = True
 
         self.mxid = await self.az.intent.create_room(name=self.name,
                                                      is_direct=self.is_direct,