diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb
index 3db2290855f..d6fadb3ba37 100644
--- a/app/controllers/topics_controller.rb
+++ b/app/controllers/topics_controller.rb
@@ -868,7 +868,7 @@ class TopicsController < ApplicationController
 
     operation = params
       .require(:operation)
-      .permit(:type, :group, :category_id, :notification_level_id, tags: [])
+      .permit(:type, :group, :category_id, :notification_level_id, *DiscoursePluginRegistry.permitted_bulk_action_parameters, tags: [])
       .to_h.symbolize_keys
 
     raise ActionController::ParameterMissing.new(:operation_type) if operation[:type].blank?
diff --git a/lib/discourse_plugin_registry.rb b/lib/discourse_plugin_registry.rb
index 93e2c117f30..9e87e1374d9 100644
--- a/lib/discourse_plugin_registry.rb
+++ b/lib/discourse_plugin_registry.rb
@@ -82,6 +82,8 @@ class DiscoursePluginRegistry
   define_filtered_register :api_parameter_routes
   define_filtered_register :api_key_scope_mappings
 
+  define_filtered_register :permitted_bulk_action_parameters
+
   def self.register_auth_provider(auth_provider)
     self.auth_providers << auth_provider
   end
diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb
index e0dec5ff24e..4729223a9e5 100644
--- a/lib/plugin/instance.rb
+++ b/lib/plugin/instance.rb
@@ -899,4 +899,8 @@ class Plugin::Instance
     end
     nil
   end
+
+  def register_permitted_bulk_action_parameter(name)
+    DiscoursePluginRegistry.register_permitted_bulk_action_parameter(name, self)
+  end
 end