diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
index ad53449..69bd62f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
@@ -54,7 +54,7 @@
       install(new CacheModule());
     }
     if (config.event().synchronize()) {
-      install(new EventModule());
+      install(new EventModule(config));
     }
     if (config.index().synchronize()) {
       install(new IndexModule());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/event/EventModule.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/event/EventModule.java
index 1c0c644..663d8e5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/event/EventModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/event/EventModule.java
@@ -14,13 +14,25 @@
 
 package com.googlesource.gerrit.plugins.multisite.event;
 
+import com.gerritforge.gerrit.eventbroker.StreamEventPublisher;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.lifecycle.LifecycleModule;
 import com.google.gerrit.server.events.EventListener;
+import com.google.inject.Inject;
+import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
+import com.googlesource.gerrit.plugins.multisite.Configuration;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.EventTopic;
 import com.googlesource.gerrit.plugins.multisite.validation.ProjectVersionRefUpdate;
 import java.util.concurrent.Executor;
 
 public class EventModule extends LifecycleModule {
+  private final Configuration configuration;
+
+  @Inject
+  public EventModule(Configuration configuration) {
+    this.configuration = configuration;
+  }
 
   @Override
   protected void configure() {
@@ -28,5 +40,10 @@
     listener().to(EventExecutorProvider.class);
     DynamicSet.bind(binder(), EventListener.class).to(EventHandler.class);
     DynamicSet.bind(binder(), EventListener.class).to(ProjectVersionRefUpdate.class);
+    bind(new TypeLiteral<String>() {})
+        .annotatedWith(Names.named(StreamEventPublisher.STREAM_EVENTS_TOPIC))
+        .toInstance(EventTopic.GERRIT_TOPIC.topic(configuration));
+
+    DynamicSet.bind(binder(), EventListener.class).to(StreamEventPublisher.class);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/events/EventTopic.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/events/EventTopic.java
index 4e7a781..507f067 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/events/EventTopic.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/events/EventTopic.java
@@ -21,7 +21,36 @@
   BATCH_INDEX_TOPIC("GERRIT.EVENT.BATCH.INDEX", "batchIndexEvent"),
   CACHE_TOPIC("GERRIT.EVENT.CACHE", "cacheEvent"),
   PROJECT_LIST_TOPIC("GERRIT.EVENT.PROJECT.LIST", "projectListEvent"),
-  STREAM_EVENT_TOPIC("GERRIT.EVENT.STREAM", "streamEvent");
+  /**
+   * the STREAM_EVENT_TOPICS and the GERRIT_TOPIC are both used to publish stream events. It might
+   * not be immediately intuitive why there are _two_ streams for this, rather than one. These are
+   * some gotchas regarding this:
+   *
+   * <ul>
+   *   <li>A subset of stream events is published to the STREAM_EVENT_TOPIC (i.e. only global
+   *       project events). This is done by the EventHandler.
+   *   <li>All, unfiltered gerrit events are published to a topic called `gerrit` (the
+   *       GERRIT_TOPIC). This is done by the StreamEventPublisher provided by the events-broker
+   *       library.
+   * </ul>
+   *
+   * Historically, the GERRIT_TOPIC existed to allow the streaming of all stream events. With the
+   * introduction of multi-site however, events had to be wrapped into EventMessage and streamed
+   * separately, in order to provide a header containing the instance-id that produced that message.
+   * For this purpose a *new* STREAM_EVENT_TOPIC topic was introduced.
+   *
+   * <p><a href="https://bugs.chromium.org/p/gerrit/issues/detail?id=14823">Issue 14823</a> now
+   * removed the need of EventMessage altogether,so that the `STREAM_EVENT_TOPIC` stream,
+   * conceptually would not be needed anymore.
+   *
+   * <p>However, before the `STREAM_EVENT_TOPIC` stream can be effectively removed, the filtering of
+   * the events needs to happen on the receiving side, as explained in <a
+   * href="https://bugs.chromium.org/p/gerrit/issues/detail?id=14835">Issue 14835</a>.
+   *
+   * <p>This would allow to *all* events to be streamed to the STREAM_EVENT_TOPICS.
+   */
+  STREAM_EVENT_TOPIC("GERRIT.EVENT.STREAM", "streamEvent"),
+  GERRIT_TOPIC("gerrit", "gerritEvents");
 
   private final String topic;
   private final String aliasKey;
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index a76545f..d7d2239 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -59,9 +59,15 @@
     Defaults to GERRIT.EVENT.INDEX
 
 ```broker.streamEventTopic```
-:   Name of the topic to use for publishing stream events
+:   Name of the topic to use for publishing stream events. Note that only
+    project events are streamed and only for global projects (see
+    `projects.pattern`).
     Defaults to GERRIT.EVENT.STREAM
 
+`broker.gerritEventsTopic`
+:   Name of the topic to use for publishing all stream events.
+    Default: gerrit
+
 ```broker.cacheEventTopic```
 :   Name of the topic to use for publishing cache eviction events
     Defaults to GERRIT.EVENT.CACHE
