diff --git a/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/mapping/EiffelEventFactory.java b/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/mapping/EiffelEventFactory.java
index addae54..ef3547c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/mapping/EiffelEventFactory.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/mapping/EiffelEventFactory.java
@@ -44,6 +44,7 @@
 import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
+import org.eclipse.jgit.util.SystemReader;
 
 public class EiffelEventFactory {
   public static class Provider implements com.google.inject.Provider<EiffelEventFactory> {
@@ -112,19 +113,22 @@
       purl.append("@" + pluginVersion);
     }
     this.packageUrl = purl.toString();
-    this.host = URI.create(webUrl).getHost();
+    if (webUrl != null) {
+      this.host = URI.create(webUrl).getHost();
+    } else {
+      this.host = SystemReader.getInstance().getHostname();
+    }
     this.pluginName = pluginName;
     this.namespace = namespace.orElse(host);
 
-    StringBuilder commitEndpoint = new StringBuilder();
-    commitEndpoint.append(webUrl);
-    if (!webUrl.endsWith("/")) {
-      commitEndpoint.append("/");
+    if (webUrl != null) {
+      commitRestUrl = webUrl + (!webUrl.endsWith("/") ? "/" : "") + "a/projects/%s/commits/%s";
+    } else {
+      commitRestUrl = "/projects/%s/commits/%s";
     }
-    commitEndpoint.append("a/projects/%s/commits/%s");
-    commitRestUrl = commitEndpoint.toString();
 
     String sshAddress = parseSshAddress(webUrl, configuredSshAddress);
+
     StringBuilder cloneUrl = new StringBuilder();
     cloneUrl.append("ssh://");
     cloneUrl.append(sshAddress);
@@ -138,11 +142,11 @@
 
   private String parseSshAddress(String webUrl, String configuredSshAddress) {
 
-    if (configuredSshAddress.startsWith("*:") || "".equals(configuredSshAddress)) {
+    if (configuredSshAddress.startsWith("*:") || configuredSshAddress.isEmpty()) {
       try {
         configuredSshAddress =
             new URL(webUrl).getHost()
-                + (configuredSshAddress.length() > 0 ? configuredSshAddress.substring(1) : "");
+                + (!configuredSshAddress.isEmpty() ? configuredSshAddress.substring(1) : "");
       } catch (MalformedURLException e) {
         logger.atWarning().withCause(e).log(
             "Failed to construct SSH address from web URL \"%s\"", webUrl);
