diff --git a/domains.go b/domains.go
index d298b63b65590f72cddcbf2b290be8ee6b700b62..1fed632485eabd331dffbb06811b565ff72f31d6 100644
--- a/domains.go
+++ b/domains.go
@@ -44,8 +44,9 @@ func (d domains) readProjectConfig(rootDomain, group, project string) (err error
 	}
 
 	for _, domainConfig := range config.Domains {
+		config := domainConfig // domainConfig is reused for each loop iteration
 		if domainConfig.Valid(rootDomain) {
-			d.addDomain(rootDomain, group, project, &domainConfig)
+			d.addDomain(rootDomain, group, project, &config)
 		}
 	}
 	return
diff --git a/domains_test.go b/domains_test.go
index 5a2882d692c6d084ff0153658805887ed520324b..6ce11f5f0d5fcce0ce1c22bbc70c632597cf5cc0 100644
--- a/domains_test.go
+++ b/domains_test.go
@@ -40,6 +40,13 @@ func TestReadProjects(t *testing.T) {
 	for _, actual := range domains {
 		assert.Contains(t, expectedDomains, actual)
 	}
+
+	// Check that multiple domains in the same project are recorded faithfully
+	exp1 := &domainConfig{Domain: "test.domain.com"}
+	assert.Equal(t, exp1, d["test.domain.com"].Config)
+
+	exp2 := &domainConfig{Domain: "other.domain.com", Certificate: "test", Key: "key"}
+	assert.Equal(t, exp2, d["other.domain.com"].Config)
 }
 
 func writeRandomTimestamp() {
diff --git a/shared/pages/group/group.test.io/config.json b/shared/pages/group/group.test.io/config.json
index 1643525db546659cfec66bfec242ff8767c6d5ab..5b9be1fdd1bfc7d37656c6c152ce58d075d51ca7 100644
--- a/shared/pages/group/group.test.io/config.json
+++ b/shared/pages/group/group.test.io/config.json
@@ -9,7 +9,7 @@
     {
       "Domain": "other.domain.com",
       "Certificate": "test",
-      "Certificate": "key"
+      "Key": "key"
     }
   ]
 }