diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb
index eac774210ae07d8591cd7e6a007cde0abd71ca50..41fbe1ae08f55c23755c1883f4fa8b8b66340d66 100644
--- a/app/services/issues/base_service.rb
+++ b/app/services/issues/base_service.rb
@@ -1,5 +1,6 @@
 module Issues
   class BaseService < ::BaseService
+    include Rails.application.routes.url_helpers
 
     private
 
@@ -7,8 +8,13 @@ module Issues
       Note.create_assignee_change_note(issue, issue.project, current_user, issue.assignee)
     end
 
-    def execute_hooks(issue)
-      issue.project.execute_hooks(issue.to_hook_data, :issue_hooks)
+    def execute_hooks(issue, action = 'open')
+      issue_data = issue.to_hook_data
+      issue_url = project_issue_url(id: issue.iid,
+                                    project_id: issue.project,
+                                    host: Settings.gitlab['url'])
+      issue_data[:object_attributes].merge!(url: issue_url, action: action)
+      issue.project.execute_hooks(issue_data, :issue_hooks)
     end
 
     def create_milestone_note(issue)
diff --git a/app/services/issues/close_service.rb b/app/services/issues/close_service.rb
index 85c0226ccab252b2504088f6ca11f6eb44304434..ffed13a12e11925bee71e1bcb1ed65858cf160a7 100644
--- a/app/services/issues/close_service.rb
+++ b/app/services/issues/close_service.rb
@@ -5,7 +5,7 @@ module Issues
         notification_service.close_issue(issue, current_user)
         event_service.close_issue(issue, current_user)
         create_note(issue, commit)
-        execute_hooks(issue)
+        execute_hooks(issue, 'close')
       end
 
       issue
diff --git a/app/services/issues/create_service.rb b/app/services/issues/create_service.rb
index d6137833bb9d2bab4a2b366c7ef049b7c33eaf67..6d05d417f1b3edb7b4deabca8926bb86089f9a8b 100644
--- a/app/services/issues/create_service.rb
+++ b/app/services/issues/create_service.rb
@@ -8,7 +8,7 @@ module Issues
         notification_service.new_issue(issue, current_user)
         event_service.open_issue(issue, current_user)
         issue.create_cross_references!(issue.project, current_user)
-        execute_hooks(issue)
+        execute_hooks(issue, 'open')
       end
 
       issue
diff --git a/app/services/issues/reopen_service.rb b/app/services/issues/reopen_service.rb
index a931398aff694a8a88edb1d50110a0d18b776890..b23d56258a8731745e90425d3d8583a65546d436 100644
--- a/app/services/issues/reopen_service.rb
+++ b/app/services/issues/reopen_service.rb
@@ -4,7 +4,7 @@ module Issues
       if issue.reopen
         event_service.reopen_issue(issue, current_user)
         create_note(issue)
-        execute_hooks(issue)
+        execute_hooks(issue, 'reopen')
       end
 
       issue
diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb
index b4a742b00370750e08386151d88b5a8a59104cba..169e1e95b4b9b010c28a8bfbb914be2cffeeebb3 100644
--- a/app/services/issues/update_service.rb
+++ b/app/services/issues/update_service.rb
@@ -23,7 +23,7 @@ module Issues
         end
 
         issue.notice_added_references(issue.project, current_user)
-        execute_hooks(issue)
+        execute_hooks(issue, 'update')
       end
 
       issue