diff --git a/git_trace2_event_log.py b/git_trace2_event_log.py
index 92c4cc6..0d4f23f 100644
--- a/git_trace2_event_log.py
+++ b/git_trace2_event_log.py
@@ -167,6 +167,10 @@
     repo_config = {k: v for k, v in config.items() if k.startswith('repo.')}
     self.LogConfigEvents(repo_config, 'def_param')
 
+  def GetDataEventName(self, key):
+    """Returns the 'data-json' if the key is argv else returns 'data'."""
+    return 'data-json' if key.endswith('sys.argv') else 'data'
+
   def LogDataConfigEvents(self, config, prefix):
     """Append a 'data' event for each config key/value in |config| to the current log.
 
@@ -178,7 +182,7 @@
       prefix: Prefix for each key that is logged.
     """
     for key, value in config.items():
-      event = self._CreateEventDict('data')
+      event = self._CreateEventDict(self.GetDataEventName(key))
       event['key'] = f'{prefix}/{key}'
       event['value'] = value
       self._log.append(event)
diff --git a/tests/test_git_trace2_event_log.py b/tests/test_git_trace2_event_log.py
index a5a6cbb..6131c7b 100644
--- a/tests/test_git_trace2_event_log.py
+++ b/tests/test_git_trace2_event_log.py
@@ -42,7 +42,7 @@
     self._event_log_module = git_trace2_event_log.EventLog(env=env)
     self._log_data = None
 
-  def verifyCommonKeys(self, log_entry, expected_event_name, full_sid=True):
+  def verifyCommonKeys(self, log_entry, expected_event_name=None, full_sid=True):
     """Helper function to verify common event log keys."""
     self.assertIn('event', log_entry)
     self.assertIn('sid', log_entry)
@@ -50,7 +50,8 @@
     self.assertIn('time', log_entry)
 
     # Do basic data format validation.
-    self.assertEqual(expected_event_name, log_entry['event'])
+    if expected_event_name:
+      self.assertEqual(expected_event_name, log_entry['event'])
     if full_sid:
       self.assertRegex(log_entry['sid'], self.FULL_SID_REGEX)
     else:
@@ -246,6 +247,7 @@
         'git.foo': 'bar',
         'repo.partialclone': 'false',
         'repo.syncstate.superproject.hassuperprojecttag': 'true',
+        'repo.syncstate.superproject.sys.argv': ['--', 'sync', 'protobuf'],
     }
     prefix_value = 'prefix'
     self._event_log_module.LogDataConfigEvents(config, prefix_value)
@@ -254,17 +256,18 @@
       log_path = self._event_log_module.Write(path=tempdir)
       self._log_data = self.readLog(log_path)
 
-    self.assertEqual(len(self._log_data), 4)
+    self.assertEqual(len(self._log_data), 5)
     data_events = self._log_data[1:]
     self.verifyCommonKeys(self._log_data[0], expected_event_name='version')
 
     for event in data_events:
-      self.verifyCommonKeys(event, expected_event_name='data')
+      self.verifyCommonKeys(event)
       # Check for 'data' event specific fields.
       self.assertIn('key', event)
       self.assertIn('value', event)
       key = event['key'].removeprefix(f'{prefix_value}/')
       value = event['value']
+      self.assertEqual(self._event_log_module.GetDataEventName(key), event['event'])
       self.assertTrue(key in config and value == config[key])
 
   def test_error_event(self):
