Choosing tools that protect your most valuable resource—your energy—is good for you and a healthy decision for your business. If your current system is causing more stress than support, it’s likely time for a change.
I fully recognize that switching software might feel overwhelming, time-consuming, and even costly. However, clunky software can frustrate you and your clients: broken links, slow pages, or clumsy functionality risk losing business.
The right business software can save you time, money, and stress, freeing you to focus on what you love most: sharing wellness with others!
Table of Contents:
Signs It’s Time to Switch Software for Your Wellness Business
Is your business software holding you back? The website you once loved and relied on might no longer meet your needs.
Take a moment to reflect: Is it easy to update your website? Can you change images or set up a new offer without headaches?
Let’s break down other indicators that suggest it’s time for a change.
Outdated Features
Does your system genuinely support the unique needs of your wellness business, or are you stuck trying to make something ineffective work? Clients today expect small business websites to be intuitive and seamless, and falling short can lead to frustration and lost opportunities.
Automated scheduling, payment processing, and online booking aren’t optional anymore—they’re essentials. You may be selling yourself short without features like apps, video hosting, or marketing integrations. Modern, intuitive tools streamline your operations and create a competitive edge in a crowded market.
I was hesitant to switch, but upgrading my software transformed my business. Clients complimented the seamless experience, and the growth I’ve seen since has been incredible. Trust me—it’s worth it!
Poor Client Experience
If your software is complicated for your team and clients to navigate, it’s a big red flag. Your client’s online experience must be seamless and user-friendly—whether on their phone, desktop or in your physical space.
Booking appointments, making purchases, and processing payments should feel effortless. Even the most motivated potential clients may be driven away by:
- Frustration over slow load times
- Booking errors
- Payment issues.
If you’re hearing these complaints, it’s time for a change. Investing in intuitive, easy-to-use software will improve client satisfaction, build trust, and ultimately support the growth and longevity of your business.
Your Growth Is Limited
Your software might feel like it’s holding you back, especially when it can’t keep up with your growth.
I’ve been there—feeling loyal to a system into which I’d invested time, money, and passion, only to find it struggling to expand with me. I remember trying to integrate a new feature, and when it crashed my entire site, I knew it was time for a change.
If you’re growing your wellness business—adding new locations, offering on-demand videos, or launching new services—you need software to support those goals. A flexible, scalable solution meets your needs and inspires growth in ways you didn’t expect.
Cost Doesn’t Match Value
We’ve all been there—tempted by flashy offers when frustrated with current tools. We impulsively sign up for free options that don’t deliver or overspend on premium features we don’t need, use, or even understand.
For wellness businesses, software must align with your needs. When cost doesn’t match value, like when free tools underperform or costly ones leave you feeling drained, you feel defeated.
Finding a solution that balances affordability and functionality, supporting your business without unnecessary complexity or expense, is the goal and is not unachievable!
Lack of Support and Customization
As wellness business owners, most of us aren’t graphic designers or tech experts, which makes reliable customer support essential. When support is slow or non-existent, it wastes your valuable time, frustrates your clients, and adds unnecessary stress.
According to a study from Capterra, “Over a third of companies faced higher-than-expected costs, while slightly fewer struggled with onboarding and training new users. Nearly half of respondents said poor communication between vendor sales and implementation teams was a major issue.”
On top of that, software with limited customization options can feel rigid, forcing you to work around systems that don’t reflect your unique offerings, brand, or values.
When tools lack personalization and leave you unsupported, they prevent you from serving your community as you’d like. Your software should be responsive, adaptable, and designed to support your business.
Over a third of companies faced higher-than-expected costs, while slightly fewer struggled with onboarding and training new users. Nearly half of respondents said poor communication between vendor sales and implementation teams was a major issue.”
– Capterra Study
Breathe New Life Into Your Offerings and Attract More Clients!
Download our template bundle to get excellent templates to update your course descriptions, online bios, and more!
Risks of Switching Software and How to Mitigate Them
Switching software can feel incredibly overwhelming if you’re not tech-savvy. You might wonder if it’s even necessary—can’t you make do with your current setup?
It’s completely valid to be anxious about the potential costs, worry about client loyalty during the transition, or protect the authentic brand and messaging you’ve worked so hard to create.
The good news is that you can minimize these risks with thoughtful planning and the right software. Let’s explore how to navigate this process smoothly and set your wellness business up for lasting growth and success.
Risk: Data Loss During Migration
Losing data when transitioning to new software is an entirely valid and significant concern—and it needs to be handled carefully to avoid any mishaps.
Beyond client records, appointment histories, or payment details, you might also risk losing valuable content you’ve worked so hard to create and the SEO rankings that help clients find you. This can disrupt your operations, lower visibility, and even affect your bottom line.
Mitigation Tactics
Look for tools that carefully transfer your information during migration to ensure you keep all your precious data. You need software designed for wellness businesses that genuinely care about the wellness of your data!
Choose a platform that supports you end-to-end and everything in between. A provider like OfferingTree will guide you through the entire process. They have worked with hundreds of wellness businesses to navigate these transitions successfully.
With secure data transfer, dedicated support, and a clear migration plan, you can minimize risks and ensure your data stays intact while focusing on your business’s growth.
Risk: Disruption to Day-to-Day Business
A poorly managed migration will disrupt business. Hiccups can lead to missed appointments, payment delays, scheduling errors, and other issues, resulting in frustrated clients and staff, loss of trust, and a hit to your cash flow.
Mitigation Tactics
Planning your software transition during a slow period or after hours is the best way to minimize disruption, ensure your day-to-day operations won’t be impacted, and provide a cushion to troubleshoot any issues.
Clear communication is key during this process. Let your clients and team know what’s happening and what to expect, and get them excited about how the new software will improve their experience—after all, that’s the main reason for making the switch!
Be sure to offer plenty of support with tutorials and FAQs, and be patient as everyone adjusts. Listen to feedback and apply it where needed to ensure a smooth transition with no surprises.
Risk: Learning Curve for Staff and Clients
Switching to new software can be off-putting and nerve-wracking for some clients and team members, especially if they’ve become comfortable with the old system. For those who aren’t tech-savvy, the new platform can feel daunting, and they may even hesitate to try it.
Mitigation Tactics
To ease the learning curve, choose intuitive software with built-in tutorials to guide staff and clients through the transition.
Look for platforms with responsive customer support and comprehensive training resources. Providing your team with training sessions and offering clients easy-to-access resources, like FAQs and instructional videos, will ensure everyone feels confident.
Stay open, stay positive, and be ready for feedback and criticism. People will adjust, but it takes time. Test the site thoroughly before going live to ensure a smooth launch.
Risk: Cost of Transition
According to Brian Westfall, associate principal at Capterra, “Bait-and-switch pricing is sadly common in the software space. Vendors bury important costs in their terms and conditions, clouding the true cost, which, of course, leads to disappointment.”
The cost of a software transition can be a significant concern or even a barrier. It’s easy to choose the wrong platform, hire services that lack transparency and take advantage of you, rush through the process, or make impulsive decisions.
Mitigation Tactics
When deciding whether to switch now or grow first, consider the long-term savings, including the value of your time and the efficiencies new software will bring. A clear plan and budget is essential here.
I used to spend hours creating Excel spreadsheets to track client payments, which were tedious and time-consuming. Now, with my OfferingTree software, everything is organized in one program, and all that information is automatically managed and streamlined.
Look for free trial periods, like I did with OfferingTree. I tried it for two weeks and played around with it mostly on my phone. I was amazed at how easy and seamless it was to navigate and design, even without using my desktop!
Bait-and-switch pricing is sadly common in the software space. Vendors bury important costs in their terms and conditions, clouding the true cost, which, of course, leads to disappointment.”
– Brian Westfall, Capterra
Benefits of Upgrading Your Software to Fit Your Business Needs
Upgrading your software is one of those decisions you’ll wish you made sooner. The benefits are endless, and some will surprise you once you dive in—I still get excited about discovering new features!
With modern, advanced tools at your fingertips, your business will start growing naturally with less effort. It’s all about having software that supports where you are now and where you’re heading.
Here’s how upgrading can help:
- Streamlined Scheduling and Payments: Automate bookings, reminders, and recurring payments to reduce errors and save time.
- Enhanced Client Experience: To ensure a seamless client experience, offer online booking, membership purchases, and a mobile app.
- Growth Potential: Tools that manage your current business offerings while supporting future growth, from on-demand content to marketing campaigns.
- Support for Hybrid Services: Easily transition between in-person and online services, ideal for evolving business models.
How OfferingTree Supports a Seamless, Effortless Switch
Switching software takes effort but doesn’t have to be stressful—it can feel exciting! OfferingTree made my transition seamless and inspiring.
Their support was incredible, and I couldn’t wait to share my new website with my students. I felt proud and hopeful, even during the challenges of COVID-19 when wellness businesses were struggling. They helped me minimize disruptions, securely transfer data, and communicate effectively with my email list while maintaining my wellness.
OfferingTree’s all-in-one platform is explicitly built for wellness businesses, streamlining operations through automated scheduling, payment processing, and client management.
How OfferingTree is there for you at every step of the way:
- Ease of Transition: OfferingTree’s team ensures your switch is as smooth as possible. They securely handle your data import, minimizing disruptions to your business. With their guidance and support, you’ll navigate the transition seamlessly. Plus, you’ll have access to tutorials, responsive assistance, and an active Facebook user group to keep everything running smoothly.
- All-in-One Features Designed for Wellness Businesses: The software features are thoughtfully created with wellness professionals and entrepreneurs in mind. It has everything you need in one place— scheduling, payment processing, and seamless client management.
- Built-In Marketing Suite: OfferingTree’s tools for email campaigns, lead generation, and SEO optimization are specifically designed to support wellness professionals. Everything is crafted to help you expand your reach, present yourself professionally, and showcase your offerings in the best and most beautiful way possible.
- Affordable Pricing and Top-Notch Support: OfferingTree’s pricing structure is not just affordable—it’s incredible value. The premium tools and features allow you to provide your clients with the best experience while positioning your business as a top-tier offering. Their support team is fantastic—responsive, caring, and genuinely invested in your success.
5 Steps to Successfully Switch Your Wellness Business Software
I’ve already shared how exciting and rewarding switching your wellness business software can be. With the proper steps, it can be an incredibly smooth and inspiring process! However, it’s essential to be prepared for the transition.
Assess Your Needs
Before making the switch, it’s essential to reflect on your specific needs—what’s currently working, what’s missing, and your biggest dreams for how software can support your business.
Understanding your business needs and how they can grow with the right tools will help you choose software that grows with you and streamlines your operations. The right software system will make your life easier, not harder!
How do you assess your needs? Here are some steps to get started:
- Must-have features: List the tools essential to your business, such as automated scheduling, payment processing, communication tools, an online store, and client management capabilities.
- Current software gaps: Evaluate your current system to identify its shortcomings. Pinpoint the recurring issues and frustrations you encounter most often.
- Future growth: Consider how your business might expand in the future. Dream big, and choose software that can scale and adapt to your needs.
- Ease of use: Ensure the software is intuitive for you and your clients, minimizing learning curves and reducing frustration during the transition.
Research Your Options
I cannot overstate the importance of researching your software options. The more research you do, the more confident you will feel in your decision to switch—and in the software you choose.
Nearly 3 in 5 companies regret at least one of their software purchases from the last 12 to 18 months, according to a survey of 3,400 businesses by software marketplace Capterra. Nearly one-quarter were unhappy with multiple purchases.
Here’s how to focus your research:
- Free trials: Take advantage of trial periods to gain hands-on experience and explore the software’s features. This will help you determine whether the software fits your needs and is intuitive enough to investigate further.
- Customer support: During the trial, contact customer support to evaluate their responsiveness and helpfulness in answering your questions.
- Features and usability: Compare features across different software options, making detailed notes on their strengths, weaknesses, and how well they meet your needs.
- Gather feedback: Involve your team or trusted community members to test the software and provide feedback on its usability, ensuring it is intuitive for everyone.
Plan Your Transition
You’ve decided to leap, but not so fast – it’s time to plan your transition. Choosing the right time, organizing your content, images, and goals, and keeping your team and clients in the loop will set you up for a smooth transition.
Like anything, a well-thought-out plan will minimize disruptions, help you avoid mistakes, and keep you on track for a successful switch to your new and incredible software.
Steps to planning an effective software migration:
- Customer Support: Ensure your chosen software provides responsive and helpful support during the transition and onboarding process.
- Goals and Timelines: Set realistic expectations for each phase of the migration process, including key milestones and deadlines.
- Communication: Clearly define your team’s roles and responsibilities, and keep your clients informed throughout the transition to avoid confusion and ensure everything is understood.
Launch and Communicate
This is your chance to highlight, with enthusiasm, all the benefits of the new system and set everyone up for success.
Make sure to demonstrate how this will simplify tasks, save time, and ultimately leave more space for wellness practices, ensuring a smoother, more enjoyable experience for you and your team, and remember that the customer experience is everything!
Steps to manage the post-launch communication process:
- Announce the Change: Inform your team and clients about the switch, emphasizing the new benefits and what they can expect.
- Share Instructions & Resources: Provide clear, easy-to-follow instructions and resources, such as tutorials, FAQs, and contact info for support.
- Encourage Feedback: Provide a forum for feedback so you can address any concerns and make adjustments as needed.
Nearly 3 in 5 companies regret at least one of their software purchases from the last 12 to 18 months, according to a survey of 3,400 businesses by software marketplace Capterra. Nearly one-quarter were unhappy with multiple purchases.
Experience a Seamless Software Transition with OfferingTree and Grow Your Business
Ready to experience a seamless software transition and elevate your wellness business? OfferingTree’s all-in-one platform is designed specifically for wellness professionals like you.
From easy booking and payment processing to memberships, on-demand content, email marketing, studio management tools, and more, we have everything you need in one place to streamline your business operations and enhance your client experience.
Ready to take the next step? Start with a free 7-day trial or explore our demo video library to see how OfferingTree can work for you and help grow your business!
" + detail + "
" + ""; pc_confirmation.style.display = 'block'; var mp = document.querySelector('input[name="mp"]'); mp.value = '0'; } else { form.querySelector('._form-content').style.display = 'inline'; pc_confirmation.style.display = 'none'; }var hideButton = document.getElementById('hideButton'); // Add event listener to the button hideButton.addEventListener('click', function() { var submitButton = document.querySelector('#_form_171_submit'); submitButton.disabled = false; submitButton.classList.remove('processing'); var mp = document.querySelector('input[name="mp"]'); mp.value = '1'; const cacheBuster = new URL(window.location.href); cacheBuster.searchParams.set('v', new Date().getTime()); window.location.href = cacheBuster.toString(); });const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias; var visitorObject = window[vgoAlias]; if (email && typeof visitorObject !== 'undefined') { visitorObject('setEmail', email); visitorObject('update'); } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) { // Site tracking URL to use after inline form submission. _load_script(trackcmp_url); } if (typeof window._form_callback !== 'undefined') window._form_callback(id); }; window._load_script = function(url, callback, isSubmit) { var head = document.querySelector('head'), script = document.createElement('script'), r = false; var submitButton = document.querySelector('#_form_171_submit'); script.charset = 'utf-8'; script.src = url; if (callback) { script.onload = script.onreadystatechange = function() { if (!r && (!this.readyState || this.readyState == 'complete')) { r = true; callback(); } }; } script.onerror = function() { if (isSubmit) { if (script.src.length > 10000) { _show_error("171", "Sorry, your submission failed. Please shorten your responses and try again."); } else { _show_error("171", "Sorry, your submission failed. Please try again."); } submitButton.disabled = false; submitButton.classList.remove('processing'); } }head.appendChild(script); }; (function() { if (window.location.search.search("excludeform") !== -1) return false; var getCookie = function(name) { var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)')); return match ? match[2] : null; } var setCookie = function(name, value) { var now = new Date(); var time = now.getTime(); var expireTime = time + 1000 * 60 * 60 * 24 * 365; now.setTime(expireTime); document.cookie = name + '=' + value + '; expires=' + now + ';path=/; Secure; SameSite=Lax;'; } var addEvent = function(element, event, func) { if (element.addEventListener) { element.addEventListener(event, func); } else { var oldFunc = element['on' + event]; element['on' + event] = function() { oldFunc.apply(this, arguments); func.apply(this, arguments); }; } } var _removed = false; var form_to_submit = document.getElementById('_form_171_'); var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;var getUrlParam = function(name) { if (name.toLowerCase() !== 'email') { var params = new URLSearchParams(window.location.search); return params.get(name) || false; } // email is a special case because a plus is valid in the email address var qString = window.location.search; if (!qString) { return false; } var parameters = qString.substr(1).split('&'); for (var i = 0; i < parameters.length; i++) { var parameter = parameters[i].split('='); if (parameter[0].toLowerCase() === 'email') { return parameter[1] === undefined ? true : decodeURIComponent(parameter[1]); } } return false; };var acctDateFormat = "%m/%d/%Y"; var getNormalizedDate = function(date, acctFormat) { var decodedDate = decodeURIComponent(date); if (acctFormat && acctFormat.match(/(%d|%e).*%m/gi) !== null) { return decodedDate.replace(/(\d{2}).*(\d{2}).*(\d{4})/g, '$3-$2-$1'); } else if (Date.parse(decodedDate)) { var dateObj = new Date(decodedDate); var year = dateObj.getFullYear(); var month = dateObj.getMonth() + 1; var day = dateObj.getDate(); return `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`; } return false; };var getNormalizedTime = function(time) { var hour, minutes; var decodedTime = decodeURIComponent(time); var timeParts = Array.from(decodedTime.matchAll(/(\d{1,2}):(\d{1,2})\W*([AaPp][Mm])?/gm))[0]; if (timeParts[3]) { // 12 hour format var isPM = timeParts[3].toLowerCase() === 'pm'; if (isPM) { hour = parseInt(timeParts[1]) === 12 ? '12' : `${parseInt(timeParts[1]) + 12}`; } else { hour = parseInt(timeParts[1]) === 12 ? '0' : timeParts[1]; } } else { // 24 hour format hour = timeParts[1]; } var normalizedHour = parseInt(hour) < 10 ? `0${parseInt(hour)}` : hour; var minutes = timeParts[2]; return `${normalizedHour}:${minutes}`; };for (var i = 0; i < allInputs.length; i++) { var regexStr = "field\\[(\\d+)\\]"; var results = new RegExp(regexStr).exec(allInputs[i].name); if (results != undefined) { allInputs[i].dataset.name = allInputs[i].name.match(/\[time\]$/) ? `${window.cfields[results[1]]}_time` : window.cfields[results[1]]; } else { allInputs[i].dataset.name = allInputs[i].name; } var fieldVal = getUrlParam(allInputs[i].dataset.name);if (fieldVal) { if (allInputs[i].dataset.autofill === "false") { continue; } if (allInputs[i].type == "radio" || allInputs[i].type == "checkbox") { if (allInputs[i].value == fieldVal) { allInputs[i].checked = true; } } else if (allInputs[i].type == "date") { allInputs[i].value = getNormalizedDate(fieldVal, acctDateFormat); } else if (allInputs[i].type == "time") { allInputs[i].value = getNormalizedTime(fieldVal); } else { allInputs[i].value = fieldVal; } } }var remove_tooltips = function() { for (var i = 0; i < tooltips.length; i++) { tooltips[i].tip.parentNode.removeChild(tooltips[i].tip); } tooltips = []; }; var remove_tooltip = function(elem) { for (var i = 0; i < tooltips.length; i++) { if (tooltips[i].elem === elem) { tooltips[i].tip.parentNode.removeChild(tooltips[i].tip); tooltips.splice(i, 1); return; } } }; var create_tooltip = function(elem, text) { var tooltip = document.createElement('div'), arrow = document.createElement('div'), inner = document.createElement('div'), new_tooltip = {}; if (elem.type != 'radio' && elem.type != 'checkbox') { tooltip.className = '_error'; arrow.className = '_error-arrow'; inner.className = '_error-inner'; inner.innerHTML = text; tooltip.appendChild(arrow); tooltip.appendChild(inner); elem.parentNode.appendChild(tooltip); } else { tooltip.className = '_error-inner _no_arrow'; tooltip.innerHTML = text; elem.parentNode.insertBefore(tooltip, elem); new_tooltip.no_arrow = true; } new_tooltip.tip = tooltip; new_tooltip.elem = elem; tooltips.push(new_tooltip); return new_tooltip; }; var resize_tooltip = function(tooltip) { var rect = tooltip.elem.getBoundingClientRect(); var doc = document.documentElement, scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)); if (scrollPosition < 40) { tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _below'; } else { tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _above'; } }; var resize_tooltips = function() { if (_removed) return; for (var i = 0; i < tooltips.length; i++) { if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]); } }; var validate_field = function(elem, remove) { var tooltip = null, value = elem.value, no_error = true; remove ? remove_tooltip(elem) : false; if (elem.type != 'checkbox') elem.className = elem.className.replace(/ ?_has_error ?/g, ''); if (elem.getAttribute('required') !== null) { if (elem.type == 'radio' || (elem.type == 'checkbox' && /any/.test(elem.className))) { var elems = form_to_submit.elements[elem.name]; if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) { no_error = elem.checked; } else { no_error = false; for (var i = 0; i < elems.length; i++) { if (elems[i].checked) no_error = true; } } if (!no_error) { tooltip = create_tooltip(elem, "Please select an option."); } } else if (elem.type =='checkbox') { var elems = form_to_submit.elements[elem.name], found = false, err = []; no_error = true; for (var i = 0; i < elems.length; i++) { if (elems[i].getAttribute('required') === null) continue; if (!found && elems[i] !== elem) return true; found = true; elems[i].className = elems[i].className.replace(/ ?_has_error ?/g, ''); if (!elems[i].checked) { no_error = false; elems[i].className = elems[i].className + ' _has_error'; err.push("Checking %s is required".replace("%s", elems[i].value)); } } if (!no_error) { tooltip = create_tooltip(elem, err.join('')); } } else if (elem.tagName == 'SELECT') { var selected = true; if (elem.multiple) { selected = false; for (var i = 0; i < elem.options.length; i++) { if (elem.options[i].selected) { selected = true; break; } } } else { for (var i = 0; i < elem.options.length; i++) { if (elem.options[i].selected && (!elem.options[i].value || (elem.options[i].value.match(/\n/g))) ) { selected = false; } } } if (!selected) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Please select an option."); } } else if (value === undefined || value === null || value === '') { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "This field is required."); } } if (no_error && (elem.id == 'field[]' || elem.id == 'ca[11][v]')) { if (elem.className.includes('phone-input-error')) { elem.className = elem.className + ' _has_error'; no_error = false; } } if (no_error && elem.name == 'email') { if (!value.match(/^[\+_a-z0-9-'&=]+(\.[\+_a-z0-9-']+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i)) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Enter a valid email address."); } } if (no_error && /date_field/.test(elem.className)) { if (!value.match(/^\d\d\d\d-\d\d-\d\d$/)) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Enter a valid date."); } } tooltip ? resize_tooltip(tooltip) : false; return no_error; }; var needs_validate = function(el) { if(el.getAttribute('required') !== null){ return true } if(el.name === 'email' && el.value !== ""){ return true }if((el.id == 'field[]' || el.id == 'ca[11][v]') && el.className.includes('phone-input-error')){ return true }return false }; var validate_form = function(e) { var err = form_to_submit.querySelector('._form_error'), no_error = true; if (!submitted) { submitted = true; for (var i = 0, len = allInputs.length; i < len; i++) { var input = allInputs[i]; if (needs_validate(input)) { if (input.type == 'tel') { addEvent(input, 'blur', function() { this.value = this.value.trim(); validate_field(this, true); }); } if (input.type == 'text' || input.type == 'number' || input.type == 'time') { addEvent(input, 'blur', function() { this.value = this.value.trim(); validate_field(this, true); }); addEvent(input, 'input', function() { validate_field(this, true); }); } else if (input.type == 'radio' || input.type == 'checkbox') { (function(el) { var radios = form_to_submit.elements[el.name]; for (var i = 0; i < radios.length; i++) { addEvent(radios[i], 'click', function() { validate_field(el, true); }); } })(input); } else if (input.tagName == 'SELECT') { addEvent(input, 'change', function() { validate_field(this, true); }); } else if (input.type == 'textarea'){ addEvent(input, 'input', function() { validate_field(this, true); }); } } } } remove_tooltips(); for (var i = 0, len = allInputs.length; i < len; i++) { var elem = allInputs[i]; if (needs_validate(elem)) { if (elem.tagName.toLowerCase() !== "select") { elem.value = elem.value.trim(); } validate_field(elem) ? true : no_error = false; } } if (!no_error && e) { e.preventDefault(); } resize_tooltips(); return no_error; }; addEvent(window, 'resize', resize_tooltips); addEvent(window, 'scroll', resize_tooltips);var hidePhoneInputError = function(inputId) { var errorMessage = document.getElementById("error-msg-" + inputId); var input = document.getElementById(inputId); errorMessage.classList.remove("phone-error"); errorMessage.classList.add("phone-error-hidden"); input.classList.remove("phone-input-error"); };var initializePhoneInput = function(input, defaultCountry) { return window.intlTelInput(input, { utilsScript: "https://unpkg.com/[email protected]/build/js/utils.js", autoHideDialCode: false, separateDialCode: true, initialCountry: defaultCountry, preferredCountries: [] }); }var setPhoneInputEventListeners = function(inputId, input, iti) { input.addEventListener('blur', function() { var errorMessage = document.getElementById("error-msg-" + inputId); if (input.value.trim()) { if (iti.isValidNumber()) { iti.setNumber(iti.getNumber()); if (errorMessage.classList.contains("phone-error")){ hidePhoneInputError(inputId); } } else { showPhoneInputError(inputId) } } else { if (errorMessage.classList.contains("phone-error")){ hidePhoneInputError(inputId); } } });input.addEventListener("countrychange", function() { iti.setNumber(''); });input.addEventListener("keydown", function(e) { var charCode = (e.which) ? e.which : e.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode !== 8) { e.preventDefault(); } }); };var showPhoneInputError = function(inputId) { var errorMessage = document.getElementById("error-msg-" + inputId); var input = document.getElementById(inputId); errorMessage.classList.add("phone-error"); errorMessage.classList.remove("phone-error-hidden"); input.classList.add("phone-input-error"); };window['recaptcha_callback'] = function() { // Get all recaptchas in the DOM (there may be more than one form on the page). var recaptchas = document.getElementsByClassName("g-recaptcha"); for (var i in recaptchas) { // Set the recaptcha element ID, so the recaptcha can be applied to each element. var recaptcha_id = "recaptcha_" + i; recaptchas[i].id = recaptcha_id; var el = document.getElementById(recaptcha_id); if (el != null) { var sitekey = el.getAttribute("data-sitekey"); var stoken = el.getAttribute("data-stoken"); grecaptcha.render(recaptcha_id, {"sitekey":sitekey,"stoken":stoken}); } } }; _load_script( "https://www.google.com/recaptcha/api.js?onload=recaptcha_callback&render=explicit" ); var _form_serialize = function(form){if(!form||form.nodeName!=="FORM"){return }var i,j,q=[];for(i=0;i