/* eslint-disable */ (function () { let source, isMicroSite, activationStatus, enterpriseNumber; let secondIframeLoaded = false, onceClickedOnSecFrame = false, windowIframeBody; try { if ( window && window.parent && window.parent.__INITIAL_STATE__ && window.parent.__INITIAL_STATE__.homeReducer && window.parent.__INITIAL_STATE__.homeReducer.data ) { let homeReducerData = window.parent.__INITIAL_STATE__.homeReducer.data; isMicroSite = true; //ask microsite enterpriseNumber = homeReducerData.enterpriseInfo ? homeReducerData.enterpriseInfo.businessNumber : homeReducerData.businessNumber; source = 6; activationStatus = homeReducerData.activationStatus; //var businessName = homeReducerData.name; } } catch (e) { log(e); } if (!document.getElementsByClassName) { document.getElementsByClassName = function (className) { return this.querySelectorAll("." + className); }; Element.prototype.getElementsByClassName = document.getElementsByClassName; } const CONSIDER_MIN_WIDTH = { "https://grabercustomstructures.com" : true } let bfi; let totalWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; if (CONSIDER_MIN_WIDTH[window?.origin]) { let widths = [ window.innerWidth, document.documentElement?.clientWidth, document.body?.clientWidth ].filter(Boolean); // Removes undefined or falsy values totalWidth = Math.min(...widths); } let totalHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; let tries = 1; let extensionInterval; let env; let windowIframe; window.be_webchat = null; function playBubbleSound() { let context, source = "https://d3cnqzq0ivprch.cloudfront.net/prod/media/notification-sound.mp3"; try { window.AudioContext = window.AudioContext || window.webkitAudioContext; context = new AudioContext(); let request = new XMLHttpRequest(); request.open("GET", source, true); request.responseType = "arraybuffer"; request.onload = function () { context.decodeAudioData( request.response, function (buffer) { let source = context.createBufferSource(); source.buffer = buffer; source.connect(context.destination); source.start(0); context.resume(); }, function (e) { console.log("error", e); } ); }; request.send(); } catch (e) { if (/Edge\/|Trident\/|MSIE /.test(navigator.userAgent)) { let audio = document.createElement("audio"); audio.autoplay = true; audio.src = source; audio.play(); } } } function checkIsAgentPreview (isPreview, widgetAgent) { return (isPreview === 1 || isPreview === "1") && widgetAgent.length > 0; }; function getGoodBot(type) { const goodBots = [ "facebookexternalhit", "Facebot", "Googlebot", "Google", "LinkedInBot", ]; const ua = navigator.userAgent; let isGoodBots = false; let botName = ""; for (let i = 0; i < goodBots.length; i++) { const bot = goodBots[i]; if (ua.indexOf(bot) > -1) { isGoodBots = true; botName = bot.toLowerCase(); break; } } if (type == "isGoodBot") { return isGoodBots; } else { botName = botName != "" ? botName : "facebook"; botName = botName.indexOf("face") > -1 ? "facebook" : botName; botName = botName.indexOf("linked") > -1 ? "linked-in" : botName; return botName; } } function initIframe() { let bfdiv = document.getElementById("bf-revz-widget-" + window.wid) || document.getElementById("bf-revz-widget-" + "0" + window.wid); if (!bfdiv) { tries++; if (tries > 50) { return false; } setTimeout(initIframe, 500); return; } if (!bfdiv.firstChild) { bfdiv.appendChild(bfi); } else if (bfdiv.firstChild && bfdiv.firstChild.nodeName != "IFRAME") { bfdiv.insertBefore(bfi, bfdiv.firstChild); } } let winHeight = 100; let winWidth = "431px"; if (window.innerHeight < 100) { winHeight = window.innerHeight; } if (CONSIDER_MIN_WIDTH[window?.origin]) { if (totalWidth < 500) { winWidth = "100%"; } } else { if (window.innerWidth < 500) { winWidth = "100%"; } } window.addEventListener("resize", function () { if (window.innerHeight < 727) { winHeight = window.innerHeight; } else { winHeight = 773; } }); const openWebchatFromOutside = (objFromClient) => { const firstIframe = document.getElementById("bewebchat"); const secondIframe = document.getElementById("window-iframe"); firstIframe.contentWindow.postMessage( { type: "post-message-from-outside", clientObj: objFromClient, beWebchatWindowObj: JSON.stringify(window.be_webchat), isWidgetAlignLeft: window.isWidgetAlignLeft, mFullView: window.mFullView, isPreview: window.isPreview, widgetAgent: JSON.stringify(window.widgetAgent), draftSessionId: window.draftSessionId, workFlowId: window.workFlowId }, "*" ); secondIframe.contentWindow.postMessage( { type: "post-message-from-outside-chat", clientObj: objFromClient, beWebchatWindowObj: JSON.stringify(window.be_webchat), isWidgetAlignLeft: window.isWidgetAlignLeft, locale: window.locale, mFullView: window.mFullView, isPreview: window.isPreview, widgetAgent: JSON.stringify(window.widgetAgent), draftSessionId: window.draftSessionId, workFlowId: window.workFlowId }, "*" ); }; window.onmessage = function (e) { if (e.data && e.data.split) { const isAgentPreview = checkIsAgentPreview(window.isPreview, window.widgetAgent); let dataReceivedSplit = e.data.split("***"); let dataReceived = dataReceivedSplit[0]; let widthReceived = dataReceivedSplit[1]; if (totalWidth < 960) { widthReceived = "drawer"; } if (dataReceived == "icon-clicked") { if (!secondIframeLoaded) { if (!onceClickedOnSecFrame) { loadNewIframe(); } } document.getElementById("bewebchat").style.height = isAgentPreview ? "70px" : "80px"; document.getElementById("bewebchat").style.width = isAgentPreview ? "200px" : "70px"; if (widthReceived == "floating") { document .getElementById("window-iframe") .setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:${isAgentPreview ? "0" : "20px"}; position:fixed; overflow:hidden; width:${winWidth}; z-index:9999998; border: 0; height: ${(isAgentPreview ? 90 : winHeight) + "%"}; ` ); } else { document .getElementById("window-iframe") .setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:0px" : "right:0px"}; bottom:0px; position:fixed; overflow:hidden; width:${winWidth}; height: 100%; border: 0;` ); } window.be_webchat = { ...window.be_webchat, windowOpened: true, }; if(isAgentPreview) { window.dispatchEvent(new CustomEvent("webchat:opened", { detail: true })); } } else if (dataReceived == "icon-closed") { let wid = "20px"; if (totalWidth < 960) { wid = "20px"; } let element = document.getElementById("window-iframe"); element.style.height = 0; secondIframeLoaded = false; window.be_webchat = { ...window.be_webchat, windowOpened: false, }; if(isAgentPreview){ window.dispatchEvent(new CustomEvent("webchat:closed", { detail: false })); } } else if (dataReceived == "getwidth") { e.source.postMessage( { width: totalWidth, height: totalHeight, src: "birdeye", updateValFromParent: window.update, }, "*" ); } else if (dataReceived == "show-bubble") { bfi.setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: ${isAgentPreview ? "hidden" : "visible"}; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:20px; position:fixed; overflow:hidden; ${isAgentPreview ? "width:200px" : "width:340px"}; ${isAgentPreview ? "height:70px" : "height:227px"}; border: 0;` ); } else if (dataReceived == "hide-bubble") { bfi.setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: ${isAgentPreview ? "hidden" : "visible"}; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:20px; position:fixed; overflow:hidden; ${isAgentPreview ? "width:200px" : "width:70px"}; ${isAgentPreview ? "height:70px" : "height:80px"}; border: 0;` ); } else if (dataReceived == "get-parent-url") { if (!window.be_webchat) { window.be_webchat = { open: openWebchatFromOutside, }; } e.source.postMessage( { type: "put-parent-url", url: document.location.href, hostname: document.location.hostname, href: document.location.origin, src: "birdeye", isMicroSite: isMicroSite ? isMicroSite : false, frmMicrosite: frmMicrosite ? frmMicrosite : false, isWidgetAlignLeft: window.isWidgetAlignLeft ? window.isWidgetAlignLeft : false, mFullView: window.mFullView ? window.mFullView : false, enterpriseNumber: isMicroSite ? enterpriseNumber : null, width: totalWidth, height: totalHeight, src: "birdeye", updateValFromParent: window.update, bizDataResp: window.bizDataResp, beWebchatWindowObj: JSON.stringify(window.be_webchat), updatedBizData: true, locale: window.locale, isPreview: window.isPreview ? window.isPreview : 0, widgetAgent: window.widgetAgent ? window.widgetAgent : "", draftSessionId: window.draftSessionId, workFlowId: window.workFlowId }, "*" ); } else if ( dataReceived == "push-datalayer" && window && typeof window.dataLayer !== "undefined" ) { window.dataLayer.push(JSON.parse(dataReceivedSplit[1])); } else if ( dataReceived == "push-avbDatalayer" && window && typeof window.avbData !== "undefined" ) { window.avbData.push(JSON.parse(dataReceivedSplit[1])); } else if (dataReceived == "push-analytics") { try { try { const config = JSON.parse(dataReceivedSplit[1]); switch (config.googleAnalyticsVersion) { case "UA": if (ga && typeof ga == "function") { const nonInteractionObj = config.nonInteraction ? { nonInteraction: 1 } : null; ga( "send", "event", "webchat", config.action, config.actionLabel, nonInteractionObj ); } else { console.warn( "Webchat Analytics ReferenceError: ga is not defined" ); } break; case "GST": if (gtag && typeof gtag == "function") { const nonInteractionObj = config.nonInteraction ? { non_interaction: true } : {}; gtag("event", config.action, { event_category: "webchat", event_label: config.actionLabel.trim(), value: 1, ...nonInteractionObj, }); } else { console.warn( "Webchat Analytics ReferenceError: gtag is not defined" ); } break; } } catch (e) { console.warn("Webchat Analytics", e); } } catch (e) { console.warn("Webchat Analytics", e); } } else if (dataReceived == "be-custom-event-fire") { const customEventData = JSON.parse(dataReceivedSplit[1]); const be_event = new CustomEvent("beWebchatCustomEvent", { detail: customEventData, }); window.parent.document.dispatchEvent(be_event); } else if (dataReceived == "bubble-icon-sound") { playBubbleSound(); } } }; if (document.readyState === "complete") { extensionInterval = setInterval(function () { env = window.envObj ? window.envObj : {}; const bizResp = window.bizDataResp ? window.bizDataResp : {}; const locationListLen = bizResp ? bizResp["businessLocations"] && bizResp["businessLocations"].length : 0; if (Object.keys(env).length && locationListLen > 0) { getFirstIframeAndInit(env); } }, 100); } else { if (window.addEventListener) { // DOM2 standard window.addEventListener("load", windowOnloadHandler, false); } else if (window.attachEvent) { // Microsoft's precursor to it, IE8 and earlier window.attachEvent("onload", windowOnloadHandler); } else { // Some pre-1999 browser window.onload = windowOnloadHandler; } function windowOnloadHandler() { env = window.envObj ? window.envObj : {}; const bizResp = window.bizDataResp ? window.bizDataResp : {}; const locationListLen = bizResp ? bizResp["businessLocations"] && bizResp["businessLocations"].length : 0; if (locationListLen > 0) { getFirstIframeAndInit(env); } } } function getFirstIframeAndInit(env) { extensionInterval && clearInterval(extensionInterval); const isAgentPreview = checkIsAgentPreview(window.isPreview, window.widgetAgent); bfi = document.createElement("iframe"); bfi.name = "bfiframe"; bfi.id = "bewebchat"; bfi.loading = "lazy"; bfi.title = "Webchat widget"; bfi.src = env.protocol + env.domain + `/getBubbleContent?update=${window.update}&source=${window.source}&bNum=${window.bNum}&apikey=${window.apikey}&widgetApiVersion=${window.widgetApiVersion}&isWidgetAlignLeft=${window.isWidgetAlignLeft}&mFullView=${window.mFullView}&isPreview=${window.isPreview}&widgetAgent=${window.widgetAgent}&draftSessionId=${draftSessionId}${window.workFlowId ? `&workFlowId=${window.workFlowId}` : ""}`; bfi.setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: ${isAgentPreview ? "hidden" : "visible"}; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:20px; position:fixed; overflow:hidden; ${isAgentPreview ? "width:200px" : "width:70px"}; ${isAgentPreview ? "height:70px" : "height:80px"}; border:0` ); initIframe(); bfi.onload = loadNewIframe.bind(this); const firstIframeEl = document.getElementById("bewebchat"); firstIframeEl.style.colorScheme = "light"; } function appendSecondIframe() { secondIframeLoaded = true; onceClickedOnSecFrame = true; let bfdiv = document.getElementById("bf-revz-widget-" + window.wid) || document.getElementById("bf-revz-widget-" + "0" + window.wid); bfdiv.appendChild(windowIframe); const bodyEl = document.querySelector("#window-iframe").parentElement .parentElement; windowIframeBody = document.querySelector("#window-iframe") .contentDocument ? document.querySelector("#window-iframe").contentDocument.body : null; bodyEl.addEventListener("click", function (e) { let emojiEl = windowIframeBody && windowIframeBody.querySelector(".emoji-wrap"); if ( emojiEl && e.target !== document.querySelector("#window-iframe") ) { emojiEl.classList.add("hide-emoji"); emojiEl.style.display = "none"; } }); const secondIframeEl = document.getElementById("window-iframe"); secondIframeEl.style.colorScheme = "light"; } function loadNewIframe() { windowIframe = document.createElement("iframe"); windowIframe.name = "wciframe"; windowIframe.id = "window-iframe"; windowIframe.loading = "lazy"; windowIframe.title = "Webchat widget"; windowIframe.src = env.protocol + env.domain + `/getChatWindowContent?emailRequired=${window.emailRequired}&bNum=${window.bNum}&mobileRequired=${window.mobileRequired}&defaultCountryCode=${window.defaultCountryCode}&apikey=${window.apikey}&widgetApiVersion=${window.widgetApiVersion}&isMicroSite=${window.isMicroSite}&activationStatus=${window.activationStatus}&isWidgetAlignLeft=${window.isWidgetAlignLeft}&mFullView=${window.mFullView}&isPreview=${window.isPreview}&widgetAgent=${window.widgetAgent}&draftSessionId=${draftSessionId}${window.workFlowId ? `&workFlowId=${window.workFlowId}` : ""}`; windowIframe.setAttribute( "style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px"}; bottom:20px; position:fixed; overflow:hidden; width:346px; z-index:9999998; border: 0; height: 0px;` ); appendSecondIframe(); } })(); var wid = 2438741584; var update = 0; var soundOff = 1; var envObj = {"domain":"webchat.birdeye.com","protocol":"https://","isWidgetAlignLeft":false,"mFullView":false,"isPreview":0,"widgetAgent":"","workFlowId":null}; var emailRequired = 0; var isPreview = 0; var widgetAgent = ""; var defaultCountryCode = 0; var mobileRequired = 1; var apikey = "39913f8d8c62b3fc48d55a332570762c967dcaf6f0433858"; var widgetApiVersion = 2; var bNum = 157055405927040; var update = 0; var isMicroSite = false; var frmMicrosite = false; var isWidgetAlignLeft = false; var mFullView = false; var activationStatus = false; var source = false; var bizDataResp = {"accountType":3,"businessOpen":false,"locale":null,"fields":null,"allLocationDisabled":0,"apiKey":null,"autoDetectLocationEnabled":true,"autoReplyTxt":"Thank you for contacting Best Cleaners! Someone from our team will reach out shortly.","bannerColor":"#F8F8F8","bannerTextColor":"#000000","btnColor":"#1590c8","btnTxtColor":"#FFFFFF","businessDomain":null,"businessId":157055405927040,"businessLocations":[{"address1":"138 Mill St","address2":"","businessAlias":"Best Cleaners - 06 - Berlin","businessId":157048483476947,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 499-4415","chatEnabled":true,"city":"Berlin","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.6255984,"location":"Berlin, CT - 138 Mill St","locationName":"Best Cleaners","longitude":-72.7485525,"name":"Best Cleaners","phone":"(860) 828-9386","shortBusinessId":662554,"state":"CT","zipcode":"06037"},{"address1":"100 North St","address2":"","businessAlias":"Best Cleaners - 03 - Bristol","businessId":157048483525162,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 553-9491","chatEnabled":true,"city":"Bristol","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.6810785,"location":"Bristol, CT","locationName":"Best Cleaners","longitude":-72.9457106,"name":"Best Cleaners","phone":"(860) 583-3935","shortBusinessId":662556,"state":"CT","zipcode":"06010"},{"address1":"1 Lovely St","address2":"","businessAlias":"Best Cleaners - 10 - Canton","businessId":157048485784383,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 847-8192","chatEnabled":true,"city":"Canton","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.82320989,"location":"Canton, CT","locationName":"Best Cleaners","longitude":-72.8886639,"name":"Best Cleaners","phone":"(860) 693-0056","shortBusinessId":662561,"state":"CT","zipcode":"06019"},{"address1":"2759 Main St","address2":"","businessAlias":"Best Cleaners - 01 - Glastonbury","businessId":157048483464325,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 431-6877","chatEnabled":true,"city":"Glastonbury","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.7182082,"location":"Glastonbury, CT","locationName":"Best Cleaners","longitude":-72.6136836,"name":"Best Cleaners","phone":"(860) 633-0591","shortBusinessId":662553,"state":"CT","zipcode":"06033"},{"address1":"4-8 E Hampton Rd","address2":"","businessAlias":"Best Cleaners - 35 - Marlborough","businessId":174888340319492,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 846-4798","chatEnabled":true,"city":"Marlborough","countryCode":"US","latitude":41.631374,"location":"Marlborough, CT","locationName":"Best Cleaners","longitude":-72.46037,"name":"Best Cleaners","phone":"(860) 467-0111","shortBusinessId":1554942,"state":"CT","zipcode":"06447"},{"address1":"1088 Newfield St","address2":"","businessAlias":"Best Cleaners - 15 - Newfield St","businessId":157048485349912,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 609-6527","chatEnabled":true,"city":"Middletown","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.58847919,"location":"Middletown, CT - 1088 Newfield St","locationName":"Best Cleaners","longitude":-72.6749384,"name":"Best Cleaners","phone":"(860) 632-2217","shortBusinessId":662559,"state":"CT","zipcode":"06457"},{"address1":"522 S Main St","address2":"","businessAlias":"Best Cleaners - 02 - South Main St","businessId":157048483448672,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 546-3906","chatEnabled":true,"city":"Middletown","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.54207379,"location":"Middletown, CT - 522 S Main St","locationName":"Best Cleaners","longitude":-72.6521183,"name":"Best Cleaners","phone":"(860) 347-9449","shortBusinessId":662552,"state":"CT","zipcode":"06457"},{"address1":"94 Washington Ave","address2":"","businessAlias":"Best Cleaners - 17 - North Haven","businessId":157048486221592,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(475) 234-4849","chatEnabled":true,"city":"North Haven","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.39371108,"location":"North Haven, CT","locationName":"Best Cleaners","longitude":-72.85697119,"name":"Best Cleaners","phone":"(203) 234-2378","shortBusinessId":662564,"state":"CT","zipcode":"06473"},{"address1":"90 Halls Rd","address2":"","businessAlias":"Best Cleaners - 33 - Old Lyme","businessId":157048485786459,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 419-7065","chatEnabled":true,"city":"Old Lyme","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.3221932,"location":"Old Lyme, CT","locationName":"Best Cleaners","longitude":-72.33802159,"name":"Best Cleaners","phone":"(860) 434-7743","shortBusinessId":662562,"state":"CT","zipcode":"06371"},{"address1":"69 East St","address2":"","businessAlias":"Best Cleaners - 04 - Plainville","businessId":157048483506115,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 979-6417","chatEnabled":true,"city":"Plainville","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.6695316,"location":"Plainville, CT","locationName":"Best Cleaners","longitude":-72.86144809,"name":"Best Cleaners","phone":"(860) 747-6221","shortBusinessId":662555,"state":"CT","zipcode":"06062"},{"address1":"2349 Main St","address2":"","businessAlias":"Best Cleaners - 12 - Rocky Hill","businessId":157048485394193,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 650-5721","chatEnabled":true,"city":"Rocky Hill","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.66457539,"location":"Rocky Hill, CT","locationName":"Best Cleaners","longitude":-72.6399479,"name":"Best Cleaners","phone":"(860) 721-0500","shortBusinessId":662560,"state":"CT","zipcode":"06067"},{"address1":"1227 Hopmeadow St","address2":"","businessAlias":"Best Cleaners - 32 - Simsbury","businessId":157048485867677,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 467-1941","chatEnabled":true,"city":"Simsbury","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.8993869,"location":"Simsbury, CT","locationName":"Best Cleaners","longitude":-72.78689799,"name":"Best Cleaners","phone":"(860) 408-9868","shortBusinessId":662563,"state":"CT","zipcode":"06070"},{"address1":"17 Sedgwick Rd","address2":"","businessAlias":"Best Cleaners - 34 - West Hartford","businessId":163277339387783,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 532-7427","chatEnabled":true,"city":"West Hartford","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.7525678,"location":"West Hartford, CT","locationName":"Best Cleaners","longitude":-72.74460449,"name":"Best Cleaners","phone":"(860) 270-0880","shortBusinessId":853777,"state":"CT","zipcode":"06107"},{"address1":"292 Poquonock Ave","address2":"","businessAlias":"Best Cleaners - 16 - Windsor","businessId":157048485345414,"businessName":"Best Cleaners","businessSMSPhoneNumber":"(860) 935-6342","chatEnabled":true,"city":"Windsor","countryCode":"US","emailId":"customercare@bestcleaners.com","latitude":41.861569,"location":"Windsor, CT","locationName":"Best Cleaners","longitude":-72.65295979,"name":"Best Cleaners","phone":"(860) 688-3300","shortBusinessId":662558,"state":"CT","zipcode":"06095"}],"businessName":"Best Cleaners - CT","businessSMSPhoneNumber":null,"chatBubble":"Have a question? We are here to help!","chatIcon":"twocolored","chatIconColor":"#1590c8","chatIconForeColor":"#FFFFFF","chatIconValue":null,"chatTheme":"floating","chatbotHours":null,"customFields":null,"disclaimer":"By sending this message, you expressly consent to receive communications from us. You may opt out at any time.","disclaimerLinks":[],"disclaimerSelectionStatus":0,"emailMandatory":false,"enableChatBubble":1,"enableChatBubbleSound":1,"enableGoogleAnalytics":false,"enablePrechatForm":1,"enableReplyInBusinessHr":1,"enableReplyPostBusinessHr":1,"enabled":1,"externalId":157055405927040,"fallbackMessage":null,"googleAnalyticsVersion":"","googleTrackingId":"","headerDescription":"Hello! Our team is here to help. Enter your message below and one of our reps will text you shortly.","headerHeadline":"Welcome to Best Cleaners!","installed":1,"isChatbotEnabled":true,"isLiveChatEnabled":true,"liveChatOfflineClosingMessageBody":"We'll follow up with you soon. You can always text us at [Business Texting Number].","liveChatOfflineClosingMessageHeader":"We'll text you!","liveChatOfflineTextMessage":"Thank you for contacting Best Cleaners! We are currently closed, but we'll text you when we're back!","liveChatOfflineWelcomeMessage":"We're closed right now but we got your message. We'll text you on your number when we're back!","liveChatOnlineClosingMessageBody":"The best way to get ahold of us is to text us [Business Texting Number].","liveChatOnlineClosingMessageHeader":"Text us!","liveChatOnlineTextMessage":"Thank you for contacting Best Cleaners! Someone from our team will reach out shortly.","liveChatOnlineWelcomeMessage":"Give us a moment while we look for someone available to help you.","locationHierarchy":null,"microsite":0,"mobileView":"fullView","onlineClosingMessageBody":null,"onlineWelcomeMessageHeader":null,"popupInterval":5,"prechatFormInsideBusinessHours":1,"prechatFormOutsideBusinessHours":1,"replyTextPostBusinessHr":"Thank you for contacting us! We are currently out of business hours, but we’ll get back to you as soon as we can.","robinInsideBusinessHours":null,"robinOutsideBusinessHours":null,"smb":false,"statusUpdateOn":"2026-09-20T03:01:07.000Z","supportedCountryCodes":["US","PR","VI","MX","CA"],"teams":null,"thankyouMsgDescription":null,"thankyouMsgHeadline":null,"timerDisplay":1,"timerSeconds":180,"userProfile":[{"userProfileImage":"","userProfileName":""}],"webChatOfflineClosingMessageBody":"We will follow up with you soon. You can always text us at [Business Texting Number].","webChatOfflineClosingMessageHeader":"We will text you !","webChatOnlineClosingMessageBody":"We will follow up with you soon. You can always text us at [Business Texting Number] ","webChatOnlineClosingMessageHeader":"We will text you !","websites":["http%3A//www.bestcleaners.com","https%3A//www.bestcleaners.com"],"widgetAgent":[],"widgetConfigId":4420,"widgetName":null,"bubbleBGColor":"#F8F8F8"}; var locale = "en"; var draftSessionId = null; var workFlowId = null;