diff --git a/omaha_request_action.cc b/omaha_request_action.cc
index e994335..c1eb795 100644
--- a/omaha_request_action.cc
+++ b/omaha_request_action.cc
@@ -178,7 +178,9 @@
       XmlEncode(params.app_track) + "\" board=\"" +
       XmlEncode(params.os_board) + "\" hardware_class=\"" +
       XmlEncode(params.hardware_class) + "\" delta_okay=\"" +
-      (params.delta_okay ? "true" : "false") + "\">\n" + body +
+      (params.delta_okay ? "true" : "false") +
+      "\" userinitiated=\"" + (params.interactive ? "true" : "false") +
+      "\">\n" + body +
       "    </app>\n"
       "</request>\n";
 }
diff --git a/omaha_request_action_unittest.cc b/omaha_request_action_unittest.cc
index 69d5895..276f189 100644
--- a/omaha_request_action_unittest.cc
+++ b/omaha_request_action_unittest.cc
@@ -50,6 +50,7 @@
     "unittest",
     "OEM MODEL 09235 7471",
     false,  // delta okay
+    false,  // interactive
     "http://url",
     false, // update_disabled
     ""); // target_version_prefix);
@@ -820,6 +821,7 @@
                             "unittest_track&lt;",
                             "<OEM MODEL>",
                             false,  // delta okay
+                            false,  // interactive
                             "http://url",
                             false,   // update_disabled
                             "");  // target_version_prefix
@@ -1031,6 +1033,7 @@
                               "unittest_track",
                               "OEM MODEL REV 1234",
                               delta_okay,
+                              false,  // interactive
                               "http://url",
                               false, // update_disabled
                               "");   // target_version_prefix
@@ -1050,6 +1053,42 @@
   }
 }
 
+TEST(OmahaRequestActionTest, FormatInteractiveOutputTest) {
+  for (int i = 0; i < 2; i++) {
+    bool interactive = i == 1;
+    const char* interactive_str = interactive ? "true" : "false";
+    vector<char> post_data;
+    OmahaRequestParams params(OmahaRequestParams::kOsPlatform,
+                              OmahaRequestParams::kOsVersion,
+                              "service_pack",
+                              "x86-generic",
+                              OmahaRequestParams::kAppId,
+                              "0.1.0.0",
+                              "en-US",
+                              "unittest_track",
+                              "OEM MODEL REV 1234",
+                              true,  // delta_okay
+                              interactive,
+                              "http://url",
+                              false, // update_disabled
+                              "");   // target_version_prefix
+    ASSERT_FALSE(TestUpdateCheck(NULL,  // prefs
+                                 params,
+                                 "invalid xml>",
+                                 -1,
+                                 false,  // ping_only
+                                 kActionCodeOmahaRequestXMLParseError,
+                                 NULL,
+                                 &post_data));
+    // convert post_data to string
+    string post_str(&post_data[0], post_data.size());
+    EXPECT_NE(post_str.find(StringPrintf(" userinitiated=\"%s\"",
+                                         interactive_str)),
+              string::npos)
+        << "i = " << i;
+  }
+}
+
 TEST(OmahaRequestActionTest, OmahaEventTest) {
   OmahaEvent default_event;
   EXPECT_EQ(OmahaEvent::kTypeUnknown, default_event.type);
diff --git a/omaha_request_params.cc b/omaha_request_params.cc
index d857297..46cd5aa 100644
--- a/omaha_request_params.cc
+++ b/omaha_request_params.cc
@@ -41,7 +41,8 @@
 
 bool OmahaRequestDeviceParams::Init(const std::string& in_app_version,
                                     const std::string& in_update_url,
-                                    const std::string& in_release_track) {
+                                    const std::string& in_release_track,
+                                    bool in_interactive) {
   bool stateful_override = !ShouldLockDown();
   os_platform = OmahaRequestParams::kOsPlatform;
   os_version = OmahaRequestParams::kOsVersion;
@@ -99,6 +100,10 @@
                   NULL,
                   stateful_override) :
       in_update_url;
+
+  // Set the interactive flag accordingly.
+  interactive = in_interactive;
+
   return true;
 }
 
@@ -122,7 +127,7 @@
 
 bool OmahaRequestDeviceParams::SetDeviceTrack(const std::string& track) {
   OmahaRequestDeviceParams params;
-  TEST_AND_RETURN_FALSE(params.Init("", "", ""));
+  TEST_AND_RETURN_FALSE(params.Init("", "", "", false));
   return params.SetTrack(track);
 }
 
@@ -130,7 +135,7 @@
   OmahaRequestDeviceParams params;
   // Note that params.app_track is an empty string if the value in
   // lsb-release file is invalid. See Init() for details.
