diff --git a/CHANGELOG b/CHANGELOG
index d9c8d38991da04c444576c31335f663129c031ba..3d92a81a5ca4a631be580cdeee100862f88fa09f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -55,6 +55,7 @@ v 7.11.0 (unreleased)
   - Add "Create Merge Request" buttons to commits and branches pages and push event.
   - Show user roles by comments.
   - Fix automatic blocking of auto-created users from Active Directory.
+  - Call merge request web hook for each new commits (Arthur Gautier)
 
 v 7.10.2
   - Fix CI links on MR page
diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb
index 66610a08a44045f924e2f02467edd98454e266c4..d0648da049b42a2e4882874e872950515a0bee63 100644
--- a/app/services/merge_requests/refresh_service.rb
+++ b/app/services/merge_requests/refresh_service.rb
@@ -10,6 +10,7 @@ module MergeRequests
 
       close_merge_requests
       reload_merge_requests
+      execute_mr_web_hooks
       comment_mr_with_commits
 
       true
@@ -88,6 +89,20 @@ module MergeRequests
       end
     end
 
+    # Call merge request webhook with update branches
+    def execute_mr_web_hooks
+      merge_requests = @project.origin_merge_requests.opened
+        .where(source_branch: @branch_name)
+        .to_a
+      merge_requests += @fork_merge_requests.where(source_branch: @branch_name)
+        .to_a
+      merge_requests = filter_merge_requests(merge_requests)
+
+      merge_requests.each do |merge_request|
+        execute_hooks(merge_request, 'update')
+      end
+    end
+
     def filter_merge_requests(merge_requests)
       merge_requests.uniq.select(&:source_project)
     end
diff --git a/doc/web_hooks/web_hooks.md b/doc/web_hooks/web_hooks.md
index 010825551929e6791e1c5c59e0c737fb704da7d1..d140f3a457acb109b874460011c85ae91ea5a47b 100644
--- a/doc/web_hooks/web_hooks.md
+++ b/doc/web_hooks/web_hooks.md
@@ -143,7 +143,7 @@ X-Gitlab-Event: Issue Hook
 
 ## Merge request events
 
-Triggered when a new merge request is created or an existing merge request was updated/merged/closed.
+Triggered when a new merge request is created, an existing merge request was updated/merged/closed or a commit is added in the source branch.
 
 **Request header**:
 
diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb
index 879df0c9c67655bfcf7880aab8c7e5cffe8bc0ac..0f9b65678dfedef93263043626569db3fb895424 100644
--- a/spec/services/merge_requests/refresh_service_spec.rb
+++ b/spec/services/merge_requests/refresh_service_spec.rb
@@ -30,11 +30,18 @@ describe MergeRequests::RefreshService do
     end
 
     context 'push to origin repo source branch' do
+      let(:refresh_service) { service.new(@project, @user) }
       before do
-        service.new(@project, @user).execute(@oldrev, @newrev, 'refs/heads/master')
+        allow(refresh_service).to receive(:execute_hooks)
+        refresh_service.execute(@oldrev, @newrev, 'refs/heads/master')
         reload_mrs
       end
 
+      it 'should execute hooks with update action' do
+        expect(refresh_service).to have_received(:execute_hooks).
+          with(@merge_request, 'update')
+      end
+
       it { expect(@merge_request.notes).not_to be_empty }
       it { expect(@merge_request).to be_open }
       it { expect(@fork_merge_request).to be_open }
@@ -54,11 +61,18 @@ describe MergeRequests::RefreshService do
     end
 
     context 'push to fork repo source branch' do
+      let(:refresh_service) { service.new(@fork_project, @user) }
       before do
-        service.new(@fork_project, @user).execute(@oldrev, @newrev, 'refs/heads/master')
+        allow(refresh_service).to receive(:execute_hooks)
+        refresh_service.execute(@oldrev, @newrev, 'refs/heads/master')
         reload_mrs
       end
 
+      it 'should execute hooks with update action' do
+        expect(refresh_service).to have_received(:execute_hooks).
+          with(@fork_merge_request, 'update')
+      end
+
       it { expect(@merge_request.notes).to be_empty }
       it { expect(@merge_request).to be_open }
       it { expect(@fork_merge_request.notes.last.note).to include('Added 4 commits') }