diff --git a/backend/utils/sendEventTicketCreatedToSocket.js b/backend/utils/sendEventTicketCreatedToSocket.js
new file mode 100644
index 0000000..1e7e680
--- /dev/null
+++ b/backend/utils/sendEventTicketCreatedToSocket.js
@@ -0,0 +1,30 @@
+const { getIO } = require("./socketIO")
+
+/**
+ * Sends a ticket creation event to the hitphone socket client
+ * 
+ * @param {Object} ticketInformations Object representing the information needed to notify the Hitphone front-end
+ * @param {string} ticketInformations.companyId Company codWeb or identifier (Example: 1)
+ * @param {string} ticketInformations.extension Agent Extension that received the call (Example: 3005)
+ * @param {string} ticketInformations.ticketUrl URL of ticket created
+ */
+function sendEventTicketCreatedToSocket (ticketInformations) {
+  const { companyId, extension, ticketUrl } = ticketInformations
+  try {
+    console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Sending ticket event created to socket with data ${JSON.stringify(ticketInformations)}`)
+  
+    const io = getIO()
+    const extensionAgentRoom = `${companyId}@${extension}`
+    const roomExists = io.sockets.adapter.rooms.has(extensionAgentRoom)
+    if (roomExists) { 
+      io.to(extensionAgentRoom).emit('ticket-created', { url: ticketUrl } ) 
+      console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Ticket-created event successfully sent to: ${JSON.stringify(ticketInformations)}`)
+    } else {
+      console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Unable to send the event ticket-created because the Extension Agent (CompanyID: ${extension} | Extension: ${extension}) is not connected to the Hitphone`)
+    }
+  } catch (error) {
+    console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Unable to send the event ticket-created to Extension Agent (CompanyID: ${extension} | Extension: ${extension}) because an error occurred: \n${error}`)
+  }
+}
+
+module.exports = sendEventTicketCreatedToSocket
\ No newline at end of file
diff --git a/backend/utils/socketIO.js b/backend/utils/socketIO.js
index 4c2ed8a..47f1e51 100644
--- a/backend/utils/socketIO.js
+++ b/backend/utils/socketIO.js
@@ -1,28 +1,79 @@
-
-
 const SocketIO = require('socket.io') 
 let io
 
+const onSocketHandshakeAuthVerifier = (socket, next) => {
+
+    console.log(`${new Date().toISOString()} ===========> MIDDLEWARE: Socket trying to connect with data ${JSON.stringify(socket.handshake.auth)} and origin ${socket.handshake.headers.origin}`)
+    const codWeb = socket.handshake.auth.codWeb
+    const extension = socket.handshake.auth.extension
+    const origin = socket.handshake.headers.origin
+    if (!origin) {
+        console.log(`${new Date().toISOString()} ===========> MIDDLEWARE: Socket with data ${JSON.stringify(socket.handshake.auth)} disconnected because didn't send the origin`)
+        return next(new Error(`Invalid handshake header information information origin must be specified`))
+    }
+    const isFromHitphoneWebClient = origin.includes(process.env.URL_HITPHONE_FRONTEND)
+    if (!isFromHitphoneWebClient) {
+        socket.data.isFromHitphoneWebClient = false
+        return next()
+    }
+    
+    if (!codWeb || !extension) { 
+        console.log(`${new Date().toISOString()} ===========> MIDDLEWARE: Socket with data ${JSON.stringify(socket.handshake.auth)} disconnected because didn't send extension or codWeb`)
+        return next(new Error(`Invalid handshake auth information, required attributes codWeb, extension`))
+    }
+
+    socket.data.codWeb = codWeb
+    socket.data.extension = extension
+    socket.data.isFromHitphoneWebClient = true
+    return next()
+}
+
+const onConnectionHitphoneWebClient = (socket) => {
+    const { isFromHitphoneWebClient } = socket.data
+    if (!isFromHitphoneWebClient) return
+
+    console.log(`${new Date().toISOString()} ===========> SOCKET CONNECTION: Client connected from "Hitphone WEB Client"`)
+    const { codWeb, extension } = socket.data
+    socket.join(`${codWeb}@${extension}`)
+
+    socket.on("disconnect", (data) => {
+        console.log(`${new Date().toISOString()} ==========> SOCKET DISCONNECT: "Hitphone WEB Client" Client disconnected socket: ${data}`)
+    }) 
+}
+
+const onConnectionCrmWizardClient = (socket) => {
+    const { isFromHitphoneWebClient } = socket.data
+    if (isFromHitphoneWebClient) return
+    
+    console.log(`${new Date().toISOString()} ===========> SOCKET CONNECTION: Client connected from "CRM Wizard client"`)
+    const { codWeb, extension } = socket.data
+    socket.join(`${codWeb}@${extension}`)
+
+    socket.on("disconnect", (data) => {
+        console.log(`${new Date().toISOString()} ==========> SOCKET DISCONNECT: "CRM Wizard client" Client disconnected, data: ${data}`)
+    }) 
+}
+
 const initIO = (httpServer) => {
+    const IS_DEV = process.env.IS_DEV ? Boolean(process.env.IS_DEV) : false
+
     io = SocketIO(httpServer, {
         cors: {
-            origin: process.env.URL_OAUTH_FRONTEND_SUCCESS_REDIRECT
+            origin: IS_DEV ? "*" : [process.env.URL_OAUTH_FRONTEND_SUCCESS_REDIRECT, process.env.URL_HITPHONE_FRONTEND]
         },
         maxHttpBufferSize: 1e8
     })
 
-    io.on("connection", socket => { 
-        console.log('CLIENT CONNECTED')
-
-        socket.on("companySession", (companyId) => {
-            console.log(`A client joined a companySession channel: ${companyId}`)
-            socket.join(`company_${companyId}`)
-        });   
-
-        socket.on("disconnect", (data) => {
-            console.log(`Client disconnected socket: ${data}`)
-        }) 
-    })
+    io.use(onSocketHandshakeAuthVerifier)
+    /**
+     * CRM Wizard Client
+     */
+    io.on("connection", onConnectionCrmWizardClient)
+    /**
+     * Hitphone Client Flow
+     */
+    io.on("connection", onConnectionHitphoneWebClient)
+    
     return io
 }