diff --git a/changelog.d/13236.bugfix b/changelog.d/13236.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..7fddc4413dfd23c30b1331763ec1d3ec203e4a6a
--- /dev/null
+++ b/changelog.d/13236.bugfix
@@ -0,0 +1 @@
+Fix appservices not receiving room-less EDUs, like presence, if enabled.
\ No newline at end of file
diff --git a/synapse/appservice/scheduler.py b/synapse/appservice/scheduler.py
index de5e5216c223372799f5d3540fc96eb9ebaf6d18..6c8695346ff256993dff2be6116e8809d263cbf6 100644
--- a/synapse/appservice/scheduler.py
+++ b/synapse/appservice/scheduler.py
@@ -319,7 +319,9 @@ class _ServiceQueuer:
         rooms_of_interesting_users.update(event.room_id for event in events)
         # EDUs
         rooms_of_interesting_users.update(
-            ephemeral["room_id"] for ephemeral in ephemerals
+            ephemeral["room_id"]
+            for ephemeral in ephemerals
+            if ephemeral.get("room_id") is not None
         )
 
         # Look up the AS users in those rooms