diff --git a/.rubocop_todo/layout/array_alignment.yml b/.rubocop_todo/layout/array_alignment.yml
index 88d093954c6bd21dd4b8507482f1324b0943703b..8d040f5738ec7437e617e53316a4a42e48ba7e5b 100644
--- a/.rubocop_todo/layout/array_alignment.yml
+++ b/.rubocop_todo/layout/array_alignment.yml
@@ -166,9 +166,6 @@ Layout/ArrayAlignment:
     - 'lib/gitlab/conflict/file_collection.rb'
     - 'lib/gitlab/content_security_policy/config_loader.rb'
     - 'lib/gitlab/database/background_migration/batched_job.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/team.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/trial.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/verify.rb'
     - 'lib/gitlab/email/receiver.rb'
     - 'lib/gitlab/etag_caching/router/rails.rb'
     - 'lib/gitlab/git/diff.rb'
diff --git a/.rubocop_todo/layout/first_array_element_indentation.yml b/.rubocop_todo/layout/first_array_element_indentation.yml
index fa90c937813f6aff361d1bb3fca664e19ff0a7b5..05f12783fc67d5a7a36b2851d1ce7778daae644a 100644
--- a/.rubocop_todo/layout/first_array_element_indentation.yml
+++ b/.rubocop_todo/layout/first_array_element_indentation.yml
@@ -44,9 +44,6 @@ Layout/FirstArrayElementIndentation:
     - 'ee/spec/requests/api/saml_group_links_spec.rb'
     - 'ee/spec/services/audit_events/export_csv_service_spec.rb'
     - 'ee/spec/services/groups/seat_usage_export_service_spec.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/team.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/trial.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/verify.rb'
     - 'lib/gitlab/object_hierarchy.rb'
     - 'lib/gitlab/project_authorizations.rb'
     - 'qa/qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb'
diff --git a/.rubocop_todo/layout/line_end_string_concatenation_indentation.yml b/.rubocop_todo/layout/line_end_string_concatenation_indentation.yml
index 25ab7ecb1ef3316768db32eadd708aa136ba9173..28edc75a55a6ddf41a85d22feb4cbd46b612d0ff 100644
--- a/.rubocop_todo/layout/line_end_string_concatenation_indentation.yml
+++ b/.rubocop_todo/layout/line_end_string_concatenation_indentation.yml
@@ -266,7 +266,6 @@ Layout/LineEndStringConcatenationIndentation:
     - 'spec/lib/gitlab/ci/templates/themekit_gitlab_ci_yaml_spec.rb'
     - 'spec/lib/gitlab/database/background_migration/batched_migration_runner_spec.rb'
     - 'spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb'
     - 'spec/lib/gitlab/github_import/markdown_text_spec.rb'
     - 'spec/lib/gitlab/github_import/representation/issue_event_spec.rb'
     - 'spec/lib/gitlab/insecure_key_fingerprint_spec.rb'
diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml
index df594c22dea844e5bee77a1464db485ad05ccded..936ca4b0122ac541152ddafa4e3898fed6ff0d5c 100644
--- a/.rubocop_todo/layout/line_length.yml
+++ b/.rubocop_todo/layout/line_length.yml
@@ -1262,7 +1262,6 @@ Layout/LineLength:
     - 'ee/lib/gitlab/elastic/group_search_results.rb'
     - 'ee/lib/gitlab/elastic/project_search_results.rb'
     - 'ee/lib/gitlab/elastic/search_results.rb'
-    - 'ee/lib/gitlab/email/message/account_validation.rb'
     - 'ee/lib/gitlab/expiring_subscription_message.rb'
     - 'ee/lib/gitlab/geo.rb'
     - 'ee/lib/gitlab/geo/geo_node_status_check.rb'
@@ -2687,13 +2686,6 @@ Layout/LineLength:
     - 'lib/gitlab/email/failure_handler.rb'
     - 'lib/gitlab/email/handler/create_issue_handler.rb'
     - 'lib/gitlab/email/handler/create_merge_request_handler.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/base.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/create.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/helper.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/team.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/trial.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/trial_short.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/verify.rb'
     - 'lib/gitlab/encrypted_command_base.rb'
     - 'lib/gitlab/encrypted_configuration.rb'
     - 'lib/gitlab/endpoint_attributes/config.rb'
