diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/AllProjectChangesDeletedFromIndexEvent.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/AllProjectChangesDeletedFromIndexEvent.java
deleted file mode 100644
index e94c5fb..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/AllProjectChangesDeletedFromIndexEvent.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2025 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.googlesource.gerrit.plugins.deleteproject;
-
-import com.google.gerrit.entities.Project;
-import com.google.gerrit.entities.Project.NameKey;
-import com.google.gerrit.server.events.ProjectEvent;
-
-public class AllProjectChangesDeletedFromIndexEvent extends ProjectEvent {
-  public static final String TYPE = "all-project-changes-deleted-from-index";
-  public String projectName;
-
-  public AllProjectChangesDeletedFromIndexEvent() {
-    super(TYPE);
-  }
-
-  @Override
-  public NameKey getProjectNameKey() {
-    return Project.nameKey(projectName);
-  }
-}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
index 255fe3d..75a948a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProject.java
@@ -16,7 +16,6 @@
 
 import com.google.gerrit.common.Nullable;
 import com.google.gerrit.entities.Project;
-import com.google.gerrit.extensions.events.ChangeIndexedListener;
 import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
 import com.google.gerrit.extensions.restapi.Response;
@@ -38,8 +37,7 @@
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
 
 @Singleton
-class DeleteProject implements RestModifyView<ProjectResource, Input>, ChangeIndexedListener {
-
+class DeleteProject implements RestModifyView<ProjectResource, Input> {
   static class Input {
     boolean preserve;
     boolean force;
@@ -127,19 +125,4 @@
       deleteLog.onDelete((IdentifiedUser) userProvider.get(), project.getNameKey(), input, ex);
     }
   }
-
-  @Override
-  public void onChangeIndexed(String projectName, int id) {}
-
-  @Override
-  public void onChangeDeleted(int id) {}
-
-  @Override
-  public void onAllChangesDeletedForProject(String projectName) {
-    AllProjectChangesDeletedFromIndexEvent event = new AllProjectChangesDeletedFromIndexEvent();
-    event.projectName = projectName;
-    event.instanceId = instanceId;
-
-    dispatcher.get().postEvent(Project.nameKey(projectName), event);
-  }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/PluginModule.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/PluginModule.java
index cd0510e..a2e3f15 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/PluginModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/PluginModule.java
@@ -20,9 +20,7 @@
 
 import com.google.gerrit.extensions.annotations.Exports;
 import com.google.gerrit.extensions.config.CapabilityDefinition;
-import com.google.gerrit.extensions.events.ChangeIndexedListener;
 import com.google.gerrit.extensions.events.LifecycleListener;
-import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.RestApiModule;
 import com.google.gerrit.server.events.EventTypes;
 import com.google.inject.AbstractModule;
@@ -64,10 +62,6 @@
     }
 
     EventTypes.register(ProjectDeletedEvent.TYPE, ProjectDeletedEvent.class);
-    EventTypes.register(
-        AllProjectChangesDeletedFromIndexEvent.TYPE, AllProjectChangesDeletedFromIndexEvent.class);
-
-    DynamicSet.bind(binder(), ChangeIndexedListener.class).to(DeleteProject.class);
 
     install(
         new RestApiModule() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
index fa63d85..9c684ef 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeleteProjectIT.java
@@ -23,7 +23,6 @@
 import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
 import com.google.gerrit.acceptance.LightweightPluginDaemonTest;
 import com.google.gerrit.acceptance.RestResponse;
 import com.google.gerrit.acceptance.TestPlugin;
@@ -38,7 +37,6 @@
 import com.google.gerrit.entities.RefNames;
 import com.google.gerrit.extensions.client.ProjectState;
 import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.server.events.Event;
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.deleteproject.DeleteProject.Input;
 import java.io.File;
@@ -288,31 +286,6 @@
     assertThat(parentFolder.toFile().exists()).isFalse();
   }
 
-  @Test
-  @UseLocalDisk
-  public void testHttpDeleteProjectEmitsAllProjectChangesDeletedFromIndex() throws Exception {
-    RestResponse r = httpDeleteProjectHelper(false);
-    r.assertNoContent();
-
-    ImmutableList<Event> events =
-        eventRecorder.getGenericEvents(AllProjectChangesDeletedFromIndexEvent.TYPE, 1);
-
-    assertThat(((AllProjectChangesDeletedFromIndexEvent) events.getFirst()).getProjectNameKey())
-        .isEqualTo(project);
-  }
-
-  @Test
-  @UseLocalDisk
-  public void testSshDeleteProjectEmitsAllProjectChangesDeletedFromIndex() throws Exception {
-    adminSshSession.exec(createDeleteCommand(project.get()));
-
-    ImmutableList<Event> events =
-        eventRecorder.getGenericEvents(AllProjectChangesDeletedFromIndexEvent.TYPE, 1);
-
-    assertThat(((AllProjectChangesDeletedFromIndexEvent) events.getFirst()).getProjectNameKey())
-        .isEqualTo(project);
-  }
-
   private File verifyProjectRepoExists(Project.NameKey name) throws IOException {
     File projectDir;
     try (Repository projectRepo = repoManager.openRepository(name)) {
