diff --git a/include/weave/settings.h b/include/weave/settings.h
index 741fff2..7cb798d 100644
--- a/include/weave/settings.h
+++ b/include/weave/settings.h
@@ -61,6 +61,7 @@
   // Optional cloud information. Can be used for testing or debugging.
   std::string oauth_url;
   std::string service_url;
+  std::string xmpp_endpoint;
 
   // Cloud ID of the registered device. Empty if device is not registered.
   std::string cloud_id;
diff --git a/src/config.cc b/src/config.cc
index 44d20dd..21a1c1f 100644
--- a/src/config.cc
+++ b/src/config.cc
@@ -33,6 +33,7 @@
 const char kApiKey[] = "api_key";
 const char kOAuthURL[] = "oauth_url";
 const char kServiceURL[] = "service_url";
+const char kXmppEndpoint[] = "xmpp_endpoint";
 const char kName[] = "name";
 const char kDescription[] = "description";
 const char kLocation[] = "location";
@@ -51,6 +52,7 @@
 
 const char kWeaveUrl[] = "https://www.googleapis.com/weave/v1/";
 const char kDeprecatedUrl[] = "https://www.googleapis.com/clouddevices/v1/";
+const char kXmppEndpoint[] = "talk.google.com:5223";
 
 namespace {
 
@@ -69,6 +71,7 @@
   Config::Settings result;
   result.oauth_url = "https://accounts.google.com/o/oauth2/";
   result.service_url = kWeaveUrl;
+  result.xmpp_endpoint = kXmppEndpoint;
   result.local_anonymous_access_role = AuthScope::kViewer;
   result.pairing_modes.insert(PairingType::kPinCode);
   result.device_id = base::GenerateGUID();
@@ -119,6 +122,7 @@
   CHECK(!settings_.api_key.empty());
   CHECK(!settings_.oauth_url.empty());
   CHECK(!settings_.service_url.empty());
+  CHECK(!settings_.xmpp_endpoint.empty());
   CHECK(!settings_.oem_name.empty());
   CHECK(!settings_.model_name.empty());
   CHECK(!settings_.model_id.empty());
@@ -190,6 +194,10 @@
     set_service_url(tmp);
   }
 
+  if (dict->GetString(config_keys::kXmppEndpoint, &tmp)) {
+    set_xmpp_endpoint(tmp);
+  }
+
   if (dict->GetString(config_keys::kName, &tmp))
     set_name(tmp);
 
@@ -249,6 +257,7 @@
   dict.SetString(config_keys::kApiKey, settings_.api_key);
   dict.SetString(config_keys::kOAuthURL, settings_.oauth_url);
   dict.SetString(config_keys::kServiceURL, settings_.service_url);
+  dict.SetString(config_keys::kXmppEndpoint, settings_.xmpp_endpoint);
   dict.SetString(config_keys::kRefreshToken, settings_.refresh_token);
   dict.SetString(config_keys::kCloudId, settings_.cloud_id);
   dict.SetString(config_keys::kDeviceId, settings_.device_id);
diff --git a/src/config.h b/src/config.h
index 6dc0a07..8e0a8f3 100644
--- a/src/config.h
+++ b/src/config.h
@@ -68,6 +68,9 @@
     void set_service_url(const std::string& url) {
       settings_->service_url = url;
     }
+    void set_xmpp_endpoint(const std::string& endpoint) {
+      settings_->xmpp_endpoint = endpoint;
+    }
     void set_name(const std::string& name) { settings_->name = name; }
     void set_description(const std::string& description) {
       settings_->description = description;
diff --git a/src/config_unittest.cc b/src/config_unittest.cc
index 4b0e5b4..bb2743a 100644
--- a/src/config_unittest.cc
+++ b/src/config_unittest.cc
@@ -62,6 +62,7 @@
   EXPECT_EQ("", GetSettings().api_key);
   EXPECT_EQ("https://accounts.google.com/o/oauth2/", GetSettings().oauth_url);
   EXPECT_EQ("https://www.googleapis.com/weave/v1/", GetSettings().service_url);
+  EXPECT_EQ("talk.google.com:5223", GetSettings().xmpp_endpoint);
   EXPECT_EQ("", GetSettings().oem_name);
   EXPECT_EQ("", GetSettings().model_name);
   EXPECT_EQ("", GetSettings().model_id);
@@ -146,7 +147,8 @@
     "refresh_token": "state_refresh_token",
     "robot_account": "state_robot_account",
     "secret": "c3RhdGVfc2VjcmV0",
-    "service_url": "state_service_url"
+    "service_url": "state_service_url",
+    "xmpp_endpoint": "state_xmpp_endpoint"
   })";
   EXPECT_CALL(config_store_, LoadSettings(kConfigName)).WillOnce(Return(state));
 
