diff --git a/services/tunnelbroker/src/main.rs b/services/tunnelbroker/src/main.rs
--- a/services/tunnelbroker/src/main.rs
+++ b/services/tunnelbroker/src/main.rs
@@ -90,12 +90,28 @@
   };
 
   let wns_config = CONFIG.wns_config.clone();
+  let wns = match wns_config {
+    Some(config) => match WNSClient::new(&config) {
+      Ok(wns_client) => {
+        info!("WNS client created successfully");
+        Some(wns_client)
+      }
+      Err(err) => {
+        error!("Error creating WNS client: {}", err);
+        None
+      }
+    },
+    None => {
+      error!("WNS config is missing");
+      None
+    }
+  };
 
   let notif_client = NotifClient {
     apns,
     fcm,
     web_push,
-    wns: None,
+    wns,
   };
 
   let grpc_server = grpc::run_server(db_client.clone(), &amqp_connection);
diff --git a/services/tunnelbroker/src/notifs/wns/error.rs b/services/tunnelbroker/src/notifs/wns/error.rs
new file mode 100644
--- /dev/null
+++ b/services/tunnelbroker/src/notifs/wns/error.rs
@@ -0,0 +1,6 @@
+use derive_more::{Display, Error, From};
+
+#[derive(Debug, From, Display, Error)]
+pub enum Error {
+  Reqwest(reqwest::Error),
+}
diff --git a/services/tunnelbroker/src/notifs/wns/mod.rs b/services/tunnelbroker/src/notifs/wns/mod.rs
--- a/services/tunnelbroker/src/notifs/wns/mod.rs
+++ b/services/tunnelbroker/src/notifs/wns/mod.rs
@@ -1,6 +1,20 @@
+use crate::notifs::wns::config::WNSConfig;
+
 pub mod config;
+mod error;
 
 #[derive(Clone)]
 pub struct WNSClient {
   http_client: reqwest::Client,
+  config: WNSConfig,
+}
+
+impl WNSClient {
+  pub fn new(config: &WNSConfig) -> Result<Self, error::Error> {
+    let http_client = reqwest::Client::builder().build()?;
+    Ok(WNSClient {
+      http_client,
+      config: config.clone(),
+    })
+  }
 }