diff --git a/lib/gui_rpc_client.h b/lib/gui_rpc_client.h
index 65a70cef76..4691860bf7 100644
--- a/lib/gui_rpc_client.h
+++ b/lib/gui_rpc_client.h
@@ -170,6 +170,7 @@ struct PROJECT {
     char venue[256];
     int njobs_success;
     int njobs_error;
+    char cross_project_id[64];
 
     // NOTE: if you add any data items above,
     // update parse(), and clear() to include them!!
diff --git a/lib/gui_rpc_client_ops.cpp b/lib/gui_rpc_client_ops.cpp
index ec45bedabb..6aa57dd816 100644
--- a/lib/gui_rpc_client_ops.cpp
+++ b/lib/gui_rpc_client_ops.cpp
@@ -459,6 +459,7 @@ int PROJECT::parse(XML_PARSER& xp) {
         if (xp.parse_str("venue", venue, sizeof(venue))) continue;
         if (xp.parse_int("njobs_success", njobs_success)) continue;
         if (xp.parse_int("njobs_error", njobs_error)) continue;
+        if (xp.parse_str("cross_project_id", cross_project_id, sizeof(cross_project_id))) continue;
     }
     return ERR_XML_PARSE;
 }
diff --git a/lib/gui_rpc_client_print.cpp b/lib/gui_rpc_client_print.cpp
index b2472a828b..a254239f0f 100644
--- a/lib/gui_rpc_client_print.cpp
+++ b/lib/gui_rpc_client_print.cpp
@@ -108,6 +108,7 @@ void PROJECT::print() {
     }
     printf("   jobs succeeded: %d\n", njobs_success);
     printf("   jobs failed: %d\n", njobs_error);
+    printf("   cross-project ID: %s\n", cross_project_id);
 }
 
 void APP::print() {