@@ -157,6 +159,7 @@
   EXPECT_EQ("state_api_key", GetSettings().api_key);
   EXPECT_EQ("state_oauth_url", GetSettings().oauth_url);
   EXPECT_EQ("state_service_url", GetSettings().service_url);
+  EXPECT_EQ("state_xmpp_endpoint", GetSettings().xmpp_endpoint);
   EXPECT_EQ(GetDefaultSettings().oem_name, GetSettings().oem_name);
   EXPECT_EQ(GetDefaultSettings().model_name, GetSettings().model_name);
   EXPECT_EQ(GetDefaultSettings().model_id, GetSettings().model_id);
@@ -200,6 +203,9 @@
   change.set_service_url("set_service_url");
   EXPECT_EQ("set_service_url", GetSettings().service_url);
 
+  change.set_xmpp_endpoint("set_xmpp_endpoint");
+  EXPECT_EQ("set_xmpp_endpoint", GetSettings().xmpp_endpoint);
+
   change.set_name("set_name");
   EXPECT_EQ("set_name", GetSettings().name);
 
@@ -277,7 +283,8 @@
           'refresh_token': 'set_token',
           'robot_account': 'set_account',
           'secret': 'AQIDBAU=',
-          'service_url': 'set_service_url'
+          'service_url': 'set_service_url',
+          'xmpp_endpoint': 'set_xmpp_endpoint'
         })";
             EXPECT_JSON_EQ(expected, *test::CreateValue(json));
             callback.Run(nullptr);
diff --git a/src/device_registration_info.cc b/src/device_registration_info.cc
index 7c20084..0dc1f54 100644
--- a/src/device_registration_info.cc
+++ b/src/device_registration_info.cc
@@ -463,8 +463,9 @@
   current_notification_channel_ = pull_channel_.get();
 
   notification_channel_starting_ = true;
-  primary_notification_channel_.reset(new XmppChannel{
-      GetSettings().robot_account, access_token_, task_runner_, network_});
+  primary_notification_channel_.reset(
+      new XmppChannel{GetSettings().robot_account, access_token_,
+                      GetSettings().xmpp_endpoint, task_runner_, network_});
   primary_notification_channel_->Start(this);
 }
 
@@ -833,17 +834,25 @@
     const std::string& api_key,
     const std::string& oauth_url,
     const std::string& service_url,
+    const std::string& xmpp_endpoint,
     ErrorPtr* error) {
   if (HaveRegistrationCredentials()) {
     return Error::AddTo(error, FROM_HERE, kErrorAlreayRegistered,
                         "Unable to change config for registered device");
   }
   Config::Transaction change{config_};
-  change.set_client_id(client_id);
-  change.set_client_secret(client_secret);
-  change.set_api_key(api_key);
-  change.set_oauth_url(oauth_url);
-  change.set_service_url(service_url);
+  if (!client_id.empty())
+    change.set_client_id(client_id);
+  if (!client_secret.empty())
+    change.set_client_secret(client_secret);
+  if (!api_key.empty())
+    change.set_api_key(api_key);
+  if (!oauth_url.empty())
+    change.set_oauth_url(oauth_url);
+  if (!service_url.empty())
+    change.set_service_url(service_url);
+  if (!xmpp_endpoint.empty())
+    change.set_xmpp_endpoint(xmpp_endpoint);
   return true;
 }
 
diff --git a/src/device_registration_info.h b/src/device_registration_info.h
index f670b68..a296258 100644
--- a/src/device_registration_info.h
+++ b/src/device_registration_info.h
@@ -78,6 +78,7 @@
                            const std::string& api_key,
                            const std::string& oauth_url,
                            const std::string& service_url,
+                           const std::string& xmpp_endpoint,
                            ErrorPtr* error);
 
   void GetDeviceInfo(const CloudRequestDoneCallback& callback);
diff --git a/src/device_registration_info_unittest.cc b/src/device_registration_info_unittest.cc
index 7908c8b..bbc167e 100644
--- a/src/device_registration_info_unittest.cc
+++ b/src/device_registration_info_unittest.cc
@@ -44,6 +44,7 @@
 
 namespace test_data {
 
+const char kXmppEndpoint[] = "xmpp.server.com:1234";
 const char kServiceURL[] = "http://gcd.server.com/";
 const char kOAuthURL[] = "http://oauth.server.com/";
 const char kApiKey[] = "GOadRdTf9FERf0k4w6EFOof56fUJ3kFDdFL3d7f";
@@ -144,6 +145,7 @@
           settings->model_id = "AAAAA";
           settings->oauth_url = test_data::kOAuthURL;
           settings->service_url = test_data::kServiceURL;
+          settings->xmpp_endpoint = test_data::kXmppEndpoint;
           return true;
         }));
     config_.reset(new Config{&config_store_});
diff --git a/src/notification/xmpp_channel.cc b/src/notification/xmpp_channel.cc
index ceb45ed..f9d7924 100644
--- a/src/notification/xmpp_channel.cc
+++ b/src/notification/xmpp_channel.cc
@@ -7,6 +7,7 @@
 #include <string>
 
 #include <base/bind.h>
