diff --git a/CHANGELOG.md b/CHANGELOG.md
index 26bfc33..9a96173 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
 ## 4.1.2-dev
 
 - Send `fetch` requests instead of `XHR` requests.
+- Add an optional `debugKey` parameter to `SseClient` to include in logging.
 
 ## 4.1.1
 
diff --git a/lib/client/sse_client.dart b/lib/client/sse_client.dart
index 15f85ed..abaea2e 100644
--- a/lib/client/sse_client.dart
+++ b/lib/client/sse_client.dart
@@ -26,6 +26,8 @@
 /// The client can send any JSON-encodable messages to the server by adding
 /// them to the [sink] and listen to messages from the server on the [stream].
 class SseClient extends StreamChannelMixin<String?> {
+  final String _clientId;
+
   final _incomingController = StreamController<String>();
 
   final _outgoingController = StreamController<String>();
@@ -43,12 +45,14 @@
   Timer? _errorTimer;
 
   /// [serverUrl] is the URL under which the server is listening for
-  /// incoming bi-directional SSE connections.
-  SseClient(String serverUrl) {
-    var clientId = generateUuidV4();
-    _eventSource =
-        EventSource('$serverUrl?sseClientId=$clientId', withCredentials: true);
-    _serverUrl = '$serverUrl?sseClientId=$clientId';
+  /// incoming bi-directional SSE connections. [debugKey] is an optional key
+  /// that can be used to identify the SSE connection.
+  SseClient(String serverUrl, {String? debugKey})
+      : _clientId = debugKey == null
+            ? generateUuidV4()
+            : '$debugKey-${generateUuidV4()}' {
+    _serverUrl = '$serverUrl?sseClientId=$_clientId';
+    _eventSource = EventSource(_serverUrl, withCredentials: true);
     _eventSource.onOpen.first.whenComplete(() {
       _onConnected.complete();
       _outgoingController.stream
@@ -113,7 +117,7 @@
     if (data == 'close') {
       close();
     } else {
-      throw UnsupportedError('Illegal Control Message "$data"');
+      throw UnsupportedError('[$_clientId] Illegal Control Message "$data"');
     }
   }
 
@@ -133,9 +137,9 @@
       try {
         encodedMessage = jsonEncode(message);
       } on JsonUnsupportedObjectError catch (e) {
-        _logger.warning('Unable to encode outgoing message: $e');
+        _logger.warning('[$_clientId] Unable to encode outgoing message: $e');
       } on ArgumentError catch (e) {
-        _logger.warning('Invalid argument: $e');
+        _logger.warning('[$_clientId] Invalid argument: $e');
       }
       try {
         final url = '$_serverUrl&messageId=${++_lastMessageId}';
@@ -147,7 +151,8 @@
                 credentialsOptions:
                     _CredentialsOptions(credentials: 'include')));
       } catch (error) {
-        final augmentedError = 'SSE client failed to send $message:\n $error';
+        final augmentedError =
+            '[$_clientId] SSE client failed to send $message:\n $error';
         _logger.severe(augmentedError);
         _closeWithError(augmentedError);
       }
diff --git a/lib/src/server/sse_handler.dart b/lib/src/server/sse_handler.dart
index 13ce670..88bb851 100644
--- a/lib/src/server/sse_handler.dart
+++ b/lib/src/server/sse_handler.dart
@@ -264,14 +264,15 @@
 
   Future<shelf.Response> _handleIncomingMessage(
       shelf.Request req, String path) async {
+    String? clientId;
     try {
-      var clientId = req.url.queryParameters['sseClientId'];
+      clientId = req.url.queryParameters['sseClientId'];
       var messageId = int.parse(req.url.queryParameters['messageId'] ?? '0');
       var message = await req.readAsString();
       var jsonObject = json.decode(message) as String;
       _connections[clientId]?._addIncomingMessage(messageId, jsonObject);
     } catch (e, st) {
-      _logger.fine('Failed to handle incoming message. $e $st');
+      _logger.fine('[$clientId] Failed to handle incoming message. $e $st');
     }
     return shelf.Response.ok('', headers: {
       'access-control-allow-credentials': 'true',