@@ -3868,12 +3860,6 @@ Layout/LineLength:
     - 'spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb'
     - 'spec/lib/gitlab/email/handler_spec.rb'
     - 'spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/admin_verify_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/team_short_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/team_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/trial_short_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/trial_spec.rb'
     - 'spec/lib/gitlab/email/receiver_spec.rb'
     - 'spec/lib/gitlab/email/reply_parser_spec.rb'
     - 'spec/lib/gitlab/emoji_spec.rb'
diff --git a/.rubocop_todo/lint/ambiguous_operator_precedence.yml b/.rubocop_todo/lint/ambiguous_operator_precedence.yml
index f21c101d4a2e06d40d169ead1e8396082e6f9a2c..19816ce1f85ca73a249b1a55cdc3f9d10190ca5e 100644
--- a/.rubocop_todo/lint/ambiguous_operator_precedence.yml
+++ b/.rubocop_todo/lint/ambiguous_operator_precedence.yml
@@ -67,7 +67,6 @@ Lint/AmbiguousOperatorPrecedence:
     - 'lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb'
     - 'lib/gitlab/database/postgres_hll/buckets.rb'
     - 'lib/gitlab/database/query_analyzers/prevent_cross_database_modification.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/helper.rb'
     - 'lib/gitlab/i18n/po_linter.rb'
     - 'lib/gitlab/import_export/project/relation_factory.rb'
     - 'lib/gitlab/memory/instrumentation.rb'
diff --git a/.rubocop_todo/rails/output_safety.yml b/.rubocop_todo/rails/output_safety.yml
index 85388e8a1da79947b6d74235888d8ab187fc8de4..36628384477d9cd66595d2ece2b74f264d424806 100644
--- a/.rubocop_todo/rails/output_safety.yml
+++ b/.rubocop_todo/rails/output_safety.yml
@@ -118,7 +118,6 @@ Rails/OutputSafety:
     - 'ee/app/helpers/push_rules_helper.rb'
     - 'ee/app/models/integrations/github.rb'
     - 'ee/lib/ee/gitlab/namespace_storage_size_error_message.rb'
-    - 'ee/lib/gitlab/email/message/account_validation.rb'
     - 'ee/lib/gitlab/expiring_subscription_message.rb'
     - 'ee/lib/gitlab/licenses/submit_license_usage_data_banner.rb'
     - 'ee/lib/gitlab/manual_quarterly_co_term_banner.rb'
@@ -139,9 +138,6 @@ Rails/OutputSafety:
     - 'lib/gitlab/diff/inline_diff_marker.rb'
     - 'lib/gitlab/diff/line.rb'
     - 'lib/gitlab/diff/rendered/notebook/diff_file_helper.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/helper.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/trial.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/verify.rb'
     - 'lib/gitlab/highlight.rb'
     - 'lib/gitlab/observability.rb'
     - 'lib/gitlab/other_markup.rb'
diff --git a/.rubocop_todo/rspec/before_all_role_assignment.yml b/.rubocop_todo/rspec/before_all_role_assignment.yml
index 3d4ee2f03694299cde408d3de24d8b0cac4e615a..8f9e618d47cf78145d5c3c377fd2bf5c248d7958 100644
--- a/.rubocop_todo/rspec/before_all_role_assignment.yml
+++ b/.rubocop_todo/rspec/before_all_role_assignment.yml
@@ -1157,7 +1157,6 @@ RSpec/BeforeAllRoleAssignment:
     - 'spec/lib/gitlab/search_results_spec.rb'
     - 'spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb'
     - 'spec/lib/gitlab/tree_summary_spec.rb'
-    - 'spec/mailers/emails/in_product_marketing_spec.rb'
     - 'spec/models/ci/bridge_spec.rb'
     - 'spec/models/ci/catalog/listing_spec.rb'
     - 'spec/models/ci/pipeline_spec.rb'
diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml
index e76e33b35a3297d3b439a8cdc9d374b89722e207..3b6729a320b3135d999d8af8b69c4471212a58cd 100644
--- a/.rubocop_todo/rspec/context_wording.yml
+++ b/.rubocop_todo/rspec/context_wording.yml
@@ -1778,13 +1778,6 @@ RSpec/ContextWording:
     - 'spec/lib/gitlab/email/handler/service_desk_handler_spec.rb'
     - 'spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb'
     - 'spec/lib/gitlab/email/handler_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/admin_verify_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/team_short_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/team_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/trial_short_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/trial_spec.rb'
     - 'spec/lib/gitlab/email/message/repository_push_spec.rb'
     - 'spec/lib/gitlab/email/reply_parser_spec.rb'
     - 'spec/lib/gitlab/encoding_helper_spec.rb'
