diff --git a/config/events/schema.json b/config/events/schema.json
index e763a09ea9db4b995718b0e1dce451385d369e0b..8b0f89fbd1b44483b4807b696a7a13040e7812f8 100644
--- a/config/events/schema.json
+++ b/config/events/schema.json
@@ -41,7 +41,8 @@
         "enum": [
           "project",
           "user",
-          "namespace"
+          "namespace",
+          "feature_enabled_by_namespace_ids"
         ]
       }
     },
diff --git a/doc/development/internal_analytics/internal_event_instrumentation/event_definition_guide.md b/doc/development/internal_analytics/internal_event_instrumentation/event_definition_guide.md
index f899c8b9b2ffd6153045a5fd1c5cd75232183188..0d706b39e42c51b8f8132b3caf0c43a4be6b322b 100644
--- a/doc/development/internal_analytics/internal_event_instrumentation/event_definition_guide.md
+++ b/doc/development/internal_analytics/internal_event_instrumentation/event_definition_guide.md
@@ -28,7 +28,7 @@ Each event is defined in a separate YAML file consisting of the following fields
 | `internal_events`   | no       | Always `true` for events used in Internal Events.                                                                                                                                                                                                                                                                                |
 | `category`          | no       | Required for legacy events. Should not be used for Internal Events.                                                                                                                                                                                                                                                              |
 | `action`            | yes      | A unique name for the event. Only lowercase, numbers, and underscores are allowed. Use the format `<operation>_<target_of_operation>_<where/when>`. <br/><br/> Ex: `publish_go_module_to_the_registry_from_pipeline` <br/>`<operation> = publish`<br/>`<target> = go_module`<br/>`<when/where> = to_the_registry_from_pipeline`. |
-| `identifiers`       | no       | A list of identifiers sent with the event. Can be set to one or more of `project`, `user`, or `namespace`.                                                                                                                                                                                                                       |
+| `identifiers`       | no       | A list of identifiers sent with the event. Can be set to one or more of `project`, `user`, `namespace` or `feature_enabled_by_namespace_ids`                                                                                                                                                                                     |
 | `product_group`     | yes      | The [group](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/stages.yml) that owns the event.                                                                                                                                                                                                                       |
 | `milestone`         | no       | The milestone when the event is introduced.                                                                                                                                                                                                                                                                                      |
 | `introduced_by_url` | no       | The URL to the merge request that introduced the event.                                                                                                                                                                                                                                                                          |
diff --git a/scripts/internal_events/cli/event_definer.rb b/scripts/internal_events/cli/event_definer.rb
index 82c01ac4aad7eb60424c5558f4d6989ee00cf4ce..353adb9d4cbfc7906905f1e59a233894be80ef0a 100755
--- a/scripts/internal_events/cli/event_definer.rb
+++ b/scripts/internal_events/cli/event_definer.rb
@@ -27,10 +27,12 @@ class EventDefiner
                                '(ex - service_desk_request_received)',
       %w[namespace] => 'Use case: For namespace-level events without user interaction ' \
                        '(ex - stale_runners_cleaned_up)',
+      %w[feature_enabled_by_namespace_ids user] => 'Use case: For user actions attributable to multiple namespaces ' \
+                                                   '(ex - Code-Suggestions / Duo Pro)',
       %w[] => "Use case: For instance-level events without user interaction [LEAST COMMON]"
     }.freeze
 
-    IDENTIFIER_FORMATTING_BUFFER = "[#{IDENTIFIER_OPTIONS.keys.max_by(&:length).join(', ')}]".length
+    IDENTIFIER_FORMATTING_BUFFER = "[#{IDENTIFIER_OPTIONS.keys.map { |k| k.join(', ') }.max_by(&:length)}]".length
 
     attr_reader :cli, :event
 
@@ -95,7 +97,8 @@ def prompt_for_identifiers
 
       identifiers = prompt_for_array_selection(
         'Which identifiers are available when the event occurs?',
-        IDENTIFIER_OPTIONS.keys
+        IDENTIFIER_OPTIONS.keys,
+        per_page: IDENTIFIER_OPTIONS.length
       ) { |choice| format_identifier_choice(choice) }
 
       event.identifiers = identifiers if identifiers.any?
diff --git a/scripts/internal_events/cli/helpers/cli_inputs.rb b/scripts/internal_events/cli/helpers/cli_inputs.rb
index f8e9852381a20baf9840a704fa1474100de038b4..62a6618d4a25c3b6295b15792cdfa1c75bbfc593 100755
--- a/scripts/internal_events/cli/helpers/cli_inputs.rb
+++ b/scripts/internal_events/cli/helpers/cli_inputs.rb
@@ -4,14 +4,14 @@
 module InternalEventsCli
   module Helpers
     module CliInputs
-      def prompt_for_array_selection(message, choices, default = nil, &formatter)
+      def prompt_for_array_selection(message, choices, default = nil, **opts, &formatter)
         formatter ||= ->(choice) { choice.sort.join(", ") }
 
         choices = choices.map do |choice|
           { name: formatter.call(choice), value: choice }
         end
 
-        cli.select(message, choices, **select_opts) do |menu|
+        cli.select(message, choices, **select_opts, **opts) do |menu|
           menu.enum "."
           menu.default formatter.call(default) if default
         end
