diff --git a/resources/static/dialog/js/modules/actions.js b/resources/static/dialog/js/modules/actions.js
index 02c6b5748c5eb989656bf8de8e61429172742e91..cca38668e7fb4b24e054c4bc3ccd8646e4b17ade 100644
--- a/resources/static/dialog/js/modules/actions.js
+++ b/resources/static/dialog/js/modules/actions.js
@@ -17,18 +17,19 @@ BrowserID.Modules.Actions = (function() {
       onsuccess,
       onerror;
 
-  function startService(name, options) {
+  function startService(name, options, reported_service_name) {
+    mediator.publish("service", { name: reported_service_name || name });
+
     // Only one service outside of the main dialog allowed.
     if(runningService) {
       serviceManager.stop(runningService);
     }
+
     var module = serviceManager.start(name, options);
     if(module) {
       runningService = name;
     }
 
-    mediator.publish("service", { name: name });
-
     return module;
   }
 
@@ -98,7 +99,7 @@ BrowserID.Modules.Actions = (function() {
     },
 
     doResetPassword: function(info) {
-      startService("set_password", _.extend(info, { password_reset: true }));
+      startService("set_password", _.extend(info, { password_reset: true }), "reset_password");
     },
 
     doStageResetPassword: function(info) {
diff --git a/resources/static/test/cases/dialog/js/modules/actions.js b/resources/static/test/cases/dialog/js/modules/actions.js
index 7c44e045bcdeaa795310336ccc2db0452eea215b..db8682217aa149659dfc14b55b68b8782902e6c0 100644
--- a/resources/static/test/cases/dialog/js/modules/actions.js
+++ b/resources/static/test/cases/dialog/js/modules/actions.js
@@ -9,6 +9,7 @@
   var bid = BrowserID,
       user = bid.User,
       storage = bid.Storage,
+      mediator = bid.Mediator,
       controller,
       el,
       testHelpers = bid.TestHelpers,
@@ -19,17 +20,25 @@
     controller.start(config);
   }
 
-  function testActionStartsModule(actionName, actionOptions, expectedModule) {
+  function testActionStartsModule(actionName, actionOptions, expectedModule, expectedServiceName) {
     createController({
       ready: function() {
-        var error;
+        var error,
+            reportedServiceName;
+
+        // Check that KPI service reporting is acting as expected.
+        mediator.subscribe("service", function(msg, data) {
+          reportedServiceName = data.name;
+        });
+
         try {
           controller[actionName](actionOptions);
         } catch(e) {
           error = e;
         }
 
-        equal(error, "module not registered for " + expectedModule, "correct service started");
+        equal(error, "module not registered for " + expectedModule, "correct module started");
+        equal(reportedServiceName, expectedServiceName || expectedModule, "correct service name");
         start();
       }
     });
@@ -116,7 +125,7 @@
   });
 
   asyncTest("doResetPassword - call the set_password controller with reset_password true", function() {
-    testActionStartsModule('doResetPassword', { email: TEST_EMAIL }, "set_password");
+    testActionStartsModule('doResetPassword', { email: TEST_EMAIL }, "set_password", "reset_password");
   });
 
   asyncTest("doStageResetPassword - trigger reset_password_staged", function() {