diff --git a/.rubocop_todo/rspec/factory_bot/avoid_create.yml b/.rubocop_todo/rspec/factory_bot/avoid_create.yml
index 2725b035d65f8e4759b85ff85568f5ad353371aa..b0758b9f65cf10fd10b28ab7b2d453a89f5de946 100644
--- a/.rubocop_todo/rspec/factory_bot/avoid_create.yml
+++ b/.rubocop_todo/rspec/factory_bot/avoid_create.yml
@@ -360,7 +360,6 @@ RSpec/FactoryBot/AvoidCreate:
     - 'spec/mailers/devise_mailer_spec.rb'
     - 'spec/mailers/emails/auto_devops_spec.rb'
     - 'spec/mailers/emails/groups_spec.rb'
-    - 'spec/mailers/emails/in_product_marketing_spec.rb'
     - 'spec/mailers/emails/issues_spec.rb'
     - 'spec/mailers/emails/merge_requests_spec.rb'
     - 'spec/mailers/emails/pages_domains_spec.rb'
diff --git a/.rubocop_todo/rspec/missing_feature_category.yml b/.rubocop_todo/rspec/missing_feature_category.yml
index 39d1c8eb3930d71436eb9d47d7c30ffac95a6296..f3dbdd498bccabed288cc7b27129fcdd5bcb9363 100644
--- a/.rubocop_todo/rspec/missing_feature_category.yml
+++ b/.rubocop_todo/rspec/missing_feature_category.yml
@@ -971,7 +971,6 @@ RSpec/MissingFeatureCategory:
     - 'ee/spec/mailers/ee/emails/projects_spec.rb'
     - 'ee/spec/mailers/emails/epics_spec.rb'
     - 'ee/spec/mailers/emails/group_memberships_spec.rb'
-    - 'ee/spec/mailers/emails/in_product_marketing_spec.rb'
     - 'ee/spec/mailers/emails/namespace_storage_usage_mailer_spec.rb'
     - 'ee/spec/mailers/emails/requirements_spec.rb'
     - 'ee/spec/mailers/emails/user_cap_spec.rb'
@@ -3493,16 +3492,6 @@ RSpec/MissingFeatureCategory:
     - 'spec/lib/gitlab/email/hook/delivery_metrics_observer_spec.rb'
     - 'spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb'
     - 'spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/admin_verify_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/team_short_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/team_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/trial_short_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/trial_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/verify_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing_spec.rb'
     - 'spec/lib/gitlab/email/message/repository_push_spec.rb'
     - 'spec/lib/gitlab/email/receiver_spec.rb'
     - 'spec/lib/gitlab/email/service_desk_receiver_spec.rb'
@@ -4463,7 +4452,6 @@ RSpec/MissingFeatureCategory:
     - 'spec/mailers/emails/auto_devops_spec.rb'
     - 'spec/mailers/emails/groups_spec.rb'
     - 'spec/mailers/emails/identity_verification_spec.rb'
-    - 'spec/mailers/emails/in_product_marketing_spec.rb'
     - 'spec/mailers/emails/merge_requests_spec.rb'
     - 'spec/mailers/emails/pages_domains_spec.rb'
     - 'spec/mailers/emails/pipelines_spec.rb'
diff --git a/.rubocop_todo/rspec/return_from_stub.yml b/.rubocop_todo/rspec/return_from_stub.yml
index 1a668f2d7e2bec8c319e2af4c444856a20fa34fe..7624216e8ed3a4df40ee971499d030031fd7cca5 100644
--- a/.rubocop_todo/rspec/return_from_stub.yml
+++ b/.rubocop_todo/rspec/return_from_stub.yml
@@ -137,7 +137,6 @@ RSpec/ReturnFromStub:
     - 'spec/lib/gitlab/daemon_spec.rb'
     - 'spec/lib/gitlab/database_importers/instance_administrators/create_group_spec.rb'
     - 'spec/lib/gitlab/diff/file_spec.rb'
-    - 'spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb'
     - 'spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb'
     - 'spec/lib/gitlab/exclusive_lease_helpers_spec.rb'
     - 'spec/lib/gitlab/external_authorization_spec.rb'
