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 · Hospitality
More direct bookings. Less OTA commission.
Hotels, restaurants, B&Bs, cafés, venues. Booking.com and OpenTable take 15-25% of every guest. We build you a direct-booking engine so the margin stays in your pocket, not theirs.
Hotels · Restaurants · Cafés · B&Bs · Guesthouses · Wedding Venues · Tour Operators
The Reality
Four ways hospitality bleeds margin.
We work with Irish hotels, restaurants and B&Bs. Same four leaks, every time.
OTAs eat 15-25% of every booking
Booking.com, Expedia, OpenTable. They send you the guest, then take their cut off the top. You have no relationship with the customer, no repeat-visit data, no way to stop paying the middleman.
Phone rings while staff are running service
Dinner service, wedding enquiry comes in at 7pm. No one can answer. Voicemail. The bride-to-be is already ringing the next venue. That’s a €15k wedding gone.
Enquiries at 11pm get answered at 10am
Guests message your Instagram or book on your website at 11pm. By 10am next morning when you reply, they’ve found another option. Out-of-hours is when 40% of bookings happen.
No follow-up, no return visits
Guests stay, leave, vanish. No email list. No WhatsApp follow-up. No reason to return. Meanwhile your best referral source, happy past guests, just walked out the door.
The Fix
One system. Three things that change.
01
Every enquiry captured, 24/7
AI Receptionist with an Irish accent answers calls during dinner service, weddings, busy periods, out-of-hours. Checks availability, answers menu and room questions, books directly into your system. No more lost wedding enquiries because staff were running plates.
02
Direct bookings, not OTA bookings
Facebook and Google Ads driving traffic to your direct-booking page, not Booking.com. Retargeting for visitors who didn’t convert. Result: same guest volume, 15-25% more margin on every booking.
03
Guests become repeat visitors
WhatsApp and email follow-up post-stay. Review generation on Google and TripAdvisor. Anniversary emails, birthday offers, seasonal campaigns. Build a loyal audience instead of renting OTA traffic.
Recommended Stack
What most hospitality operators actually need.
Different from trades or clinics. Hospitality needs visual reach, not just search. And a way to bypass the OTAs.
01
Facebook & Instagram Ads · from €600/mo
Hospitality is visual. Food, rooms, views, ambience. Meta is where your guests scroll at 11pm planning their next weekend away. Retargeting is essential here.
02
AI Receptionist · €200/mo
Covers the phones during service hours, weddings, busy Fridays and out-of-hours. Answers availability, dietary, parking questions. Books directly into your system.
03
The Manager · €400/mo
Unified inbox across Facebook, Instagram, email, web chat and WhatsApp. Post-stay follow-ups automated. Review generation. Seasonal email campaigns. Saves a FOH manager several hours a day.
04
Full Growth System · €1,200/mo
The full stack bundled at 48% off. Ideal for boutique hotels, wedding venues and restaurant groups wanting consistent direct bookings and margin recovery from OTAs.
Why Hospitality Matters To Us
Hospitality operators are paying 15-25% to OTAs for traffic they could own. A proper direct-booking system pays for itself in 2-3 bookings a month.
John McGovern · Founder, Glassfull Media
15-25%
OTA commission on every booking
40%
Of bookings happen out-of-hours
5x
Higher lifetime value from direct guests
Ready to take your margin back?
Free 20-minute call. We’ll audit your direct-booking flow and show you where OTAs are eating your profit. 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)}}})();