diff --git a/app/assets/stylesheets/startup/startup-signin.scss b/app/assets/stylesheets/startup/startup-signin.scss
index 6902a67fbb7beb44a3c5e82be5f12547cf03aa95..34f1a7d26e4ea3227554083f90754fc12a9c0502 100644
--- a/app/assets/stylesheets/startup/startup-signin.scss
+++ b/app/assets/stylesheets/startup/startup-signin.scss
@@ -294,11 +294,6 @@ fieldset:disabled a.btn {
 .mb-3 {
   margin-bottom: 1rem !important;
 }
-@media (min-width: 576px) {
-  .mt-sm-0 {
-    margin-top: 0 !important;
-  }
-}
 .text-center {
   text-align: center !important;
 }
@@ -823,6 +818,11 @@ svg {
 .gl-mb-5 {
   margin-bottom: 1rem;
 }
+@media (min-width: 36rem) {
+  .gl-sm-mt-0 {
+    margin-top: 0;
+  }
+}
 .gl-text-left {
   text-align: left;
 }
diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb
index ef737b25bc784acf5be4adad09d54cf59c255326..117f662fec6775e3127330543603db0e3492e8ee 100644
--- a/app/helpers/sessions_helper.rb
+++ b/app/helpers/sessions_helper.rb
@@ -1,6 +1,15 @@
 # frozen_string_literal: true
 
 module SessionsHelper
+  include Gitlab::Utils::StrongMemoize
+
+  def recently_confirmed_com?
+    strong_memoize(:recently_confirmed_com) do
+      ::Gitlab.dev_env_or_com? &&
+        !!flash[:notice]&.include?(t(:confirmed, scope: [:devise, :confirmations]))
+    end
+  end
+
   def unconfirmed_email?
     flash[:alert] == t(:unconfirmed, scope: [:devise, :failure])
   end
diff --git a/app/views/layouts/devise.html.haml b/app/views/layouts/devise.html.haml
index ae7c160c060b1cf596ff32d14fa51f389d0bf900..3acc41f04b76105fddffc6932e86d8f1bf58862d 100644
--- a/app/views/layouts/devise.html.haml
+++ b/app/views/layouts/devise.html.haml
@@ -17,25 +17,26 @@
                 = current_appearance&.title.presence || "GitLab"
           .row.mb-3
             .col-sm-7.order-12.order-sm-1.brand-holder
-              = brand_image
-              - if current_appearance&.description?
-                = brand_text
-              - else
-                %h3.mt-sm-0
-                  = _('A complete DevOps platform')
+              - unless recently_confirmed_com?
+                = brand_image
+                - if current_appearance&.description?
+                  = brand_text
+                - else
+                  %h3.gl-sm-mt-0
+                    = _('A complete DevOps platform')
 
-                %p
-                  = _('GitLab is a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security.')
+                  %p
+                    = _('GitLab is a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security.')
 
-                %p
-                  = _('This is a self-managed instance of GitLab.')
+                  %p
+                    = _('This is a self-managed instance of GitLab.')
 
               - if Gitlab::CurrentSettings.sign_in_text.present?
                 = markdown_field(Gitlab::CurrentSettings.current_application_settings, :sign_in_text)
 
               = render_if_exists 'layouts/devise_help_text'
 
-            .col-sm-5.order-1.order-sm-12.new-session-forms-container
+            .col-sm-5.order-1.new-session-forms-container{ class: recently_confirmed_com? ? 'order-sm-first' : 'order-sm-12' }
               = yield
 
       = render 'devise/shared/footer', footer_message: footer_message
diff --git a/ee/app/assets/stylesheets/startup/startup-signin.scss b/ee/app/assets/stylesheets/startup/startup-signin.scss
index 6902a67fbb7beb44a3c5e82be5f12547cf03aa95..34f1a7d26e4ea3227554083f90754fc12a9c0502 100644
--- a/ee/app/assets/stylesheets/startup/startup-signin.scss
+++ b/ee/app/assets/stylesheets/startup/startup-signin.scss
@@ -294,11 +294,6 @@ fieldset:disabled a.btn {
 .mb-3 {
   margin-bottom: 1rem !important;
 }
-@media (min-width: 576px) {
-  .mt-sm-0 {
-    margin-top: 0 !important;
-  }
-}
 .text-center {
   text-align: center !important;
 }
@@ -823,6 +818,11 @@ svg {
 .gl-mb-5 {
   margin-bottom: 1rem;
 }
+@media (min-width: 36rem) {
+  .gl-sm-mt-0 {
+    margin-top: 0;
+  }
+}
 .gl-text-left {
   text-align: left;
 }
diff --git a/spec/helpers/sessions_helper_spec.rb b/spec/helpers/sessions_helper_spec.rb
index 027943aecee235c8f0a024322c338a09b7386836..816e43669bd0e10bc0c68d09ff4986ee37cff637 100644
--- a/spec/helpers/sessions_helper_spec.rb
+++ b/spec/helpers/sessions_helper_spec.rb
@@ -3,6 +3,42 @@
 require 'spec_helper'
 
 RSpec.describe SessionsHelper do
+  describe '#recently_confirmed_com?' do
+    subject { helper.recently_confirmed_com? }
+
+    context 'when on .com' do
+      before do
+        allow(Gitlab).to receive(:dev_env_or_com?).and_return(true)
+      end
+
+      it 'when flash notice is empty it is false' do
+        flash[:notice] = nil
+        expect(subject).to be false
+      end
+
+      it 'when flash notice is anything it is false' do
+        flash[:notice] = 'hooray!'
+        expect(subject).to be false
+      end
+
+      it 'when flash notice is devise confirmed message it is true' do
+        flash[:notice] = t(:confirmed, scope: [:devise, :confirmations])
+        expect(subject).to be true
+      end
+    end
+
+    context 'when not on .com' do
+      before do
+        allow(Gitlab).to receive(:dev_env_or_com?).and_return(false)
+      end
+
+      it 'when flash notice is devise confirmed message it is false' do
+        flash[:notice] = t(:confirmed, scope: [:devise, :confirmations])
+        expect(subject).to be false
+      end
+    end
+  end
+
   describe '#unconfirmed_email?' do
     it 'returns true when the flash alert contains a devise failure unconfirmed message' do
       flash[:alert] = t(:unconfirmed, scope: [:devise, :failure])
diff --git a/spec/views/devise/sessions/new.html.haml_spec.rb b/spec/views/devise/sessions/new.html.haml_spec.rb
index b5c69f4f04d051f05c4a102ab9b2d31c192f97db..d3552bf2e5a722b921671a57d988f778bdd51cd1 100644
--- a/spec/views/devise/sessions/new.html.haml_spec.rb
+++ b/spec/views/devise/sessions/new.html.haml_spec.rb
@@ -3,6 +3,32 @@
 require 'spec_helper'
 
 RSpec.describe 'devise/sessions/new' do
+  describe 'marketing text' do
+    subject { render(template: 'devise/sessions/new', layout: 'layouts/devise') }
+
+    before do
+      stub_devise
+      disable_captcha
+      allow(Gitlab).to receive(:dev_env_or_com?).and_return(true)
+    end
+
+    it 'when flash is anything it renders marketing text' do
+      flash[:notice] = "You can't do that"
+
+      subject
+
+      expect(rendered).to have_content('A complete DevOps platform')
+    end
+
+    it 'when flash notice is devise confirmed message it hides marketing text' do
+      flash[:notice] = t(:confirmed, scope: [:devise, :confirmations])
+
+      subject
+
+      expect(rendered).not_to have_content('A complete DevOps platform')
+    end
+  end
+
   describe 'ldap' do
     include LdapHelpers