diff --git a/.rubocop_todo/rspec/scattered_let.yml b/.rubocop_todo/rspec/scattered_let.yml
index 479ff4fd8f92e846c164fcdf7898681f6c35f01e..4d93c6816cc21affbdfe4b12338018fd0361fdc2 100644
--- a/.rubocop_todo/rspec/scattered_let.yml
+++ b/.rubocop_todo/rspec/scattered_let.yml
@@ -176,7 +176,6 @@ RSpec/ScatteredLet:
     - 'spec/lib/gitlab/utils/measuring_spec.rb'
     - 'spec/lib/gitlab/zentao/client_spec.rb'
     - 'spec/lib/peek/views/external_http_spec.rb'
-    - 'spec/mailers/emails/in_product_marketing_spec.rb'
     - 'spec/mailers/notify_spec.rb'
     - 'spec/mailers/previews_spec.rb'
     - 'spec/migrations/20220329175119_remove_leftover_ci_job_artifact_deletions_spec.rb'
diff --git a/.rubocop_todo/style/format_string.yml b/.rubocop_todo/style/format_string.yml
index c45ddab84414ff956d6ce1e12ce657ab3532246a..fc52fd7574805084d9aeb6309555bd6bcda6e5c7 100644
--- a/.rubocop_todo/style/format_string.yml
+++ b/.rubocop_todo/style/format_string.yml
@@ -260,10 +260,6 @@ Style/FormatString:
     - 'lib/gitlab/database/postgres_hll/batch_distinct_counter.rb'
     - 'lib/gitlab/database/reindexing/reindex_concurrently.rb'
     - 'lib/gitlab/database_importers/instance_administrators/create_group.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/base.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/create.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/helper.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/verify.rb'
     - 'lib/gitlab/exceptions_app.rb'
     - 'lib/gitlab/github_import/importer/pull_request_merged_by_importer.rb'
     - 'lib/gitlab/github_import/importer/single_endpoint_issue_events_importer.rb'
diff --git a/.rubocop_todo/style/if_unless_modifier.yml b/.rubocop_todo/style/if_unless_modifier.yml
index ef4fca8270dbf91d71f7dbc58b3fced029607c2b..0f271a766b605acd1f0cff2b958664e28e05a6c7 100644
--- a/.rubocop_todo/style/if_unless_modifier.yml
+++ b/.rubocop_todo/style/if_unless_modifier.yml
@@ -814,7 +814,6 @@ Style/IfUnlessModifier:
     - 'lib/gitlab/database/transaction/observer.rb'
     - 'lib/gitlab/database/with_lock_retries.rb'
     - 'lib/gitlab/email/handler/service_desk_handler.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/base.rb'
     - 'lib/gitlab/email/message/repository_push.rb'
     - 'lib/gitlab/email/receiver.rb'
     - 'lib/gitlab/email/reply_parser.rb'
diff --git a/.rubocop_todo/style/string_concatenation.yml b/.rubocop_todo/style/string_concatenation.yml
index d899ff9d98fc794201602e76e688460a81a5eb89..d887a3b391b607d16461c29d73eda943aba1f90a 100644
--- a/.rubocop_todo/style/string_concatenation.yml
+++ b/.rubocop_todo/style/string_concatenation.yml
@@ -96,7 +96,6 @@ Style/StringConcatenation:
     - 'lib/gitlab/database/rename_reserved_paths_migration/v1/migration_classes.rb'
     - 'lib/gitlab/database/unidirectional_copy_trigger.rb'
     - 'lib/gitlab/email/handler/service_desk_handler.rb'
-    - 'lib/gitlab/email/message/in_product_marketing/helper.rb'
     - 'lib/gitlab/git.rb'
     - 'lib/gitlab/git/branch.rb'
     - 'lib/gitlab/git/tag.rb'
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb
index 77d32a55941a312e7d887682e29e22bcb3a9aebb..2f90579a5c259d940a00b6581cdb49d29b903af7 100644
--- a/app/mailers/notify.rb
+++ b/app/mailers/notify.rb
@@ -22,7 +22,6 @@ class Notify < ApplicationMailer
   include Emails::Groups
   include Emails::Reviews
   include Emails::ServiceDesk
-  include Emails::InProductMarketing
   include Emails::AdminNotification
   include Emails::IdentityVerification
   include Emails::Imports
