diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectInitializationAction.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectInitializationAction.java
index 9afae71..155b6a1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectInitializationAction.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectInitializationAction.java
@@ -27,12 +27,15 @@
 import com.google.common.net.MediaType;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.entities.RefNames;
+import com.google.gerrit.extensions.events.NewProjectCreatedListener;
+import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.BadRequestException;
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
 import com.google.gerrit.extensions.restapi.Url;
 import com.google.gerrit.index.project.ProjectIndexer;
 import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.extensions.events.AbstractNoNotifyEvent;
 import com.google.gerrit.server.permissions.GlobalPermission;
 import com.google.gerrit.server.permissions.PermissionBackend;
 import com.google.gerrit.server.permissions.PermissionBackendException;
@@ -69,6 +72,7 @@
   private final ProjectIndexer projectIndexer;
   private final ApplyObjectCommand applyObjectCommand;
   private final ProjectCache projectCache;
+  private final DynamicSet<NewProjectCreatedListener> newProjectCreatedListeners;
 
   @Inject
   ProjectInitializationAction(
@@ -77,13 +81,15 @@
       PermissionBackend permissionBackend,
       ProjectIndexer projectIndexer,
       ApplyObjectCommand applyObjectCommand,
-      ProjectCache projectCache) {
+      ProjectCache projectCache,
+      DynamicSet<NewProjectCreatedListener> newProjectCreatedListeners) {
     this.gerritConfigOps = gerritConfigOps;
     this.userProvider = userProvider;
     this.permissionBackend = permissionBackend;
     this.projectIndexer = projectIndexer;
     this.applyObjectCommand = applyObjectCommand;
     this.projectCache = projectCache;
+    this.newProjectCreatedListeners = newProjectCreatedListeners;
   }
 
   @Override
@@ -167,6 +173,10 @@
         input.getLabel(),
         input.getEventCreatedOn());
     projectCache.onCreateProject(Project.nameKey(projectName));
+    // In case pull-replication is used in conjunction with multi-site, by convention the remote
+    // label is populated with the instanceId. That's why we are passing input.getLabel()
+    // to the Event to notify
+    notifyListenersOfNewProjectCreation(projectName, input.getLabel());
     repLog.info(
         "Init project API from {} for {}:{} - {}",
         input.getLabel(),
@@ -234,4 +244,38 @@
       return false;
     }
   }
+
+  private void notifyListenersOfNewProjectCreation(String projectName, String instanceId) {
+    NewProjectCreatedListener.Event newProjectCreatedEvent =
+        new Event(RefNames.REFS_CONFIG, projectName, instanceId);
+    newProjectCreatedListeners.forEach(l -> l.onNewProjectCreated(newProjectCreatedEvent));
+  }
+
+  private static class Event extends AbstractNoNotifyEvent
+      implements NewProjectCreatedListener.Event {
+    private final String headName;
+    private final String projectName;
+    private final String instanceId;
+
+    public Event(String headName, String projectName, String maybeInstanceId) {
+      this.headName = headName;
+      this.projectName = projectName;
+      this.instanceId = maybeInstanceId;
+    }
+
+    @Override
+    public String getHeadName() {
+      return headName;
+    }
+
+    @Override
+    public String getProjectName() {
+      return projectName;
+    }
+
+    @Override
+    public String getInstanceId() {
+      return instanceId;
+    }
+  }
 }
