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
Paid Ads Management · Ireland
Paid ads that actually pay back.
Managed paid ads on Meta, Google, TikTok and beyond. One platform or all three, run by a team who’ve managed campaigns for 150+ Irish businesses since 2017.
What’s Included
Every tier comes with the full stack.
No upsells for reporting. No extra charge for creative. What’s below is in the base price for every tier.
Setup & Strategy
Campaign strategy & audience research
Pixel & conversion tracking setup
Ad account audit if existing
Initial creative brief & copy
Launch plan & KPI targets
Ongoing Management
Ongoing account monitoring
Budget pacing & optimisation
A/B testing of ads & audiences
Creative refreshes every 4–6 weeks
Platform update implementation
Reporting & Comms
Monthly performance report
Live dashboard access
Monthly strategy call
Direct WhatsApp & email access
Proactive recommendations
Save on Setup
Pay 12 months upfront and we waive the setup fee. Save up to €1,500 on Scale Trio.
Pricing
Pick one platform. Or stack three.
All pricing excludes ad spend (paid directly by you to platforms) and VAT. Minimum 3-month engagement to let data mature.
Starter
1 Platform
€600 /mo
+ €500 setup
For businesses testing paid ads with budgets up to €2,000/month in ad spend.
One platform of your choice
Up to €2k/mo spend managed
Full setup & tracking
Monthly reporting & call
Get Started →
Scale
1 Platform
€900 /mo
+ €750 setup
For businesses scaling a proven channel with €2k to €6k/mo ad spend.
Single platform, scaled
€2k to €6k/mo spend managed
Advanced audience testing
Bi-weekly optimisation
Creative refresh every 4 weeks
Get Started →
Save €300
Scale Duo
2 Platforms
€1,500 /mo
+ €1,200 setup
Was €1,800/mo
Two platforms run in parallel. Ideal for Meta + Google funnels.
Two platforms of your choice
€2k to €6k/mo spend on each
Shared creative & strategy
Cross-platform attribution
Everything in Scale, x2
Get Started →
Best Value
Save €600
Scale Trio
3 Platforms
€2,100 /mo
+ €1,500 setup
Was €2,700/mo
Full-funnel paid media. Meta + Google + TikTok or your chosen mix.
Three platforms run together
€2k to €6k/mo spend on each
Full-funnel attribution
Unified creative strategy
Everything in Scale, x3
Get Started →
Bespoke · 3+ platforms or €6k+/mo spend per channel
If you’re running enterprise-scale spend, multi-region campaigns, or need LinkedIn or programmatic in the mix, we scope custom. Proposal within 48 hours.
Request Scope →
How We Run It
Four phases. Consistent delivery.
Every engagement follows the same structure. Predictable for you, repeatable for us.
1
Audit & strategy
We audit your existing ad accounts (if any), benchmark competitors, set KPI targets, and agree the audience and creative angle.
2
Launch & test
Campaigns launch with A/B tests baked in. First 14 days we’re aggressive on testing. Bad ads get killed fast. Good ones get more budget.
3
Scale & optimise
From week 3, focus shifts to scaling the winners. Creative refreshed every 4 to 6 weeks to prevent fatigue. Budgets increased where numbers support it.
4
Report & refine
Monthly call to walk through performance. Clear recommendations for the next cycle. Live dashboard so you see everything in real time.
Common Questions
Before you engage.
The questions we get asked the most when people are evaluating us against other agencies.
Does the price include ad spend?
No. The prices above are for our management fee only. Ad spend is paid directly by you to Meta, Google, TikTok etc. on your own card. This is the industry standard and protects your data and billing relationship with the platforms.
Why is Scale Duo cheaper than two Scale packages?
Because running two platforms together is genuinely more efficient than running them in isolation. Shared creative, shared strategy, one reporting call, one monthly review. We pass that efficiency to you as a €300/month discount. The same applies to Scale Trio, where running three connected platforms is even more efficient.
What if my ad spend goes over the bracket?
If your spend consistently exceeds the bracket for your tier (e.g. you’re on Scale but spending €8k/mo on one platform), we’ll have a conversation about moving to Bespoke pricing. We don’t hit you with surprise fees. The monthly management cost scales with the complexity of running higher spend, not with the spend itself.
Is there a contract?
Minimum 3-month engagement. Paid ads need 60 to 90 days of data to mature. After that, it’s month-to-month with 30-day notice either way. If you want the 12-month prepaid setup waiver, that’s a 12-month commitment but you save up to €1,500 on setup.
Can I switch tiers later?
Yes. Upgrade any time (next billing cycle). Downgrade with 30 days notice. Most clients start on Scale or Scale Duo and move up as the campaigns prove out and they want to add more platforms.
Do you work with agencies or just direct clients?
Both. If you’re an agency looking to white-label paid ads to your clients, we have a separate partner programme with different rates and a different service model. Book a call to discuss.
What if the ads don’t perform?
We treat underperformance as our problem, not yours. If campaigns aren’t returning what they should after the first 60 days, we’ll restructure them at no extra cost (new audiences, new creative, new approach) and stay on it until we’ve moved the needle or honestly conclude paid ads aren’t the right fit for your business right now. We’d rather lose a contract early than drag a bad fit out for months.
Platform Deep Dives
Prefer to go platform-specific?
If you’ve already decided on one platform and want details on how we run it specifically.
Meta & Instagram Ads
Facebook and Instagram campaigns for lead gen, e-commerce, and brand building. Ideal for consumer and local service businesses.
See Meta Ads →
Google Ads
Search, Performance Max, Shopping, and YouTube. Ideal for high-intent buyer capture and B2B.
See Google Ads →
SEO & AI Visibility
Pair paid ads with organic search to reduce reliance on paid spend over time. From €500/mo.
See SEO →
Ready when you are
Request a quote, or just talk to us first.
20-minute call if you want to figure out the right tier, or a direct quote request if you already know what you need. Either way, we come back within 24 hours.
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)}}})();