diff --git a/ee/app/mailers/ee/emails/in_product_marketing.rb b/ee/app/mailers/ee/emails/in_product_marketing.rb
deleted file mode 100644
index 08f6076954a6eb0266a8fe5015e0cd265dfdd4d3..0000000000000000000000000000000000000000
--- a/ee/app/mailers/ee/emails/in_product_marketing.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-# frozen_string_literal: true
-
-module EE
-  module Emails
-    module InProductMarketing
-      def account_validation_email(pipeline, recipient_email)
-        @message = ::Gitlab::Email::Message::AccountValidation.new(pipeline)
-
-        mail_to(to: recipient_email, subject: @message.subject_line)
-      end
-    end
-  end
-end
diff --git a/app/mailers/emails/in_product_marketing.rb b/ee/app/mailers/emails/in_product_marketing.rb
similarity index 79%
rename from app/mailers/emails/in_product_marketing.rb
rename to ee/app/mailers/emails/in_product_marketing.rb
index cbadbe3e124e16e9ec5940ba11bf95c9df2e6a94..2e40d2adc719169b5ac661211943cfa7c6603d56 100644
--- a/app/mailers/emails/in_product_marketing.rb
+++ b/ee/app/mailers/emails/in_product_marketing.rb
@@ -12,6 +12,12 @@ module InProductMarketing
       'X-Mailgun-Tag' => 'marketing'
     }.freeze
 
+    def account_validation_email(pipeline, recipient_email)
+      @message = ::Gitlab::Email::Message::AccountValidation.new(pipeline)
+
+      mail_to(to: recipient_email, subject: @message.subject_line)
+    end
+
     private
 
     def mail_to(to:, subject:)
@@ -32,5 +38,3 @@ def mail_to(to:, subject:)
     end
   end
 end
-
-Emails::InProductMarketing.prepend_mod
diff --git a/ee/lib/gitlab/email/message/account_validation.rb b/ee/lib/gitlab/email/message/account_validation.rb
index fa065941dd665f72bc15caf6548468471fdadf80..7baad0acd58cc8f1c053ac7ddb5f13f40e7aa89c 100644
--- a/ee/lib/gitlab/email/message/account_validation.rb
+++ b/ee/lib/gitlab/email/message/account_validation.rb
@@ -4,7 +4,7 @@ module Gitlab
   module Email
     module Message
       class AccountValidation
-        include Gitlab::Email::Message::InProductMarketing::Helper
+        include SafeFormatHelper
         include Gitlab::Routing
 
         attr_accessor :pipeline, :format
@@ -23,12 +23,20 @@ def title
         end
 
         def body_line1
-          s_("AccountValidation|In order to use free compute minutes on shared runners, you'll need to validate your account using one of our verification options. If you prefer not to, you can run pipelines by bringing your own runners and disabling shared runners for your project.")
+          s_("AccountValidation|In order to use free compute minutes on shared runners, " \
+             "you'll need to validate your account using one of our verification options. " \
+             "If you prefer not to, you can run pipelines by bringing your own runners and " \
+             "disabling shared runners for your project.")
         end
 
         def body_line2
           format_options = strong_options.merge({ learn_more_link: learn_more_link })
-          s_("AccountValidation|Verification is required to discourage and reduce the abuse on GitLab infrastructure. If you verify with a credit or debit card, %{strong_start}GitLab will not charge your card, it will only be used for validation.%{strong_end} %{learn_more_link}").html_safe % format_options
+          safe_format(
+            s_("AccountValidation|Verification is required to discourage and reduce the abuse on GitLab " \
+               "infrastructure. If you verify with a credit or debit card, %{strong_start}GitLab will not " \
+               "charge your card, it will only be used for validation.%{strong_end} %{learn_more_link}"),
+            format_options
+          )
         end
 
         def cta_text
@@ -65,12 +73,93 @@ def cta2_link
           end
         end
 
