diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index b35dc3b00cbcd48df6cb12413bf73f844cfe88cd..bcddb889cf4ecc40991b68872162d0753c9fcaaf 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -88,6 +88,12 @@ def event_preposition(event)
     end
   end
 
+  def event_target_path(event)
+    return Gitlab::UrlBuilder.build(event.target, only_path: true) if event.work_item?
+
+    event.target_link_options
+  end
+
   def event_feed_title(event)
     words = []
     words << event.author_name
diff --git a/app/views/events/event/_common.html.haml b/app/views/events/event/_common.html.haml
index 93c6efc90836a55ab8fcbb898f274cdd01c91d33..1f6ac29bffc02853ed2e28b0ec2a4e5cb8ce01b6 100644
--- a/app/views/events/event/_common.html.haml
+++ b/app/views/events/event/_common.html.haml
@@ -8,7 +8,7 @@
     %span.event-type.d-inline-block.gl-mr-2{ class: event.action_name }
       = event.action_name
     %span.event-target-type.gl-mr-2= event.target_type_name
-    = link_to event.target_link_options, class: 'has-tooltip event-target-link gl-mr-2', title: event.target_title do
+    = link_to event_target_path(event), class: 'has-tooltip event-target-link gl-mr-2', title: event.target_title do
       = event.target.reference_link_text
     - unless event.milestone?
       %span.event-target-title.gl-text-overflow-ellipsis.gl-overflow-hidden.gl-mr-2{ dir: "auto" }
diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb
index 073cebeecd581a3de565ef40936b2da11691a91d..cc6804f0355138fb4a2c6ed19c40883da7a47b83 100644
--- a/spec/helpers/events_helper_spec.rb
+++ b/spec/helpers/events_helper_spec.rb
@@ -5,6 +5,25 @@
 RSpec.describe EventsHelper do
   include Gitlab::Routing
 
+  describe '#event_target_path' do
+    subject { helper.event_target_path(event.present) }
+
+    context 'when target is a work item' do
+      let(:work_item) { create(:work_item) }
+      let(:event) { create(:event, target: work_item, target_type: 'WorkItem') }
+
+      it { is_expected.to eq(Gitlab::UrlBuilder.build(work_item, only_path: true)) }
+    end
+
+    context 'when target is not a work item' do
+      let(:project) { create(:project) }
+      let(:issue) { create(:issue, project: project) }
+      let(:event) { create(:event, target: issue, project: project) }
+
+      it { is_expected.to eq([project, issue]) }
+    end
+  end
+
   describe '#event_commit_title' do
     let(:message) { 'foo & bar ' + 'A' * 70 + '\n' + 'B' * 80 }
 
diff --git a/spec/views/events/event/_common.html.haml_spec.rb b/spec/views/events/event/_common.html.haml_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..0de84e2fdb8b148b219215d89b4e2f39ed4da486
--- /dev/null
+++ b/spec/views/events/event/_common.html.haml_spec.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'events/event/_common.html.haml' do
+  let_it_be(:project) { create(:project) }
+  let_it_be(:issue) { create(:issue, project: project) }
+  let_it_be(:user) { create(:user) }
+
+  context 'when it is a work item event' do
+    let(:work_item) { create(:work_item, project: project) }
+
+    let(:event) do
+      create(:event, :created, project: project, target: work_item, target_type: 'WorkItem', author: user)
+    end
+
+    it 'renders the correct url' do
+      render partial: 'events/event/common', locals: { event: event.present }
+
+      expect(rendered).to have_link(
+        work_item.reference_link_text, href: "/#{project.full_path}/-/work_items/#{work_item.id}"
+      )
+    end
+  end
+
+  context 'when it is an isssue event' do
+    let(:issue) { create(:issue, project: project) }
+
+    let(:event) do
+      create(:event, :created, project: project, target: issue, author: user)
+    end
+
+    it 'renders the correct url' do
+      render partial: 'events/event/common', locals: { event: event.present }
+
+      expect(rendered).to have_link(issue.reference_link_text, href: "/#{project.full_path}/-/issues/#{issue.iid}")
+    end
+  end
+end