Complete Cleaning CRM Software

Cleaning Franchises

We Serve

Maid/Home Cleaning

Landscaping

Chimney Sweeps

Pressure Washing

Commercial Cleaning

Tree Service

Pool Cleaning

Air Duct Cleaning

Carpet Cleaning

Blinds Cleaning

Industrial Cleaning

Window Cleaning


Grow Business 

Outreach with Power Dialer

Call hundreds per day using power dialer

Set up call lists with one click

Superior call quality without any “dead air”

Take notes and set appointments during calls

Set up follow-up tasks with a click

Email us to find out more

Email us to find out more

Get Leads From Social Media

Create contents with little effort

Schedule in advance using social calendar

Reply to all social comments

Generate leads from social media

Review social reach and insights

Engage Using Text Marketing

Personalize text messages

Send customized text offers with one click

Create and manage text templates

Contact us to find out more

Email us to find out more

Capture Online Leads and Appointments

Design professional landing pages with embedded forms

Design web forms to collect visitor data

Capture leads directly into CRM

Send automatic follow-up emails

Assign a campaign to captured leads

Offer an appointment link

Contact Us &

Find Out More

(function () { "use strict"; var EMPTY_STRING = ""; var UNDEFINED = "undefined"; var NULL = "null"; function WebForm() { }; if ( !window.sf ) window.sf || (window.sf = function () { var a = { version: "1.0", webform: new WebForm() }; return a; }()); (function($) { $.extend(WebForm.prototype, { checkParam: function( s ) { var validParam = false; if( s != null && typeof s !== UNDEFINED ) { s = $.trim(s); s = s.toLowerCase(); if( s != EMPTY_STRING && s != UNDEFINED && s != NULL ) { validParam = true; } } return validParam; }, getRequestBody: function(oForm) { var params = new Array(); var fieldParam; for(var i = 0; i < oForm.elements.length; i++){ fieldParam = encodeURIComponent(oForm.elements[i].name); fieldParam += "="; if(oForm.elements[i].getAttribute('data')!=null){ fieldParam += encodeURIComponent( $.trim(oForm.elements[i].getAttribute('data')) ); }else{ fieldParam += encodeURIComponent( $.trim(oForm.elements[i].value) ); } params.push(fieldParam); } return params.join("&"); }, checkEmailId: function(value){ var regex = /^([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,})+$/; return regex.test(value); }, checkInt: function(s){ var validInt = false; if( this.checkParam(s) ) { var intregstr = /(^[\\d+]$)|(^\\d+,?\\d{1,2}$)/ ; var result = -1; result = s.search(intregstr); if( result != "-1" ) { validInt = true; } } return validInt; }, checkUrl: function( url ) { var validUrl = false; var urlregstr = /((ht|f)tp(s?)\\:\\/\\/|~\\/|\\/)?(\\w+:\\w+@)?(([-\\w]+\\.)+(com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(:[\\d]{1,5})?(((\\/([-\\w~!$+|.,=]|%[a-f\\d]{2})+)+|\\/)+|\\?|#)?((\\?([-\\w~!$+|.,*:]|%[a-f\\d{2}])+=([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)(&([-\\w~!$+|.,*:]|%[a-f\\d{2}])+=([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)*)*(#([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)?/; var result = -1; result = url.search(urlregstr); if( result != "-1" ) { validUrl = true; } return validUrl; }, processResponse: function(resp){ try{ console.log("resp>>"+resp); }catch(e) {} if(resp){ var _this = this; if(resp.hasOwnProperty('status')){ if(resp.status == '-1'){ if(resp.hasOwnProperty('message')){ alert(resp.message); } }else if(resp.status == '0'){ var rUrl = ""; if(resp.hasOwnProperty('returnUrl')){ rUrl = resp.returnUrl; } if(rUrl == "" || rUrl == null || rUrl == undefined){ alert('Your request has been submitted. You will hear from us within 24hrs.'); } if(resp.hasOwnProperty('webAnalytics') && resp.hasOwnProperty('userName') && resp.hasOwnProperty('email')){ var webAnalytics = resp.webAnalytics; var userName = resp.userName; var email = resp.email; if(webAnalytics!=null && webAnalytics!='' && webAnalytics == "true" && email!=null && email!=''){ _this.setCookieValue(userName, email); } } if(resp.hasOwnProperty('returnUrl')){ var returnUrl = resp.returnUrl; if(returnUrl && (returnUrl.indexOf("http://") < 0)){ if(returnUrl.indexOf("https://") < 0){ returnUrl = "https:\\/\\/"+returnUrl; } } window.top.location = returnUrl; } } }else{ alert('Error in processing.') } } }, processWebForm: function(wfForm){ var $form = $( wfForm ); var _this = this; if( $form.length == 0 ) $form = $("form[name=SoffrontSMBWebForm]"); if( $form.length > 0 ){ var webformUrl = $form.attr("action"); var webformMethod = $form.attr("WSMethod"); if( _this.checkParam(webformMethod) ){ if( webformUrl.indexOf("processwebform") < 0 ) { webformUrl = webformUrl + "/" + webformMethod; } } var oForm = $form[0]; if(oForm) { if( webformUrl ) { var canProcess = true; var element, value, label, name, multiple; for(var i = 0; i < oForm.elements.length; i++){ element = oForm.elements[i]; if( element ) { value = $.trim( element.value ); label = element.getAttribute('label'); name = element.getAttribute('name'); multiple = element.getAttribute('multiple'); if( ( element.getAttribute('emailField') == '1' || element.getAttribute('fieldtype') == '218' ) && _this.checkParam(value) && !_this.checkEmailId(value) ){ alert('Please enter a valid email id!'); element.focus(); canProcess = false; return false; } else if( element.getAttribute('fieldtype') == '217' && _this.checkParam(value) && !_this.checkUrl(value) ) { alert('Please enter a valid url!'); element.focus(); canProcess = false; return false; } else if( element.getAttribute('fieldtype') == '202' && _this.checkParam(value) && !_this.checkInt(value) ) { alert('Please enter a valid integer!'); element.focus(); canProcess = false; return false; } else if( element.getAttribute('required') == 'required' && _this.checkParam(value) == false ){ alert(label + ' can not be blank!'); element.focus(); canProcess = false; return false; }else if( name == "webFormDefault" && value!=null && value!=''){ canProcess = false; return false; } /*get multi select value from element*/ if( multiple!= null && multiple!='' && multiple!=undefined && multiple == "multiple"){ var values = ""; $.each($("#"+name+" option:selected"), function(){ if(values == ""){ values = $(this).val(); }else{ values+=","+$(this).val();; } }); if(values!=null && values!=''){ if(oForm.elements[i].getAttribute('name') == name){ oForm.elements[i].setAttribute('data', values); } } } } } if(canProcess){ if( oForm.subscribe ) { if( oForm.email_status ) { if( oForm.subscribe.checked ) { oForm.subscribe.value = true; oForm.email_status.value = "Opted-in Confirmed"; } else { oForm.subscribe.value = false; oForm.email_status.value = "Unknown"; } } } var webUrl = $(location).attr('href'); if(webUrl!= null && webUrl!=''){ if( oForm.webUrl ) { oForm.webUrl.value = webUrl; } } var data = _this.getRequestBody(oForm); var submit = oForm.button; $(submit).attr({"disabled":true}).css({'cursor':'default'}).val('Processing...'); _this.callSMBAPI( webformUrl, data, function(resp) { _this.processResponse(resp); $(submit).attr({"disabled": false}).css({'cursor': 'pointer'}).val('Submit'); }); } } } } return false; }, callSMBAPI: function( url, data, callback ){ $.ajax({ url: url, type: 'GET', dataType: 'jsonp', crossDomain: true, async: true, cache: true, contentType: "application/json; charset=utf-8", jsonpCallback: "callback", data: data, beforeSend: function(xhrObj,options){ xhrObj.setRequestHeader("Content-Type","application/json"); xhrObj.setRequestHeader("Accept","application/json"); }, success: function (resp) { if( callback ) callback(resp); }, failure: function (err) { try{ console.log("Error connecting to SMB API"); }catch(e){} }, error: function(request, status, error) { alert(status); try{ console.log(request); console.log(status); }catch(e){} } }); }, setCookieValue: function(userName, email){ setCookie('_custom_data_username', userName); setCookie('_custom_data_email', email); } }); })(jQuery); })(); function processWebForm(wfForm) { if( window.sf ) { window.sf.webform.processWebForm(wfForm); } }

Software Integrations

Supercharge Your Productivity


Engage Clients 

Email us to find out more

Manage Clients

See all customer communication in one place

Communicate with email, phone or text

Store customer agreements and documents in one place

Retain customers with coupons and offers

Rank customers and create special groups

Send Email Newsletters

Manage email templates with merge fields

Personalize email messages and add personal appointment link to your calendar

Test messages with a/b tests

Rank leads based on several criteria

Auto-respond timely

Engage leads with an email and text sequence

Provide Estimates

Create estimates with all work details

Send estimates with your company branding

Get your estimates approved online

Convert estimates to invoices

Contact Us to find out more

Our Customers Get Results

We needed a way to internally run our business so that franchisees didn’t have to … We chose the team at Soffront. It’s a full massive CRM, stronger on an enterprise level than others.

Brad Sugars

President & Founder, ActionCoach

We use BrandWide by Soffront to manage and communicate with our franchisees and customers across the globe.

Bill Poce

Director of Marketing, InXpress Americas

We chose BrandWide after a rigorous selection process. We look forward to using BrandWide to standardize our processes and improve collaboration between our locations.

Petter Nahed

President, Maid Green

Some of Our Customers

Interested?

Let’s Get Started … Request a Complementary Live Demo