+        def unsubscribe
+          parts = Gitlab.com? ? unsubscribe_com : unsubscribe_self_managed(nil)
+
+          case format
+          when :html
+            parts.join(' ')
+          else
+            parts.join("\n#{' ' * 16}")
+          end
+        end
+
+        def footer_links
+          links = [
+            [s_('InProductMarketing|Blog'), 'https://about.gitlab.com/blog'],
+            [s_('InProductMarketing|Twitter'), 'https://twitter.com/gitlab'],
+            [s_('InProductMarketing|Facebook'), 'https://www.facebook.com/gitlab'],
+            [s_('InProductMarketing|YouTube'), 'https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg']
+          ]
+          case format
+          when :html
+            links.map do |text, link|
+              ActionController::Base.helpers.link_to(text, link)
+            end
+          else
+            "| #{links.map { |text, link| [text, link].join(' ') }.join('\n| ')}"
+          end
+        end
+
+        def address
+          safe_format(
+            s_('InProductMarketing|%{strong_start}GitLab Inc.%{strong_end} 268 Bush Street, #350, ' \
+               'San Francisco, CA 94104, USA'),
+            strong_options
+          )
+        end
+
+        private
+
         def learn_more_link
           link(s_('AccountValidation|Learn more.'), 'https://about.gitlab.com/blog/2021/05/17/prevent-crypto-mining-abuse/')
         end
 
-        def unsubscribe
-          unsubscribe_message
+        def unsubscribe_link
+          unsubscribe_url = Gitlab.com? ? '%tag_unsubscribe_url%' : profile_notifications_url
+
+          link(s_('InProductMarketing|unsubscribe'), unsubscribe_url)
+        end
+
+        def unsubscribe_com
+          [
+            s_('InProductMarketing|If you no longer wish to receive marketing emails from us,'),
+            safe_format(
+              s_('InProductMarketing|you may %{unsubscribe_link} at any time.'), unsubscribe_link: unsubscribe_link
+            )
+          ]
+        end
+
+        def unsubscribe_self_managed(preferences_link)
+          [
+            safe_format(
+              s_('InProductMarketing|To opt out of these onboarding emails, %{unsubscribe_link}.'),
+              unsubscribe_link: unsubscribe_link
+            ),
+            safe_format(
+              s_("InProductMarketing|If you don't want to receive marketing emails directly from GitLab, " \
+                 "%{marketing_preference_link}."),
+              marketing_preference_link: preferences_link
+            )
+          ]
+        end
+
+        def strong_options
+          case format
+          when :html
+            { strong_start: '<b>'.html_safe, strong_end: '</b>'.html_safe }
+          else
+            { strong_start: '', strong_end: '' }
+          end
+        end
+
+        def link(text, link)
+          case format
+          when :html
+            ActionController::Base.helpers.link_to text, link
+          else
+            "#{text} (#{link})"
+          end
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/email/message/account_validation_spec.rb b/ee/spec/lib/gitlab/email/message/account_validation_spec.rb
index 3ae34864b87c85e5741a6164884960059d6dd102..0052d6e43344f0e0492b628673f2ed5141208e41 100644
--- a/ee/spec/lib/gitlab/email/message/account_validation_spec.rb
+++ b/ee/spec/lib/gitlab/email/message/account_validation_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe Gitlab::Email::Message::AccountValidation do
+RSpec.describe Gitlab::Email::Message::AccountValidation, feature_category: :instance_resiliency do
   let_it_be(:namespace) { create(:namespace) }
   let_it_be(:project) { create(:project, :repository, namespace: namespace) }
   let_it_be(:pipeline) { create(:ci_pipeline, project: project) }
@@ -22,5 +22,9 @@
     expect(message.cta2_text).to eq "I'll bring my own runners"
     expect(message.logo_path).to eq 'mailers/in_product_marketing/verify-2.png'
     expect(message.unsubscribe).to include('%tag_unsubscribe_url%')
+    expect(message.cta_link).to include('Validate your account')
+    expect(message.cta2_link).to include('bring my own runners')
+    expect(message.footer_links).to all(match(/Blog|Twitter|Facebook|YouTube/))
+    expect(message.address).to include('GitLab Inc')
   end
 end
diff --git a/ee/spec/mailers/emails/in_product_marketing_spec.rb b/ee/spec/mailers/emails/in_product_marketing_spec.rb
index 4d8e58f0d24958c59b933fc401cee9deb3da8801..cfc07441b52a81216748d1dc55aa252cb6ffe87b 100644
--- a/ee/spec/mailers/emails/in_product_marketing_spec.rb
+++ b/ee/spec/mailers/emails/in_product_marketing_spec.rb
@@ -3,12 +3,26 @@
 require 'spec_helper'
 require 'email_spec'
 
-RSpec.describe Emails::InProductMarketing do
+RSpec.describe Emails::InProductMarketing, feature_category: :instance_resiliency do
   include EmailSpec::Matchers
   include Gitlab::Routing.url_helpers
 
   let_it_be(:user) { create(:user) }
 