-  return params.Init("", "", "") ? params.app_track : "";
+  return params.Init("", "", "", false) ? params.app_track : "";
 }
 
 string OmahaRequestDeviceParams::GetLsbValue(const string& key,
diff --git a/omaha_request_params.h b/omaha_request_params.h
index ea8bab0..f38978c 100644
--- a/omaha_request_params.h
+++ b/omaha_request_params.h
@@ -31,6 +31,7 @@
         os_version(kOsVersion),
         app_id(kAppId),
         delta_okay(true),
+        interactive(false),
         update_disabled(false),
         wall_clock_based_wait_enabled(false),
         update_check_count_wait_enabled(false),
@@ -47,6 +48,7 @@
                      const std::string& in_app_track,
                      const std::string& in_hardware_class,
                      bool in_delta_okay,
+                     bool in_interactive,
                      const std::string& in_update_url,
                      bool in_update_disabled,
                      const std::string& in_target_version_prefix)
@@ -60,6 +62,7 @@
         app_track(in_app_track),
         hardware_class(in_hardware_class),
         delta_okay(in_delta_okay),
+        interactive(in_interactive),
         update_url(in_update_url),
         update_disabled(in_update_disabled),
         target_version_prefix(in_target_version_prefix),
@@ -78,6 +81,7 @@
   std::string app_track;
   std::string hardware_class;  // Hardware Qualification ID of the client
   bool delta_okay;  // If this client can accept a delta
+  bool interactive;   // Whether this is a user-initiated update check
 
   std::string update_url;
 
@@ -111,7 +115,8 @@
   // of the parameter. Returns true on success, false otherwise.
   bool Init(const std::string& in_app_version,
             const std::string& in_update_url,
-            const std::string& in_release_track);
+            const std::string& in_release_track,
+            bool in_interactive);
 
   // Permanently changes the release track to |track|. Returns true on success,
   // false otherwise.
diff --git a/omaha_request_params_unittest.cc b/omaha_request_params_unittest.cc
index 8908311..f3a1832 100644
--- a/omaha_request_params_unittest.cc
+++ b/omaha_request_params_unittest.cc
@@ -47,7 +47,7 @@
 bool OmahaRequestDeviceParamsTest::DoTest(OmahaRequestParams* out,
                                           const string& app_version,
                                           const string& omaha_url) {
-  bool success = params_.Init(app_version, omaha_url, "");
+  bool success = params_.Init(app_version, omaha_url, "", false);
   if (out)
     *out = params_;
   return success;
@@ -318,7 +318,7 @@
     OmahaRequestDeviceParams params;
     params.set_root(string("./") + kTestDir);
     params.SetLockDown(false);
-    EXPECT_TRUE(params.Init("", "", ""));
+    EXPECT_TRUE(params.Init("", "", "", false));
     params.SetTrack("zootrack");
   }
   OmahaRequestParams out;
@@ -343,7 +343,7 @@
     OmahaRequestDeviceParams params;
     params.set_root(string("./") + kTestDir);
     params.SetLockDown(false);
-    EXPECT_TRUE(params.Init("", "", ""));
+    EXPECT_TRUE(params.Init("", "", "", false));
     params.SetTrack("zootrack");
   }
   OmahaRequestParams out;
@@ -364,7 +364,7 @@
     OmahaRequestDeviceParams params;
     params.set_root(string("./") + kTestDir);
     params.SetLockDown(true);
-    EXPECT_TRUE(params.Init("", "", ""));
+    EXPECT_TRUE(params.Init("", "", "", false));
     params.SetTrack("zootrack");
   }
   OmahaRequestParams out;
@@ -425,15 +425,15 @@
       "CHROMEOS_AUSERVER=http://www.google.com"));
   params_.SetLockDown(true);
   // Passed-in value for release channel should be used.
-  params_.Init("", "", "beta-channel");
+  params_.Init("", "", "beta-channel", false);
   EXPECT_EQ("beta-channel", params_.app_track);
 
   // When passed-in value is invalid, value from lsb-release should be used.
-  params_.Init("", "", "foo-channel");
+  params_.Init("", "", "foo-channel", false);
   EXPECT_EQ("dev-channel", params_.app_track);
 
   // When passed-in value is empty, value from lsb-release should be used.
-  params_.Init("", "", "");
+  params_.Init("", "", "", false);
   EXPECT_EQ("dev-channel", params_.app_track);
 }
 
diff --git a/update_attempter.cc b/update_attempter.cc
index 569b626..b2cbe4c 100644
--- a/update_attempter.cc
+++ b/update_attempter.cc
@@ -242,7 +242,8 @@
 
   if (!omaha_request_params_.Init(app_version,
                                   omaha_url_to_use,
-                                  release_track)) {
+                                  release_track,
+                                  interactive)) {
     LOG(ERROR) << "Unable to initialize Omaha request device params.";
     return false;
   }
