diff --git a/src/shared/drivers/canbus/CanProtocol/CanProtocolTypes.h b/src/shared/drivers/canbus/CanProtocol/CanProtocolTypes.h
index 22b12a17f978551a03275a2e0de93823cba59515..9c28d60ce288f50affc24a4ad7ef36b5083641e5 100644
--- a/src/shared/drivers/canbus/CanProtocol/CanProtocolTypes.h
+++ b/src/shared/drivers/canbus/CanProtocol/CanProtocolTypes.h
@@ -283,6 +283,22 @@ struct CanServoFeedback : ServoFeedback
     }
 };
 
+struct CanEvent
+{
+    uint64_t timestamp;
+    uint8_t source = 0;
+    uint8_t target = 0;
+    uint8_t event  = 0;
+
+    static std::string header() { return "timestamp,source,target,event"; }
+
+    void print(std::ostream& os) const
+    {
+        os << timestamp << "," << source << "," << target << "," << event
+           << "\n";
+    }
+};
+
 inline Canbus::CanMessage toCanMessage(const PitotData& data)
 {
     Canbus::CanMessage message;