diff --git a/login_event_client.cc b/login_event_client.cc
index 6c1b44e..5b781f9 100644
--- a/login_event_client.cc
+++ b/login_event_client.cc
@@ -17,22 +17,25 @@
 
 namespace chaps {
 
-LoginEventClient::LoginEventClient() : proxy_(NULL) {}
+LoginEventClient::LoginEventClient()
+  : proxy_(new ChapsProxyImpl()),
+    is_connected_(false) {
+  CHECK(proxy_);
+}
 
 LoginEventClient::~LoginEventClient() {
   delete proxy_;
 }
 
-bool LoginEventClient::Init() {
-  proxy_ = new ChapsProxyImpl();
-  CHECK(proxy_);
-  return proxy_->Init();
-}
-
 void LoginEventClient::FireLoginEvent(const string& path,
                                       const uint8_t* auth_data,
                                       size_t auth_data_length) {
   CHECK(proxy_);
+  if (!Connect()) {
+    LOG(WARNING) << "Failed to connect to the Chaps daemon. "
+                 << "Login notification will not be sent.";
+    return;
+  }
   // TODO(dkrahn): Use SecureBlob; see crosbug.com/27681.
   vector<uint8_t> auth_data_vector(auth_data, auth_data + auth_data_length);
   proxy_->FireLoginEvent(path, auth_data_vector);
@@ -41,6 +44,11 @@
 
 void LoginEventClient::FireLogoutEvent(const string& path) {
   CHECK(proxy_);
+  if (!Connect()) {
+    LOG(WARNING) << "Failed to connect to the Chaps daemon. "
+                 << "Logout notification will not be sent.";
+    return;
+  }
   proxy_->FireLogoutEvent(path);
 }
 
@@ -51,6 +59,11 @@
     const uint8_t* new_auth_data,
     size_t new_auth_data_length) {
   CHECK(proxy_);
+  if (!Connect()) {
+    LOG(WARNING) << "Failed to connect to the Chaps daemon. "
+                 << "Change authorization data notification will not be sent.";
+    return;
+  }
   // TODO(dkrahn): Use SecureBlob; see crosbug.com/27681.
   vector<uint8_t> old_auth_data_vector(old_auth_data,
                                        old_auth_data + old_auth_data_length);
@@ -63,4 +76,10 @@
   chromeos::SecureMemset(&new_auth_data_vector[0], 0, new_auth_data_length);
 }
 
+bool LoginEventClient::Connect() {
+  if (!is_connected_)
+    is_connected_ = proxy_->Init();
+  return is_connected_;
+}
+
 }  // namespace chaps
diff --git a/login_event_client.h b/login_event_client.h
index 8ff8351..b65fafb 100644
--- a/login_event_client.h
+++ b/login_event_client.h
@@ -23,9 +23,6 @@
   LoginEventClient();
   virtual ~LoginEventClient();
 
-  // Initializes the client instance. Returns true on success.
-  bool Init();
-
   // Sends a login event. The Chaps daemon will insert a token for the user.
   //  path - The path to the user's token directory.
   //  auth_data - Authorization data to unlock the token.
@@ -49,6 +46,10 @@
                                size_t new_auth_data_length);
  private:
   ChapsProxyImpl* proxy_;
+  bool is_connected_;
+
+  // Attempts to connect to the Chaps daemon. Returns true on success.
+  bool Connect();
 
   DISALLOW_COPY_AND_ASSIGN(LoginEventClient);
 };
