diff --git a/css/uw_dashboard.css b/css/uw_dashboard.css
index 38b8271ced14440a11335edb22a7b4b7455ea2e3..e1c0776c6e23960d89c3cb3cd7855ccceabe9e76 100644
--- a/css/uw_dashboard.css
+++ b/css/uw_dashboard.css
@@ -10,3 +10,8 @@
   flex-grow: 1;
   flex-basis: 0;
 }
+
+.dashboard__site-info {
+  float: right;
+  margin-bottom: 0.2rem;
+}
diff --git a/uw_dashboard.module b/uw_dashboard.module
index d85453f54507a02c56c1271c75649022c8e6ad94..743e88495f3004b8333e90de631cfa8bcea60534 100644
--- a/uw_dashboard.module
+++ b/uw_dashboard.module
@@ -5,6 +5,7 @@
  * UW Dashboard module file.
  */
 
+use Drupal\Core\Link;
 use Drupal\Core\Url;
 use Drupal\user\Entity\User;
 use Drupal\uw_dashboard\Handler\UWWebformEntityListBuilder;
@@ -154,3 +155,59 @@ function uw_dashboard_views_pre_execute(ViewExecutable $view) {
     $view->pager->options['id'] = $view_instances_count;
   }
 }
+
+/**
+ * Implements hook_preprocess_page().
+ */
+function uw_dashboard_preprocess_page(&$variables) {
+  if (\Drupal::routeMatch()->getRouteName() == 'entity.dashboard.canonical') {
+    // Start building the site info string with the version information.
+    $string = 'WCMS version ' . \Drupal::service('extension.list.profile')->getList()['uw_base_profile']->info['version'];
+    $string = Link::fromTextAndUrl($string, Url::fromUri('https://uwaterloo.ca/web-resources/news?tags[90]=90'))->toString();
+
+    // Get the website lead(s).
+    $query = \Drupal::entityQuery('user')
+      ->condition('status', 1)
+      ->condition('roles', 'uw_role_website_lead')
+      ->sort('field_uw_last_name', 'ASC')
+      ->sort('field_uw_first_name', 'ASC');
+    $uids = $query->execute();
+    $users = User::loadMultiple($uids);
+    $user_list = [];
+    foreach ($users as $user) {
+      $user_list[] = Link::fromTextAndUrl($user->getDisplayName(), Url::fromUri('mailto:' . $user->getEmail()))->toString();
+    }
+    if (!$user_list) {
+      $user_list[] = 'not set';
+    }
+    $string .= ' • Website lead';
+    if (count($user_list) > 1) {
+      $string .= 's';
+    }
+    $string .= ': ' . implode(', ', $user_list);
+
+    // Get the site owner(s).
+    $query = \Drupal::entityQuery('user')
+      ->condition('status', 1)
+      ->condition('roles', 'uw_role_site_owner')
+      ->sort('field_uw_last_name', 'ASC')
+      ->sort('field_uw_first_name', 'ASC');
+    $uids = $query->execute();
+    $users = User::loadMultiple($uids);
+    $user_list = [];
+    foreach ($users as $user) {
+      $user_list[] = Link::fromTextAndUrl($user->getDisplayName(), Url::fromUri('mailto:' . $user->getEmail()))->toString();
+    }
+    if (!$user_list) {
+      $user_list[] = 'not set';
+    }
+    $string .= ' • Site owner';
+    if (count($user_list) > 1) {
+      $string .= 's';
+    }
+    $string .= ': ' . implode(', ', $user_list);
+
+    // Get the site owner(s).
+    $variables['page']['help']['#markup'] = '<div class="dashboard__site-info">' . $string . '</div>';
+  }
+}