diff --git a/packages/@sanity/cli/src/__telemetry__/cli.telemetry.ts b/packages/@sanity/cli/src/__telemetry__/cli.telemetry.ts
index e620b56cc956..743475e4c18e 100644
--- a/packages/@sanity/cli/src/__telemetry__/cli.telemetry.ts
+++ b/packages/@sanity/cli/src/__telemetry__/cli.telemetry.ts
@@ -11,8 +11,30 @@ export const CliStart = defineEvent<{
   description: 'User ran the sanity cli',
 })
 
-export const CliCommand = defineTrace<{commandName: string}>({
+interface CLITraceData {
+  /**
+   * Command flags, without the core options (help, debug, version etc)
+   */
+  groupOrCommand: string
+
+  /**
+   * Command arguments, eg any arguments after `sanity <command>` (no flags)
+   */
+  commandArguments: string[]
+
+  /**
+   * Arguments after the ended argument list (--)
+   */
+  extraArguments: string[]
+  coreOptions: {
+    help: boolean
+    debug: boolean
+    version: boolean
+  }
+}
+
+export const CliCommand = defineTrace<CLITraceData>({
   name: 'cliCommand',
   version: 1,
-  description: 'User ran a cli action',
+  description: 'User runs a cli command',
 })
diff --git a/packages/@sanity/cli/src/cli.ts b/packages/@sanity/cli/src/cli.ts
index b94f9720842f..4297be9aec89 100755
--- a/packages/@sanity/cli/src/cli.ts
+++ b/packages/@sanity/cli/src/cli.ts
@@ -40,21 +40,14 @@ export async function runCli(cliRoot: string, {cliVersion}: {cliVersion: string}
 
   const {logger: telemetry, flush: flushTelemetry} = createTelemetryStore({env: process.env})
 
-  telemetry.log(CliStart, {
-    nodeVersion: process.version,
-    cliVersion: pkg.version,
-    platform: process.platform,
-    cpuArch: process.arch,
-  })
-
   // UGLY HACK: process.exit(<code>) causes abrupt exit, we want to flush telemetry before exiting
   installProcessExitHack(flushTelemetry)
 
   telemetry.log(CliStart, {
-    cliVersion: pkg.version,
     nodeVersion: process.version,
-    cpuArch: process.arch,
+    cliVersion: pkg.version,
     platform: process.platform,
+    cpuArch: process.arch,
   })
 
   const args = parseArguments()
@@ -122,12 +115,23 @@ export async function runCli(cliRoot: string, {cliVersion}: {cliVersion: string}
   const cliRunner = getCliRunner(commands)
   const cliCommandTrace = telemetry.trace(CliCommand)
 
-  cliCommandTrace.log({commandName: args.groupOrCommand})
+  cliCommandTrace.log({
+    groupOrCommand: args.groupOrCommand,
+    extraArguments: args.extraArguments,
+    commandArguments: args.argsWithoutOptions,
+    coreOptions: {
+      help: args.coreOptions.help,
+      version: args.coreOptions.version,
+      debug: args.coreOptions.debug,
+    },
+  })
+
   cliRunner
     .runCommand(args.groupOrCommand, args, {
       ...options,
       telemetry: cliCommandTrace.newContext(args.groupOrCommand),
     })
+    .then(() => cliCommandTrace.complete())
     .catch(async (err) => {
       await flushTelemetry()
       const error = typeof err.details === 'string' ? err.details : err