diff --git a/src/applications/maniphest/edge/ManiphestTaskHasDuplicateTaskEdgeType.php b/src/applications/maniphest/edge/ManiphestTaskHasDuplicateTaskEdgeType.php
--- a/src/applications/maniphest/edge/ManiphestTaskHasDuplicateTaskEdgeType.php
+++ b/src/applications/maniphest/edge/ManiphestTaskHasDuplicateTaskEdgeType.php
@@ -13,4 +13,18 @@
     return true;
   }
 
+  public function getConduitKey() {
+    return 'task.merged-in';
+  }
+
+  public function getConduitName() {
+    return pht('Merged In');
+  }
+
+  public function getConduitDescription() {
+    return pht(
+      'The source task has had the destination task closed as a '.
+      'duplicate and merged into it.');
+  }
+
 }
diff --git a/src/applications/maniphest/edge/ManiphestTaskIsDuplicateOfTaskEdgeType.php b/src/applications/maniphest/edge/ManiphestTaskIsDuplicateOfTaskEdgeType.php
--- a/src/applications/maniphest/edge/ManiphestTaskIsDuplicateOfTaskEdgeType.php
+++ b/src/applications/maniphest/edge/ManiphestTaskIsDuplicateOfTaskEdgeType.php
@@ -13,4 +13,19 @@
     return true;
   }
 
+  public function getConduitKey() {
+    return 'task.duplicate';
+  }
+
+  public function getConduitName() {
+    return pht('Closed as Duplicate');
+  }
+
+  public function getConduitDescription() {
+    return pht(
+      'The source task has been closed as a duplicate of the '.
+      'destination task.');
+  }
+
+
 }