diff --git a/conduwuit-example.toml b/conduwuit-example.toml
index 450fefaf47c4038bf6f53bb560db4c70a174c8ab..a07b3d66083f16a206e134c74a52cf56f3d3f205 100644
--- a/conduwuit-example.toml
+++ b/conduwuit-example.toml
@@ -196,6 +196,10 @@ enable_lightning_bolt = false
 # Config option to control outgoing presence updates/requests. Defaults to false.
 # This option sends presence updates to other servers, but does not receive any unless `allow_incoming_presence` is true.
 # Note that presence on conduwuit is very fast unlike Synapse's.
+#
+# Warning: Outgoing federated presence is not spec compliant due to relying on PDUs and EDUs combined.
+# Outgoing presence will not be very reliable due to this and any issues with federated outgoing presence are very likely attributed to this issue.
+# Incoming presence and local presence are unaffected.
 #allow_outgoing_presence = false
 
 # Config option to control how many seconds before presence updates that you are idle. Defaults to 5 minutes.
diff --git a/src/main.rs b/src/main.rs
index a4f3754ab26c9ab557e5bf80c2dbda40d7cb29c0..5ac3ef59d9eacd5d1345496018b8c7eef0633111 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -164,6 +164,10 @@ async fn main() {
         If this is not the desired behaviour, please disable `allow_registration` and set a registration token.");
     }
 
+    if config.allow_outgoing_presence {
+        warn!("! Outgoing federated presence is not spec compliant due to relying on PDUs and EDUs combined.\nOutgoing presence will not be very reliable due to this and any issues with federated outgoing presence are very likely attributed to this issue.\nIncoming presence and local presence are unaffected.");
+    }
+
     info!("Starting server");
     if let Err(e) = run_server().await {
         error!("Critical error running server: {}", e);
diff --git a/src/service/globals/mod.rs b/src/service/globals/mod.rs
index ad8f4a4c7bab9e66b79f1f4b1c48e2870028c82f..54b410e9b3b4158164bc6197b7f251684c5187d4 100644
--- a/src/service/globals/mod.rs
+++ b/src/service/globals/mod.rs
@@ -395,7 +395,7 @@ pub fn allow_incoming_presence(&self) -> bool {
         self.config.allow_incoming_presence
     }
 
-    pub fn allow_outcoming_presence(&self) -> bool {
+    pub fn allow_outgoing_presence(&self) -> bool {
         self.config.allow_outgoing_presence
     }
 
diff --git a/src/service/sending/mod.rs b/src/service/sending/mod.rs
index 9a12f7b432fd61dcdf264d39a91c84cf8288ed98..38034afc441d5dd635b96d88441ff27e93e23e16 100644
--- a/src/service/sending/mod.rs
+++ b/src/service/sending/mod.rs
@@ -287,7 +287,7 @@ pub fn select_edus(&self, server_name: &ServerName) -> Result<(Vec<Vec<u8>>, u64
                     .filter(|user_id| user_id.server_name() == services().globals.server_name()),
             );
 
-            if services().globals.allow_outcoming_presence() {
+            if services().globals.allow_outgoing_presence() {
                 // Look for presence updates in this room
                 let mut presence_updates = Vec::new();