diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java
index 6fa743f..a328694 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java
@@ -17,7 +17,10 @@
 import com.ericsson.gerrit.plugins.highavailability.forwarder.rest.RestForwarderServletModule;
 import com.ericsson.gerrit.plugins.highavailability.health.HealthServletModule;
 import com.ericsson.gerrit.plugins.highavailability.websession.file.FileBasedWebsessionModule;
+import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.gerrit.httpd.AllRequestFilter;
 import com.google.inject.Inject;
+import com.google.inject.Scopes;
 import com.google.inject.servlet.ServletModule;
 
 class HttpModule extends ServletModule {
@@ -37,5 +40,8 @@
     if (config.websession().synchronize()) {
       install(new FileBasedWebsessionModule());
     }
+    DynamicSet.bind(binder(), AllRequestFilter.class)
+        .to(XGerritInstanceFilter.class)
+        .in(Scopes.SINGLETON);
   }
 }
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/XGerritInstanceFilter.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/XGerritInstanceFilter.java
new file mode 100644
index 0000000..a268231
--- /dev/null
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/XGerritInstanceFilter.java
@@ -0,0 +1,53 @@
+// Copyright (C) 2024 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.ericsson.gerrit.plugins.highavailability;
+
+import static com.google.common.base.MoreObjects.firstNonNull;
+
+import com.google.gerrit.common.Nullable;
+import com.google.gerrit.httpd.AllRequestFilter;
+import com.google.gerrit.server.config.GerritInstanceId;
+import com.google.gerrit.server.config.GerritInstanceName;
+import com.google.inject.Inject;
+import java.io.IOException;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+public class XGerritInstanceFilter extends AllRequestFilter {
+  private static final String X_GERRIT_INSTANCE = "X-Gerrit-Instance";
+
+  private final String instanceId;
+  private final String instanceName;
+
+  @Inject
+  XGerritInstanceFilter(
+      @Nullable @GerritInstanceId String instanceId, @GerritInstanceName String instanceName) {
+    this.instanceId = instanceId;
+    this.instanceName = instanceName;
+  }
+
+  @Override
+  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+      throws IOException, ServletException {
+    if (response instanceof HttpServletResponse) {
+      ((HttpServletResponse) response)
+          .addHeader(X_GERRIT_INSTANCE, firstNonNull(instanceId, instanceName));
+    }
+    chain.doFilter(request, response);
+  }
+}