+  it 'has correct custom headers' do
+    headers = {
+      from: 'GitLab <team@gitlab.com>',
+      reply_to: 'GitLab <team@gitlab.com>',
+      'X-Mailgun-Track' => 'yes',
+      'X-Mailgun-Track-Clicks' => 'yes',
+      'X-Mailgun-Track-Opens' => 'yes',
+      'X-Mailgun-Tag' => 'marketing'
+    }
+
+    expect(described_class::FROM_ADDRESS).to be('GitLab <team@gitlab.com>')
+    expect(described_class::CUSTOM_HEADERS).to eq(headers)
+  end
+
   describe '#account_validation_email' do
     let_it_be(:namespace) { create(:namespace) }
     let_it_be(:project) { create(:project, :repository, namespace: namespace) }
diff --git a/lib/gitlab/email/message/in_product_marketing/helper.rb b/lib/gitlab/email/message/in_product_marketing/helper.rb
deleted file mode 100644
index 0770e5f4d7645aba0aa791d2ee1ebcb7972ef587..0000000000000000000000000000000000000000
--- a/lib/gitlab/email/message/in_product_marketing/helper.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
-  module Email
-    module Message
-      module InProductMarketing
-        module Helper
-          include ActionView::Context
-          include ActionView::Helpers::TagHelper
-
-          def footer_links
-            links = [
-              [s_('InProductMarketing|Blog'), 'https://about.gitlab.com/blog'],
-              [s_('InProductMarketing|Twitter'), 'https://twitter.com/gitlab'],
-              [s_('InProductMarketing|Facebook'), 'https://www.facebook.com/gitlab'],
-              [s_('InProductMarketing|YouTube'), 'https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg']
-            ]
-            case format
-            when :html
-              links.map do |text, link|
-                ActionController::Base.helpers.link_to(text, link)
-              end
-            else
-              '| ' + links.map do |text, link|
-                [text, link].join(' ')
-              end.join("\n| ")
-            end
-          end
-
-          def address
-            s_('InProductMarketing|%{strong_start}GitLab Inc.%{strong_end} 268 Bush Street, #350, San Francisco, CA 94104, USA').html_safe % strong_options
-          end
-
-          def unsubscribe_message(self_managed_preferences_link = nil)
-            parts = Gitlab.com? ? unsubscribe_com : unsubscribe_self_managed(self_managed_preferences_link)
-
-            case format
-            when :html
-              parts.join(' ')
-            else
-              parts.join("\n" + ' ' * 16)
-            end
-          end
-
-          private
-
-          def unsubscribe_link
-            unsubscribe_url = Gitlab.com? ? '%tag_unsubscribe_url%' : profile_notifications_url
-
-            link(s_('InProductMarketing|unsubscribe'), unsubscribe_url)
-          end
-
-          def unsubscribe_com
-            [
-              s_('InProductMarketing|If you no longer wish to receive marketing emails from us,'),
-              s_('InProductMarketing|you may %{unsubscribe_link} at any time.') % { unsubscribe_link: unsubscribe_link }
-            ]
-          end
-
-          def unsubscribe_self_managed(preferences_link)
-            [
-              s_('InProductMarketing|To opt out of these onboarding emails, %{unsubscribe_link}.') % { unsubscribe_link: unsubscribe_link },
-              s_("InProductMarketing|If you don't want to receive marketing emails directly from GitLab, %{marketing_preference_link}.") % { marketing_preference_link: preferences_link }
-            ]
-          end
-
-          def strong_options
-            case format
-            when :html
-              { strong_start: '<b>'.html_safe, strong_end: '</b>'.html_safe }
-            else
-              { strong_start: '', strong_end: '' }
-            end
-          end
-
-          def link(text, link)
-            case format
-            when :html
-              ActionController::Base.helpers.link_to text, link
-            else
-              "#{text} (#{link})"
-            end
-          end
-
-          def action_link(text, link)
-            case format
-            when :html
-              ActionController::Base.helpers.link_to text, link, target: '_blank', rel: 'noopener noreferrer'
-            else
-              [text, link].join(' >> ')
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb b/spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb
deleted file mode 100644
index a3c2d1b428e4747783dc866124dc7682f5af82f5..0000000000000000000000000000000000000000
--- a/spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Gitlab::Email::Message::InProductMarketing::Helper do
-  describe 'unsubscribe_message' do
-    include Gitlab::Routing
-
-    let(:dummy_class_with_helper) do
-      Class.new do
-        include Gitlab::Email::Message::InProductMarketing::Helper
-        include Gitlab::Routing
-
-        def initialize(format = :html)
-          @format = format
-        end
-
-        def default_url_options
-          {}
-        end
-
-        attr_accessor :format
-      end
-    end
-
-    let(:format) { :html }
-
-    subject(:class_with_helper) { dummy_class_with_helper.new(format) }
-
-    context 'for SaaS', :saas do
-      context 'format is HTML' do
-        it 'returns the correct HTML' do
-          message = "If you no longer wish to receive marketing emails from us, " \
-            "you may <a href=\"%tag_unsubscribe_url%\">unsubscribe</a> at any time."
-          expect(class_with_helper.unsubscribe_message).to match message
-        end
-      end
-
-      context 'format is text' do
-        let(:format) { :text }
-
-        it 'returns the correct string' do
-          message = "If you no longer wish to receive marketing emails from us, " \
-            "you may unsubscribe (%tag_unsubscribe_url%) at any time."
-          expect(class_with_helper.unsubscribe_message.squish).to match message
-        end
-      end
-    end
-
-    context 'self-managed' do
-      context 'format is HTML' do
-        it 'returns the correct HTML' do
-          preferences_link = "http://example.com/preferences"
-          message = "To opt out of these onboarding emails, " \
-            "<a href=\"#{profile_notifications_url}\">unsubscribe</a>. " \
-            "If you don't want to receive marketing emails directly from GitLab, #{preferences_link}."
-          expect(class_with_helper.unsubscribe_message(preferences_link))
-            .to match message
-        end
-      end
-
-      context 'format is text' do
-        let(:format) { :text }
-
-        it 'returns the correct string' do
-          preferences_link = "http://example.com/preferences"
-          message = "To opt out of these onboarding emails, " \
-            "unsubscribe (#{profile_notifications_url}). " \
-            "If you don't want to receive marketing emails directly from GitLab, #{preferences_link}."
-          expect(class_with_helper.unsubscribe_message(preferences_link).squish).to match message
-        end
-      end
-    end
-  end
-end
diff --git a/spec/mailers/emails/in_product_marketing_spec.rb b/spec/mailers/emails/in_product_marketing_spec.rb
deleted file mode 100644
index 23ee21bfb456a22dc1b907160f339cbe5336a470..0000000000000000000000000000000000000000
--- a/spec/mailers/emails/in_product_marketing_spec.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Emails::InProductMarketing do
-  it 'has correct custom headers' do
-    expect(described_class::FROM_ADDRESS).to be('GitLab <team@gitlab.com>')
-    expect(described_class::CUSTOM_HEADERS).to eq({
-      from: 'GitLab <team@gitlab.com>',
-      reply_to: 'GitLab <team@gitlab.com>',
-      'X-Mailgun-Track' => 'yes',
-      'X-Mailgun-Track-Clicks' => 'yes',
-      'X-Mailgun-Track-Opens' => 'yes',
-      'X-Mailgun-Tag' => 'marketing'
-    })
-  end
-end
diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml
index b58a2b4612c086aaec970a263cd84be89601feae..9458acb11fb6d0060fb5e0f6f3a82a38c6900d88 100644
--- a/spec/support/rspec_order_todo.yml
+++ b/spec/support/rspec_order_todo.yml
@@ -6242,16 +6242,6 @@
 - './spec/lib/gitlab/email/hook/delivery_metrics_observer_spec.rb'
 - './spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb'
 - './spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/admin_verify_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/base_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/team_short_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/team_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/trial_short_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/trial_spec.rb'
-- './spec/lib/gitlab/email/message/in_product_marketing/verify_spec.rb'
 - './spec/lib/gitlab/email/message/repository_push_spec.rb'
 - './spec/lib/gitlab/email/receiver_spec.rb'
 - './spec/lib/gitlab/email/reply_parser_spec.rb'
@@ -7265,7 +7255,6 @@
 - './spec/mailers/emails/admin_notification_spec.rb'
 - './spec/mailers/emails/auto_devops_spec.rb'
 - './spec/mailers/emails/groups_spec.rb'
-- './spec/mailers/emails/in_product_marketing_spec.rb'
 - './spec/mailers/emails/issues_spec.rb'
 - './spec/mailers/emails/merge_requests_spec.rb'
 - './spec/mailers/emails/pages_domains_spec.rb'