diff --git a/config/config.sample.yaml b/config/config.sample.yaml
index 16c4883e0cf2199ff270fb86918cff938b81c2f4..f995e948abd86c94b06869face19ea5b84b99fc2 100644
--- a/config/config.sample.yaml
+++ b/config/config.sample.yaml
@@ -1,6 +1,8 @@
 bridge:
   domain: "localhost"
   homeserverUrl: "http://localhost:8008"
+  disablePresence: false
+  disableTypingNotifications: false
 auth:
   clientID: "12345" # Get from discord
   secret: "blah"
diff --git a/config/config.schema.yaml b/config/config.schema.yaml
index 3a1f19f58520cdd3b2039dde149d054378b5d9c9..f515f8bf98754aa32d0e7de1cbf72131d1ea0e38 100644
--- a/config/config.schema.yaml
+++ b/config/config.schema.yaml
@@ -10,6 +10,10 @@ properties:
             type: "string"
           homeserverUrl:
             type: "string"
+          disablePresence:
+            type: "boolean"
+          disableTypingNotifications:
+            type: "boolean"
     auth:
         type: "object"
         required: ["botToken"]
diff --git a/src/bot.ts b/src/bot.ts
index 40b8cc8059021f2fbb580d191f09f5b98d7b1a2f..2b7622cc1c0d03d895d9c89af33ed32b3a5ad07a 100644
--- a/src/bot.ts
+++ b/src/bot.ts
@@ -53,11 +53,15 @@ export class DiscordBot {
     return this.clientFactory.init().then(() => {
       return this.clientFactory.getClient();
     }).then((client: any) => {
-      client.on("typingStart", (c, u) => { this.OnTyping(c, u, true); });
-      client.on("typingStop", (c, u) => { this.OnTyping(c, u, false); });
+      if (!this.config.bridge.disableTypingNotifications) {
+        client.on("typingStart", (c, u) => { this.OnTyping(c, u, true); });
+        client.on("typingStop", (c, u) => { this.OnTyping(c, u, false);  });
+      }
+      if (!this.config.bridge.disablePresence) {
+        client.on("presenceUpdate", (_, newMember) => { this.UpdatePresence(newMember); });
+      }
       client.on("userUpdate", (_, newUser) => { this.UpdateUser(newUser); });
       client.on("channelUpdate", (_, newChannel) => { this.UpdateRooms(newChannel); });
-      client.on("presenceUpdate", (_, newMember) => { this.UpdatePresence(newMember); });
       client.on("guildMemberAdd", (newMember) => { this.AddGuildMember(newMember); });
       client.on("guildMemberRemove", (oldMember) => { this.RemoveGuildMember(oldMember); });
       client.on("guildMemberUpdate", (_, newMember) => { this.UpdateGuildMember(newMember); });
@@ -68,14 +72,17 @@ export class DiscordBot {
       });
       log.info("DiscordBot", "Discord bot client logged in.");
       this.bot = client;
-      /* Currently synapse sadly times out presence after a minute.
-       * This will set the presence for each user who is not offline */
-      this.presenceInterval = setInterval(
-        this.BulkPresenceUpdate.bind(this),
-        PRESENCE_UPDATE_DELAY,
-      );
-      this.BulkPresenceUpdate();
-      return null;
+
+      if (!this.config.bridge.disablePresence) {
+        /* Currently synapse sadly times out presence after a minute.
+         * This will set the presence for each user who is not offline */
+        this.presenceInterval = setInterval(
+            this.BulkPresenceUpdate.bind(this),
+            PRESENCE_UPDATE_DELAY,
+        );
+        this.BulkPresenceUpdate();
+        return null;
+      }
     });
   }
 
@@ -423,6 +430,10 @@ export class DiscordBot {
   }
 
   private BulkPresenceUpdate() {
+    if (this.config.bridge.disablePresence) {
+      return; // skip if there's nothing to do
+    }
+
     log.verbose("DiscordBot", "Bulk presence update");
     const members = [];
     for (const guild of this.bot.guilds.values()) {
@@ -439,6 +450,10 @@ export class DiscordBot {
 }
 
   private UpdatePresence(guildMember: Discord.GuildMember) {
+    if (this.config.bridge.disablePresence) {
+      return; // skip if there's nothing to do
+    }
+
     const intent = this.bridge.getIntentFromLocalpart(`_discord_${guildMember.id}`);
     try {
       const presence: any = {};
diff --git a/src/config.ts b/src/config.ts
index 124aebded0c3f96640d75dc9191a471641d7b73b..959f1448e7e56258c1538deccfd19b1dd8aac776 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -10,6 +10,8 @@ export class DiscordBridgeConfig {
 class DiscordBridgeConfigBridge {
   public domain: string;
   public homeserverUrl: string;
+  public disablePresence: boolean;
+  public disableTypingNotifications: boolean;
 }
 
 class DiscordBridgeConfigDatabase {