diff --git a/plugins/chat/lib/chat/message_creator.rb b/plugins/chat/lib/chat/message_creator.rb
index 2228c09cc19..c97b22a7913 100644
--- a/plugins/chat/lib/chat/message_creator.rb
+++ b/plugins/chat/lib/chat/message_creator.rb
@@ -191,12 +191,14 @@ module Chat
         @chat_message.in_reply_to.thread_id = thread.id
       end
 
-      Chat::Publisher.publish_thread_created!(
-        @chat_message.chat_channel,
-        @chat_message.in_reply_to,
-        thread.id,
-        @staged_thread_id,
-      )
+      if @chat_message.chat_channel.threading_enabled
+        Chat::Publisher.publish_thread_created!(
+          @chat_message.chat_channel,
+          @chat_message.in_reply_to,
+          thread.id,
+          @staged_thread_id,
+        )
+      end
 
       @chat_message.thread_id = thread.id
 
diff --git a/plugins/chat/spec/components/chat/message_creator_spec.rb b/plugins/chat/spec/components/chat/message_creator_spec.rb
index 85127dbac18..a2e93e6c2f7 100644
--- a/plugins/chat/spec/components/chat/message_creator_spec.rb
+++ b/plugins/chat/spec/components/chat/message_creator_spec.rb
@@ -440,25 +440,50 @@ describe Chat::MessageCreator do
         expect(message.thread.original_message_user).to eq(reply_message.user)
       end
 
-      it "publishes the new thread" do
-        messages =
-          MessageBus.track_publish do
-            described_class.create(
-              chat_channel: public_chat_channel,
-              user: user1,
-              content: "this is a message",
-              in_reply_to_id: reply_message.id,
-            ).chat_message
-          end
+      context "when threading is enabled" do
+        it "publishes the new thread" do
+          public_chat_channel.update!(threading_enabled: true)
 
-        thread_created_message = messages.find { |m| m.data["type"] == "thread_created" }
-        expect(thread_created_message.channel).to eq("/chat/#{public_chat_channel.id}")
+          messages =
+            MessageBus.track_publish do
+              described_class.create(
+                chat_channel: public_chat_channel,
+                user: user1,
+                content: "this is a message",
+                in_reply_to_id: reply_message.id,
+              ).chat_message
+            end
+
+          thread_created_message = messages.find { |m| m.data["type"] == "thread_created" }
+          expect(thread_created_message.channel).to eq("/chat/#{public_chat_channel.id}")
+        end
+      end
+
+      context "when threading is disabled" do
+        it "doesn’t publish the new thread" do
+          public_chat_channel.update!(threading_enabled: false)
+
+          messages =
+            MessageBus.track_publish do
+              described_class.create(
+                chat_channel: public_chat_channel,
+                user: user1,
+                content: "this is a message",
+                in_reply_to_id: reply_message.id,
+              ).chat_message
+            end
+
+          thread_created_message = messages.find { |m| m.data["type"] == "thread_created" }
+          expect(thread_created_message).to be_nil
+        end
       end
 
       context "when a staged_thread_id is provided" do
         fab!(:existing_thread) { Fabricate(:chat_thread, channel: public_chat_channel) }
 
         it "creates a thread and publishes with the staged id" do
+          public_chat_channel.update!(threading_enabled: true)
+
           messages =
             MessageBus.track_publish do
               described_class.create(
diff --git a/plugins/chat/spec/requests/chat_controller_spec.rb b/plugins/chat/spec/requests/chat_controller_spec.rb
index ce50fb698db..be56b8959fa 100644
--- a/plugins/chat/spec/requests/chat_controller_spec.rb
+++ b/plugins/chat/spec/requests/chat_controller_spec.rb
@@ -388,6 +388,7 @@ RSpec.describe Chat::ChatController do
         context "when sending a message in a staged thread" do
           it "creates the thread and publishes with the staged id" do
             sign_in(user)
+            chat_channel.update!(threading_enabled: true)
 
             messages =
               MessageBus.track_publish do