+#include <base/strings/string_number_conversions.h>
 #include <weave/provider/network.h>
 #include <weave/provider/task_runner.h>
 
@@ -16,6 +17,7 @@
 #include "src/notification/notification_parser.h"
 #include "src/notification/xml_node.h"
 #include "src/privet/openssl_utils.h"
+#include "src/string_utils.h"
 #include "src/utils.h"
 
 namespace weave {
@@ -74,9 +76,6 @@
     false,
 };
 
-const char kDefaultXmppHost[] = "talk.google.com";
-const uint16_t kDefaultXmppPort = 5223;
-
 // Used for keeping connection alive.
 const int kRegularPingIntervalSeconds = 60;
 const int kRegularPingTimeoutSeconds = 30;
@@ -91,10 +90,12 @@
 
 XmppChannel::XmppChannel(const std::string& account,
                          const std::string& access_token,
+                         const std::string& xmpp_endpoint,
                          provider::TaskRunner* task_runner,
                          provider::Network* network)
     : account_{account},
       access_token_{access_token},
+      xmpp_endpoint_{xmpp_endpoint},
       network_{network},
       backoff_entry_{&kDefaultBackoffPolicy},
       task_runner_{task_runner},
@@ -285,10 +286,16 @@
 void XmppChannel::CreateSslSocket() {
   CHECK(!stream_);
   state_ = XmppState::kConnecting;
-  LOG(INFO) << "Starting XMPP connection to " << kDefaultXmppHost << ":"
-            << kDefaultXmppPort;
+  LOG(INFO) << "Starting XMPP connection to: " << xmpp_endpoint_;
 
-  network_->OpenSslSocket(kDefaultXmppHost, kDefaultXmppPort,
+  std::pair<std::string, std::string> host_port =
+      SplitAtFirst(xmpp_endpoint_, ":", true);
+  CHECK(!host_port.first.empty());
+  CHECK(!host_port.second.empty());
+  uint32_t port = 0;
+  CHECK(base::StringToUint(host_port.second, &port)) << xmpp_endpoint_;
+
+  network_->OpenSslSocket(host_port.first, port,
                           base::Bind(&XmppChannel::OnSslSocketReady,
                                      task_ptr_factory_.GetWeakPtr()));
 }
diff --git a/src/notification/xmpp_channel.h b/src/notification/xmpp_channel.h
index 50e84d2..b0a4468 100644
--- a/src/notification/xmpp_channel.h
+++ b/src/notification/xmpp_channel.h
@@ -45,6 +45,7 @@
   // so you will need to reset the XmppClient every time this happens.
   XmppChannel(const std::string& account,
               const std::string& access_token,
+              const std::string& xmpp_endpoint,
               provider::TaskRunner* task_runner,
               provider::Network* network);
   ~XmppChannel() override = default;
@@ -124,12 +125,15 @@
   // Robot account name for the device.
   std::string account_;
 
-  // Full JID of this device.
-  std::string jid_;
-
   // OAuth access token for the account. Expires fairly frequently.
   std::string access_token_;
 
+  // Xmpp endpoint.
+  std::string xmpp_endpoint_;
+
+  // Full JID of this device.
+  std::string jid_;
+
   provider::Network* network_{nullptr};
   std::unique_ptr<Stream> stream_;
 
diff --git a/src/notification/xmpp_channel_unittest.cc b/src/notification/xmpp_channel_unittest.cc
index 674fe22..dfa2a79 100644
--- a/src/notification/xmpp_channel_unittest.cc
+++ b/src/notification/xmpp_channel_unittest.cc
@@ -26,6 +26,7 @@
 
 constexpr char kAccountName[] = "Account@Name";
 constexpr char kAccessToken[] = "AccessToken";
+constexpr char kEndpoint[] = "endpoint:456";
 
 constexpr char kStartStreamMessage[] =
     "<stream:stream to='clouddevices.gserviceaccount.com' "
@@ -84,7 +85,8 @@
  public:
   explicit FakeXmppChannel(provider::TaskRunner* task_runner,
                            provider::Network* network)
-      : XmppChannel{kAccountName, kAccessToken, task_runner, network},
+      : XmppChannel{kAccountName, kAccessToken, kEndpoint, task_runner,
+                    network},
         stream_{new test::FakeStream{task_runner_}},
         fake_stream_{stream_.get()} {}
 
@@ -122,7 +124,7 @@
 class XmppChannelTest : public ::testing::Test {
  protected:
   XmppChannelTest() {
-    EXPECT_CALL(network_, OpenSslSocket("talk.google.com", 5223, _))
+    EXPECT_CALL(network_, OpenSslSocket("endpoint", 456, _))
         .WillOnce(
             WithArgs<2>(Invoke(&xmpp_client_, &FakeXmppChannel::Connect)));
   }
