diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java
index 20b09be..c34baf0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/Module.java
@@ -81,7 +81,7 @@
             @Override
             protected void configure() {
               get(PROJECT_KIND, "reviewers").to(GetReviewers.class);
-              put(PROJECT_KIND, "reviewers").to(PutReviewers.class);
+              post(PROJECT_KIND, "reviewers").to(PostReviewers.class);
             }
           });
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/PutReviewers.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/PostReviewers.java
similarity index 96%
rename from src/main/java/com/googlesource/gerrit/plugins/reviewers/PutReviewers.java
rename to src/main/java/com/googlesource/gerrit/plugins/reviewers/PostReviewers.java
index 58ae003..c65e406 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/PutReviewers.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/PostReviewers.java
@@ -44,7 +44,7 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
-import com.googlesource.gerrit.plugins.reviewers.PutReviewers.Input;
+import com.googlesource.gerrit.plugins.reviewers.PostReviewers.Input;
 import com.googlesource.gerrit.plugins.reviewers.config.FiltersFactory;
 import com.googlesource.gerrit.plugins.reviewers.config.ForProject;
 import java.io.IOException;
@@ -53,9 +53,9 @@
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
 
-/** PUT REST end-point that removes or adds a reviewer to a {@link ReviewerFilter}. */
+/** POST REST end-point that removes or adds a reviewer to a {@link ReviewerFilter}. */
 @Singleton
-class PutReviewers implements RestModifyView<ProjectResource, Input> {
+class PostReviewers implements RestModifyView<ProjectResource, Input> {
   private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   protected static class Input {
@@ -80,7 +80,7 @@
   private final PermissionBackend permissionBackend;
 
   @Inject
-  PutReviewers(
+  PostReviewers(
       @PluginName String pluginName,
       FiltersFactory filters,
       ForProject.Factory forProjectFactory,
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
index fc5d9e0..ea7d8e1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
@@ -98,8 +98,8 @@
         Account.Id id = result.asList().get(0).account().id();
         if (uploader == null || id.get() != uploader._accountId) {
           reviewers.add(id);
-          return true;
         }
+        return true;
       }
       return false;
     } catch (StorageException | IOException | ConfigInvalidException e) {
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 1b51181..173f51a 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -51,7 +51,10 @@
 filter.\<filter\>.reviewer
 :	An account or a group name. Must be an exact match (case sensitive) with the
 	account's email address or username, or the group name.  Multiple `reviewer`
-	occurrences are allowed.
+	occurrences are allowed.\
+	**NOTE**: *Reviewers are added in the context of the uploader which means
+	that if a group is configured it needs to be visible to the uploader for
+	reviewers to be added.*
 
 filter.\<filter\>.cc
 :	An account or a group name. Must be an exact match (case sensitive) with the
diff --git a/src/main/resources/Documentation/rest-api.md b/src/main/resources/Documentation/rest-api.md
index 957318f..683ed46 100644
--- a/src/main/resources/Documentation/rest-api.md
+++ b/src/main/resources/Documentation/rest-api.md
@@ -52,7 +52,7 @@
 ```
 
 ### <a id="change-reviewers"> Change Reviewers
-_PUT /projects/project_name/@PLUGIN@_
+_POST /projects/project_name/@PLUGIN@_
 
 Changes the default reviewers for the specified project.
 
@@ -65,7 +65,7 @@
 #### Request
 
 ```
-  PUT /projects/myproject/@PLUGIN@ HTTP/1.0
+  POST /projects/myproject/@PLUGIN@ HTTP/1.0
   Content-Type: application/json;charset=UTF-8
   {
     "action": "ADD",
diff --git a/web/rv-filter-section.ts b/web/rv-filter-section.ts
index a062de9..4162df2 100644
--- a/web/rv-filter-section.ts
+++ b/web/rv-filter-section.ts
@@ -204,13 +204,13 @@
       this.editingReviewer = false;
     } else {
       // The reviewer was not in edit mode, but DELETE was clicked.
-      this.putReviewer(reviewer, Action.REMOVE, type);
+      this.postReviewer(reviewer, Action.REMOVE, type);
     }
   }
 
   private handleReviewerAdded(e: CustomEvent<ReviewerAddedEventDetail>) {
     this.editingReviewer = false;
-    this.putReviewer(e.detail.reviewer, Action.ADD, e.detail.type).catch(
+    this.postReviewer(e.detail.reviewer, Action.ADD, e.detail.type).catch(
       err => {
         fire(this, 'show-alert', {message: err});
         throw err;
@@ -218,11 +218,11 @@
     );
   }
 
-  private putReviewer(reviewer: string, action: Action, type: Type) {
+  private postReviewer(reviewer: string, action: Action, type: Type) {
     if (this.filter === '') throw new Error('empty filter');
     if (reviewer === '') throw new Error('empty reviewer');
     return this.pluginRestApi
-      .put<Section[]>(this.reviewersUrl, {
+      .post<Section[]>(this.reviewersUrl, {
         action,
         reviewer,
         type,
diff --git a/web/rv-reviewer.ts b/web/rv-reviewer.ts
index cc9e7f8..9ac7424 100644
--- a/web/rv-reviewer.ts
+++ b/web/rv-reviewer.ts
@@ -223,6 +223,7 @@
       if (!groups) return [];
       return Object.keys(groups)
         .filter(name => !name.startsWith('user/'))
+        .filter(name => !groups[name].id.startsWith('global%3A'))
         .map(name => {
           return {name, value: name};
         });
