House Cleaning
Software

Grow Business

[dsm_pricelist _builder_version=”4.9.7″ _module_preset=”default”][/dsm_pricelist]


Improve Operations 

Cleaning Scheduling Software 

Schedule field appointments for your cleaners and other crew with our powerful shared calendar and job management tools

Mobile access for crew while on the field, with cleaning appointment reminders, important information, and location map

Schedule all visits with one click

Check availability before scheduling jobs

Drag-and-drop calendar to reschedule visits

Personalize calendar with color coding and filters

Email us to find out more


Cleaning Job Management

Powerful cleaning job management feature, task automation, easy scheduling, customizable processes, and payment collection

Configure job screen with location, line items, and visit details

Schedule and dispatch jobs

Check in and track time during each visit

Take pictures before and after each visit

Contact us to find out more

Email us to find out more

Invoice for Cleaning Jobs

Range of operational features to help your cleaning franchise grow and streamline operations

Create Invoice before or after the visit

Send branded invoices to clients

Track and follow-up on unpaid invoices

Push invoices to your accounting system

Accept Payments On Time

Track all payments in one place

Accept credit card payments online or over the phone

Push payments to your accounting system

Contact us to find out more

Email us to find out more

Manage Customers (CRM)

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

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


Grow Business 

Outreach with Power Dialer

Call hundreds per day using the power dialer

Set up call list with a click

Superior call quality without any “dead air”

Take notes

Set up follow-up tasks with a click

Email us to find out more

Email Marketing for Cleaning Services

Easy to Use, Automated Email Nurturing for Cleaning Services

Create automated email campaigns that produce appointments

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

Design email tree based on response

Send monthly newsletters

Contact Us to find out more

Email Marketing for Cleaning Services

Easy to Use, Automated Email Nurturing for Cleaning Servces

Email us to find out more

Social Marketing for Cleaning Services

Schedule in advance using social calendar

Reply to all social comments

Generate leads from social media

Create contents with little effort

Review social reach and insights

Text Marketing

Create and manage text templates

Personalize text messages

Send customized text offers with one click

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

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