diff --git a/spec/fixtures/scripts/internal_events/events/event_with_feature_enabled_by_namespace_ids_identifier.yml b/spec/fixtures/scripts/internal_events/events/event_with_feature_enabled_by_namespace_ids_identifier.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3b116bea3301ee485dcf5fcbd6893d2418b85880
--- /dev/null
+++ b/spec/fixtures/scripts/internal_events/events/event_with_feature_enabled_by_namespace_ids_identifier.yml
@@ -0,0 +1,24 @@
+---
+description: Engineer uses Internal Event CLI to define a new event
+internal_events: true
+action: internal_events_cli_used
+identifiers:
+- feature_enabled_by_namespace_ids
+- user
+additional_properties:
+  label:
+    description: TODO
+  property:
+    description: TODO
+  value:
+    description: Time the CLI ran before closing (seconds)
+product_group: analytics_instrumentation
+milestone: '16.6'
+introduced_by_url: TODO
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
diff --git a/spec/fixtures/scripts/internal_events/new_events.yml b/spec/fixtures/scripts/internal_events/new_events.yml
index 97021344c69d7f93eaacd42ab66dc754ae3a26a0..84556633318f2420b23c97687370715078654726 100644
--- a/spec/fixtures/scripts/internal_events/new_events.yml
+++ b/spec/fixtures/scripts/internal_events/new_events.yml
@@ -75,7 +75,7 @@
     - "1\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances
     - "Internal Event CLI is opened\n" # Submit description
     - "internal_events_cli_opened\n" # Submit action name
-    - "6\n" # Select: None
+    - "7\n" # Select: None
     - "\n" # Select (add props): None! Continue to next step!
     - "\n" # Skip MR URL
     - "instrumentation" # Filters to the analytics instrumentation group
@@ -130,7 +130,7 @@
     - "y\n" # Yes --> Ready to start?
     - "Internal Event CLI is opened\n" # Submit description
     - "internal_events_cli_opened\n" # Submit action name
-    - "6\n" # Select: None
+    - "7\n" # Select: None
     - "\n" # Select (add props): None! Continue to next step!
     - "\n" # Skip MR URL
     - "instrumentation" # Filters to the analytics instrumentation group
@@ -248,7 +248,7 @@
     - "1\n" # Create another event
     - "Internal Event CLI is opened\n" # Submit description
     - "internal_events_cli_opened\n" # Submit action name
-    - "6\n" # Select: None
+    - "7\n" # Select: None
     - "\n" # Select (add props): None! Continue to next step!
     - "\n" # Skip MR URL
     - "instrumentation" # Filters to the analytics instrumentation group
@@ -286,3 +286,27 @@
     files:
     - path: config/events/internal_events_cli_used.yml
       content: spec/fixtures/scripts/internal_events/events/event_with_all_additional_properties.yml
+
+- description: Event with feature_enabled_by_namespace_ids identifier
+  inputs:
+    keystrokes:
+    - "1\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances
+    - "Engineer uses Internal Event CLI to define a new event\n" # Submit description
+    - "internal_events_cli_used\n" # Submit action name
+    - "6\n" # Select: [feature_enabled_by_namespace_ids, user]
+    - "\e[B\n" # Arrow down to & Select: String 1 (aka label)
+    - "\n" # Skip label description
+    - "\e[B\n" # Arrow down to: String 2 (aka property)
+    - "\n" # Skip property description
+    - "\e[B\n" # Arrow down to: Number (aka value)
+    - "Time the CLI ran before closing (seconds)\n" # value description
+    - "\n" # Skip MR URL
+    - "instrumentation" # Filters to the analytics instrumentation group
+    - "\n" # Accept analytics:monitor:analytics_instrumentation
+    - "1\n" # Select: [free, premium, ultimate]
+    - "y\n" # Create file
+    - "4\n" # Exit
+  outputs:
+    files:
+    - path: config/events/internal_events_cli_used.yml
+      content: spec/fixtures/scripts/internal_events/events/event_with_feature_enabled_by_namespace_ids_identifier.yml
diff --git a/spec/fixtures/scripts/internal_events/new_metrics.yml b/spec/fixtures/scripts/internal_events/new_metrics.yml
index 2614a78b1ee111112c8fc56f8b68be5db6b3c95e..1b56109c8744c3d0b44c76e73dcb0a08e3831cb6 100644
--- a/spec/fixtures/scripts/internal_events/new_metrics.yml
+++ b/spec/fixtures/scripts/internal_events/new_metrics.yml
@@ -244,7 +244,7 @@
     - "1\n" # Create an event
     - "Internal Event CLI is opened\n" # Submit description
     - "internal_events_cli_opened\n" # Submit action name
-    - "6\n" # Select: None
+    - "7\n" # Select: None
     - "\n" # Select (add props): None! Continue to next step!
     - "\n" # Skip MR URL
     - "instrumentation" # Filters to the analytics instrumentation group
diff --git a/spec/scripts/internal_events/cli_spec.rb b/spec/scripts/internal_events/cli_spec.rb
index 76cdf213cdbd56a5f4b39714875f594ac0c001bd..dc3abc33ef64ae3bcb96fb525e783c77ba3d86f9 100644
--- a/spec/scripts/internal_events/cli_spec.rb
+++ b/spec/scripts/internal_events/cli_spec.rb
@@ -1031,7 +1031,7 @@ def select_event_from_list
           "1\n", # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances
           "Internal Event CLI is opened\n", # Submit description
           "internal_events_cli_opened\n", # Submit action name
-          "6\n", # Select: None
+          "7\n", # Select: None
           "\n", # Select: None! Continue to next section!
           "\n", # Skip MR URL
           "analytics_instrumentation\n", # Input group
@@ -1104,7 +1104,7 @@ def select_event_from_list
           "1\n", # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances
           "Internal Event CLI is opened\n", # Submit description
           "internal_events_cli_opened\n", # Submit action name
-          "6\n", # Select: None
+          "7\n", # Select: None
           "\n", # Select: None! Continue to next section!
           "\n", # Skip MR URL
           "instrumentation\n", # Filter & select group