var breeze_prefetch = {"local_url":"https://glassfullmedia.ie","ignore_remote_prefetch":"1","ignore_list":["wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
https://glassfullmedia.ie/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js
https://glassfullmedia.ie/wp-includes/js/jquery/jquery.min.js
https://glassfullmedia.ie/wp-includes/js/jquery/jquery-migrate.min.js
/* Default comment here */
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "q66xf6sr0n");
Skip to content
Sector · Trades & Home Services
Stop losing jobs to the next tradesman who picks up.
Plumbers, electricians, gas engineers, appliance repair, stoves, roofing, tiling, landscaping, maintenance. If a customer has to wait more than 5 minutes for a call back, you’ve lost the job. We build the system that means you never miss one.
Plumbers · Electricians · Gas & HVAC · Appliance Repair · Stoves · Roofing · Landscaping · Maintenance
The Reality
Four ways trades lose money every week.
We’ve audited over 150 Irish trades businesses. These four things are everywhere.
The phone rings while you’re under a sink
You’re on a job. Phone goes to voicemail. The customer hangs up and calls the next plumber on Google. That job is now in someone else’s van. Happens 5-10 times a week.
Evening and weekend enquiries vanish
Boilers break on Friday night. Showers flood on Sunday mornings. By Monday the customer has already booked someone else. Your phone was off, theirs wasn’t.
Follow-ups fall through the cracks
You quoted a kitchen rewire 3 weeks ago. Never followed up. The customer went with someone who called them back. No system, no reminder, no second chance.
No reviews, no calls
Your Google profile has 12 reviews, all from 2019. Competitors have 80+. When a customer searches “emergency electrician Dublin”, you don’t appear. You’ve become invisible.
The Fix
One system. Three things that change.
01
The phone gets answered
AI Receptionist answers calls with an Irish accent while you’re on the tools. Qualifies the lead, asks the right questions, books the job into your calendar, or flags it as urgent on WhatsApp. Configure out-of-hours, business hours or 24/7.
02
The leads get chased
Every enquiry, every quote, every follow-up logged in one place. Automated reminders for quotes that have gone cold. WhatsApp follow-up sequences running in the background. You just show up and do the work.
03
Google starts finding you
Automated review generation after every completed job. SEO built for local intent (“plumber Dundrum”, “gas engineer near me”). Google Ads or Local Service Ads if you need jobs this week, not this year.
Recommended Stack
What most trades actually need.
Start with one, layer on the rest when the phone is already ringing more than you can handle.
01
AI Receptionist · €200/mo
The highest-ROI service for trades. Every missed call is a missed job. Answer the phone automatically, capture the lead, book the slot.
02
Google Ads or Local Service Ads · from €600/mo
People search “emergency plumber Dublin” at 9pm on a Tuesday. Be the first number they see. Pay-per-lead options available for eligible verticals.
03
The Manager · €400/mo
CRM, automated quote follow-ups, review generation, unified inbox. Run your entire back office from one place. Saves you a full day a week.
04
Full Growth System · €1,200/mo
All of the above bundled with SEO and Facebook Ads. For trades scaling past €1m revenue who want predictable flow, not feast-or-famine.
Live Case Study · Stillorgan Group
Three Voice AI agents live across Dundrum Appliance Repair, Stillorgan Stoves and Stillorgan Maintenance Services. Irish-accent answering, after-hours coverage, calls qualified and routed to the right brand automatically.
Stillorgan Group · Multi-brand trades operator · Dublin
24/7
Coverage across 3 brands
1
Unified inbox for the group
Ready to stop losing jobs?
Free 20-minute call. We’ll map your leaks and show you what the fix looks like for your specific trade. No deck, no pitch.
var _iub = _iub || [];
_iub.csConfiguration = {"ccpaAcknowledgeOnDisplay":true,"cookiePolicyInOtherWindow":true,"countryDetection":true,"enableCcpa":true,"floatingPreferencesButtonDisplay":"bottom-right","inlineDelay":0,"invalidateConsentWithoutLog":true,"lang":"en","siteId":2429660,"whitelabel":false,"cookiePolicyId":55481570, "banner":{ "acceptButtonCaptionColor":"white","acceptButtonColor":"#54a9cb","acceptButtonDisplay":true,"backgroundColor":"#183441","closeButtonDisplay":false,"customizeButtonCaptionColor":"white","customizeButtonColor":"rgba(238.2, 238.2, 238.2, 0)","customizeButtonDisplay":true,"position":"float-bottom-center","prependOnBody":true,"rejectButtonCaptionColor":"white","rejectButtonColor":"rgba(0, 115.1, 206.17, 0)","rejectButtonDisplay":true,"slideDown":false,"textColor":"white" }};
https://glassfullmedia.ie/wp-content/themes/flatsome-child/js/custom.js
https://glassfullmedia.ie/wp-content/themes/flatsome/assets/js/extensions/flatsome-live-search.js
window.lazyLoadOptions={elements_selector:"img[data-src],.perfmatters-lazy,.perfmatters-lazy-css-bg",thresholds:"400px 0px",class_loading:"pmloading",class_loaded:"pmloaded",callback_loaded:function(element){if(element.tagName==="IFRAME"){if(element.classList.contains("pmloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}};window.addEventListener("LazyLoad::Initialized",function(e){var lazyLoadInstance=e.detail.instance;var target=document.querySelector("body");var observer=new MutationObserver(function(mutations){lazyLoadInstance.update()});var config={childList:!0,subtree:!0};observer.observe(target,config);});function perfmattersLazyLoadYouTube(e){var t=document.createElement("iframe"),r="ID?";r+=0===e.dataset.query.length?"":e.dataset.query+"&",r+="autoplay=1",t.setAttribute("src",r.replace("ID",e.dataset.src)),t.setAttribute("frameborder","0"),t.setAttribute("allowfullscreen","1"),t.setAttribute("allow","accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"),e.replaceChild(t,e.firstChild)}
//# sourceURL=perfmatters-lazy-load-js-before
https://glassfullmedia.ie/wp-content/plugins/perfmatters/js/lazyload.min.js
https://glassfullmedia.ie/wp-includes/js/dist/vendor/wp-polyfill.min.js
var wpcf7_recaptcha = {
"sitekey": "6LflnTEbAAAAAKr5AiUyVARKsY-RjjUokUVWJI-0",
"actions": {
"homepage": "homepage",
"contactform": "contactform"
}
};
//# sourceURL=wpcf7-recaptcha-js-before
https://glassfullmedia.ie/wp-content/plugins/contact-form-7/modules/recaptcha/index.js
https://glassfullmedia.ie/wp-includes/js/hoverIntent.min.js
var flatsomeVars = {"theme":{"version":"3.20.6"},"ajaxurl":"https://glassfullmedia.ie/wp-admin/admin-ajax.php","rtl":"","sticky_height":"53","stickyHeaderHeight":"0","scrollPaddingTop":"0","assets_url":"https://glassfullmedia.ie/wp-content/themes/flatsome/assets/","lightbox":{"close_markup":"\u003Cbutton title=\"%title%\" type=\"button\" class=\"mfp-close\"\u003E\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-x\"\u003E\u003Cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003E\u003C/line\u003E\u003Cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003E\u003C/line\u003E\u003C/svg\u003E\u003C/button\u003E","close_btn_inside":false},"user":{"can_edit_pages":false},"i18n":{"mainMenu":"Main Menu","toggleButton":"Toggle"},"options":{"cookie_notice_version":"1","swatches_layout":false,"swatches_disable_deselect":false,"swatches_box_select_event":false,"swatches_box_behavior_selected":false,"swatches_box_update_urls":"1","swatches_box_reset":false,"swatches_box_reset_limited":false,"swatches_box_reset_extent":false,"swatches_box_reset_time":300,"search_result_latency":"0","header_nav_vertical_fly_out_frontpage":1}};
//# sourceURL=flatsome-js-js-extra
https://glassfullmedia.ie/wp-content/themes/flatsome/assets/js/flatsome.js
(function(){window.pmDC=1;window.pmDT=15;if(window.pmDT){var e=setTimeout(d,window.pmDT*1e3)}const t=["keydown","mousedown","mousemove","wheel","touchmove","touchstart","touchend"];const n={normal:[],defer:[],async:[]};const o=[];const i=[];var r=false;var a="";window.pmIsClickPending=false;t.forEach(function(e){window.addEventListener(e,d,{passive:true})});if(window.pmDC){window.addEventListener("touchstart",b,{passive:true});window.addEventListener("mousedown",b)}function d(){if(typeof e!=="undefined"){clearTimeout(e)}t.forEach(function(e){window.removeEventListener(e,d,{passive:true})});if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",s)}else{s()}}async function s(){c();u();f();m();await w(n.normal);await w(n.defer);await w(n.async);await p();document.querySelectorAll("link[data-pmdelayedstyle]").forEach(function(e){e.setAttribute("href",e.getAttribute("data-pmdelayedstyle"))});window.dispatchEvent(new Event("perfmatters-allScriptsLoaded")),E().then(()=>{h()})}function c(){let o={};function e(t,e){function n(e){return o[t].delayedEvents.indexOf(e)>=0?"perfmatters-"+e:e}if(!o[t]){o[t]={originalFunctions:{add:t.addEventListener,remove:t.removeEventListener},delayedEvents:[]};t.addEventListener=function(){arguments[0]=n(arguments[0]);o[t].originalFunctions.add.apply(t,arguments)};t.removeEventListener=function(){arguments[0]=n(arguments[0]);o[t].originalFunctions.remove.apply(t,arguments)}}o[t].delayedEvents.push(e)}function t(t,n){const e=t[n];Object.defineProperty(t,n,{get:!e?function(){}:e,set:function(e){t["perfmatters"+n]=e}})}e(document,"DOMContentLoaded");e(window,"DOMContentLoaded");e(window,"load");e(document,"readystatechange");t(document,"onreadystatechange");t(window,"onload")}function u(){let n=window.jQuery;Object.defineProperty(window,"jQuery",{get(){return n},set(t){if(t&&t.fn&&!o.includes(t)){t.fn.ready=t.fn.init.prototype.ready=function(e){if(r){e.bind(document)(t)}else{document.addEventListener("perfmatters-DOMContentLoaded",function(){e.bind(document)(t)})}};const e=t.fn.on;t.fn.on=t.fn.init.prototype.on=function(){if(this[0]===window){function t(e){e=e.split(" ");e=e.map(function(e){if(e==="load"||e.indexOf("load.")===0){return"perfmatters-jquery-load"}else{return e}});e=e.join(" ");return e}if(typeof arguments[0]=="string"||arguments[0]instanceof String){arguments[0]=t(arguments[0])}else if(typeof arguments[0]=="object"){Object.keys(arguments[0]).forEach(function(e){delete Object.assign(arguments[0],{[t(e)]:arguments[0][e]})[e]})}}return e.apply(this,arguments),this};o.push(t)}n=t}})}function f(){document.querySelectorAll("script[type=pmdelayedscript]").forEach(function(e){if(e.hasAttribute("src")){if(e.hasAttribute("defer")&&e.defer!==false){n.defer.push(e)}else if(e.hasAttribute("async")&&e.async!==false){n.async.push(e)}else{n.normal.push(e)}}else{n.normal.push(e)}})}function m(){var o=document.createDocumentFragment();[...n.normal,...n.defer,...n.async].forEach(function(e){var t=e.getAttribute("src");if(t){var n=document.createElement("link");n.href=t;if(e.getAttribute("data-perfmatters-type")=="module"){n.rel="modulepreload"}else{n.rel="preload";n.as="script"}o.appendChild(n)}});document.head.appendChild(o)}async function w(e){var t=e.shift();if(t){await l(t);return w(e)}return Promise.resolve()}async function l(t){await v();return new Promise(function(e){const n=document.createElement("script");[...t.attributes].forEach(function(e){let t=e.nodeName;if(t!=="type"){if(t==="data-perfmatters-type"){t="type"}n.setAttribute(t,e.nodeValue)}});if(t.hasAttribute("src")){n.addEventListener("load",e);n.addEventListener("error",e)}else{n.text=t.text;e()}t.parentNode.replaceChild(n,t)})}async function p(){r=true;await v();document.dispatchEvent(new Event("perfmatters-DOMContentLoaded"));await v();window.dispatchEvent(new Event("perfmatters-DOMContentLoaded"));await v();document.dispatchEvent(new Event("perfmatters-readystatechange"));await v();if(document.perfmattersonreadystatechange){document.perfmattersonreadystatechange()}await v();window.dispatchEvent(new Event("perfmatters-load"));await v();if(window.perfmattersonload){window.perfmattersonload()}await v();o.forEach(function(e){e(window).trigger("perfmatters-jquery-load")})}async function v(){return new Promise(function(e){requestAnimationFrame(e)})}function h(){window.removeEventListener("touchstart",b,{passive:true});window.removeEventListener("mousedown",b);i.forEach(e=>{if(e.target.outerHTML===a){e.target.dispatchEvent(new MouseEvent("click",{view:e.view,bubbles:true,cancelable:true}))}})}function E(){return new Promise(e=>{window.pmIsClickPending?g=e:e()})}function y(){window.pmIsClickPending=true}function g(){window.pmIsClickPending=false}function L(e){e.target.removeEventListener("click",L);C(e.target,"pm-onclick","onclick");i.push(e),e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();g()}function b(e){if(e.target.tagName!=="HTML"){if(!a){a=e.target.outerHTML}window.addEventListener("touchend",A);window.addEventListener("mouseup",A);window.addEventListener("touchmove",k,{passive:true});window.addEventListener("mousemove",k);e.target.addEventListener("click",L);C(e.target,"onclick","pm-onclick");y()}}function k(e){window.removeEventListener("touchend",A);window.removeEventListener("mouseup",A);window.removeEventListener("touchmove",k,{passive:true});window.removeEventListener("mousemove",k);e.target.removeEventListener("click",L);C(e.target,"pm-onclick","onclick");g()}function A(e){window.removeEventListener("touchend",A);window.removeEventListener("mouseup",A);window.removeEventListener("touchmove",k,{passive:true});window.removeEventListener("mousemove",k)}function C(e,t,n){if(e.hasAttribute&&e.hasAttribute(t)){event.target.setAttribute(n,event.target.getAttribute(t));event.target.removeAttribute(t)}}})();