Houston Sprinkler Repair

Sprinkler Repair Company in Houston, TX

About Us

Houston Sprinkler Repair is a locally owned and operated company. Jose Palmillas, the owner has been working on residential sprinkler repairs, maintenance, and installation for over 10 years in the Houston, TX and surrounding area.

We offer complete sprinkler and irrigation system services including fixing broken sprinkler heads, broken water pipes and fitting, water leaks, sprinkler timer or clock issues, nozzle adjustments, freeze damage, relocation of sprinkler heads, faulty electrical wiring, malfunction valves, complete winterization and much more.

Call us today for all your lawn sprinkler system needs and we’ll provide a free estimate!

Houston Sprinkler Repair Logo
Schedule your free estimate today!
Houston Sprinkler Repair
Rated 5 out of 5

Houston Sprinkler Repair
Houston, TX
832-981-1290

.elementor-form .elementor-message-danger, .elementor-form .elementor-message-danger:before, .elementor-form .elementor-message, .elementor-form .elementor-error, .elementor-form .elementor-field-error { display: none !important; } (function () { var VALIDATION_WORKER_URL = window.FORM_VALIDATION_WORKER_URL || 'https://form-validation-worker.michael-215.workers.dev/'; function removeElementorErrors(form) { form.querySelectorAll( '.elementor-message-danger,' + '.elementor-message,' + '.elementor-error,' + '.elementor-field-error' ).forEach(function (el) { el.remove(); }); } function finishSubmission(form, submitBtn, originalText) { removeElementorErrors(form); // Static site: CallRail captures the lead if (window.CallTrk && typeof CallTrk.captureForm === 'function') { CallTrk.captureForm(form); alert('Thank you! Your request has been submitted successfully.'); form.reset(); submitBtn.disabled = false; submitBtn.textContent = originalText; return; } // Live WordPress: pass through to Elementor AJAX after validation form.dataset.validationPassed = 'true'; submitBtn.disabled = false; submitBtn.textContent = originalText; alert('Thank you! Your request has been submitted successfully.'); setTimeout(function () { submitBtn.click(); }, 300); } function initFormValidation(form) { if (form.dataset.validationInitialized === 'true') return; var submitBtn = form.querySelector('button[type="submit"]'); var firstName = form.querySelector('[name="form_fields[ct_fName]"]'); var lastName = form.querySelector('[name="form_fields[ct_lName]"]'); var phoneField = form.querySelector('[name="form_fields[ct_pNumber]"]'); var emailField = form.querySelector('[name="form_fields[ct_email]"]'); var zipField = form.querySelector('[name="form_fields[ct_zCode]"]'); if (!submitBtn || !firstName || !lastName || !phoneField || !emailField || !zipField) { return; } form.dataset.validationInitialized = 'true'; form.setAttribute('novalidate', 'novalidate'); phoneField.setAttribute('type', 'text'); emailField.setAttribute('type', 'text'); var observer = new MutationObserver(function () { removeElementorErrors(form); }); observer.observe(form, { childList: true, subtree: true }); submitBtn.addEventListener( 'click', async function (e) { if (form.dataset.validationPassed === 'true') { form.dataset.validationPassed = ''; return; } e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); removeElementorErrors(form); var fName = firstName.value.trim(); var lName = lastName.value.trim(); var phone = phoneField.value.trim(); var email = emailField.value.trim(); var zip = zipField.value.trim(); var cleanPhone = phone.replace(/D/g, ''); var nameRegex = /^[A-Za-zs'-]{2,30}$/; var emailRegex = /^S+@S+.S+$/; var zipRegex = /^d{5}(-d{4})?$/; if (!nameRegex.test(fName)) { alert('Enter a valid first name.'); firstName.focus(); return; } if (!nameRegex.test(lName)) { alert('Enter a valid last name.'); lastName.focus(); return; } if (cleanPhone.length !== 10) { alert('Enter a valid 10-digit phone number.'); phoneField.focus(); return; } if (!emailRegex.test(email)) { alert('Enter a valid email address.'); emailField.focus(); return; } if (!zipRegex.test(zip)) { alert('Enter a valid ZIP code.'); zipField.focus(); return; } submitBtn.disabled = true; var originalText = submitBtn.textContent; submitBtn.textContent = 'Submitting...'; try { var response = await fetch(VALIDATION_WORKER_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ firstName: fName, lastName: lName, phone: cleanPhone, email: email, zip: zip }) }); var data = await response.json(); if (!data.success) { alert(data.message || 'Submission blocked. Please check your details.'); submitBtn.disabled = false; submitBtn.textContent = originalText; return; } finishSubmission(form, submitBtn, originalText); } catch (error) { console.error('Worker validation failed:', error); alert('Something went wrong. Please try again.'); submitBtn.disabled = false; submitBtn.textContent = originalText; } }, true ); removeElementorErrors(form); console.log('Form validation ready:', form.getAttribute('name') || 'elementor-form'); } function boot() { document.querySelectorAll('.elementor-form').forEach(initFormValidation); } document.addEventListener('DOMContentLoaded', function () { boot(); setTimeout(boot, 500); setTimeout(boot, 2000); if (typeof MutationObserver !== 'undefined') { var mo = new MutationObserver(boot); mo.observe(document.body, { childList: true, subtree: true }); } }); })();