(function () {
try {
// AQ-r2 (2026-06-09): respect the explicit-denial sentinel
// written by cookie-consent-harden.js writeATR() on any
// marketing-axis denial (payload.marketing === false; cycle-3 F1).
// Without this gate, the next page navigation re-creates
// gmx_first_touch from the current URL+referrer+utm_*+click_ids,
// silently undoing the reject-all deletion (sweep finding #1).
// The sentinel is cleared the moment the visitor grants
// marketing in the banner (analytics-only grant does NOT
// clear), restoring the writer path on the very next
// page load. Page-cache-safe: the sentinel is a
// browser-resident cookie checked in the inline script, so
// varnish/breeze-served HTML still hits this gate.
if (/(?:^|;\s*)gmx_consent_denied=1(?:;|$)/.test(document.cookie || '')) return;
var CLICK_IDS = ['gclid','fbclid','msclkid','ttclid','wbraid','gbraid','li_fat_id'];
var qs = new URLSearchParams(window.location.search);
var urlClickIdKey = null;
for (var i = 0; i < CLICK_IDS.length; i++) {
if (qs.get(CLICK_IDS[i])) { urlClickIdKey = CLICK_IDS[i]; break; }
}// Parse existing cookie.
var existing = null;
var match = document.cookie.match(/(?:^|;\s*)gmx_first_touch=([^;]+)/);
if (match) {
try { existing = JSON.parse(decodeURIComponent(match[1])); } catch (e) { existing = null; }
}// GWP-273 — referrer-enrichment branch.
// Keep existing unless either (a) URL carries a new click id
// the stored payload lacks (paid click is a higher-value
// signal and upgrades direct/organic), OR (b) the stored
// payload has empty referrer AND the current document.referrer
// is non-empty + external (Safari/ITP/policy-quirk catch:
// first-hit may have missed the referrer; later same-session
// page-loads can recover it).
var existingHasRef = !!(existing && existing.referrer && existing.referrer !== '');
var docRef = document.referrer || '';
var refHost = '';
if (docRef) {
try {
refHost = new URL(docRef).hostname.replace(/^www\./, '').toLowerCase();
} catch (e) { refHost = ''; }
}
var ownHost = (location.host || '').replace(/^www\./, '').toLowerCase();
var currentExternalRef = !!(refHost && refHost !== ownHost);
var canEnrichRef = !!existing && !existingHasRef && currentExternalRef;if (existing) {
if (!urlClickIdKey && !canEnrichRef) return;
if (urlClickIdKey && existing[urlClickIdKey] && !canEnrichRef) return;
}var utm_keys = [
'utm_source','utm_medium','utm_campaign','utm_content','utm_term',
'utm_adgroup','utm_matchtype','utm_network','utm_device','utm_placement'
];
// GWP-273 — merge-preserving base. When enriching an existing
// payload, retain its landing_url + ts + prior click ids /
// utms; only overlay referrer (and any click id appended below
// via the forEach). Branches with/without urlClickIdKey were
// collapsed — both produced the identical Object.assign — the
// click id is added uniformly later.
//
// GWP-273 design choice: "latest external referrer wins" —
// accepted edge case where a user opens a new external tab
// post-empty-first-touch and returns; low-volume, simple, no
// sentinel flag needed.
var data;
if (existing && canEnrichRef) {
data = Object.assign({}, existing, { referrer: docRef });
} else {
data = { landing_url: window.location.href, referrer: docRef, ts: Date.now() };
}
utm_keys.concat(CLICK_IDS).forEach(function (k) {
var v = qs.get(k);
if (v) data[k] = v;
});
// GWP-208 — carry Meta's first-party click-linker cookies (_fbc
// = fb.1.<ts>.<fbclid>, _fbp) into the captured payload so they
// ride the persistent gmx_first_touch cookie cross-page (LP X →
// LP Y) the same way the URL click-ids do. The CF7 hidden-field
// populator copies the whole payload verbatim, so fbc/fbp reach
// the lead even when the form lives on a page without ?fbclid.
var fbcMatch = document.cookie.match(/(?:^|;\s*)_fbc=([^;]+)/);
if (fbcMatch && fbcMatch[1]) data.fbc = decodeURIComponent(fbcMatch[1]);
var fbpMatch = document.cookie.match(/(?:^|;\s*)_fbp=([^;]+)/);
if (fbpMatch && fbpMatch[1]) data.fbp = decodeURIComponent(fbpMatch[1]);
var encoded = encodeURIComponent(JSON.stringify(data));
if (encoded.length > 3800) return;
var expires = new Date(Date.now() + 90 * 864e5).toUTCString(); // GWP-143 C1: match Google Ads 90-day attribution window
var secure = window.location.protocol === 'https:' ? '; Secure' : '';
document.cookie = 'gmx_first_touch=' + encoded + '; Path=/; Expires=' + expires + '; SameSite=Lax' + secure;
} catch (e) {}
})();
/* Meta Pixel base — inline in wp_head so Breeze Delay-All-JS does not defer it; fbevents.js is async-injected (optimizer-invisible). */
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script',
'https://connect.facebook.net/en_US/fbevents.js');/* Symmetric with server GMX_Consent: revoke BEFORE init; cookies/sends held until grant. */
fbq('consent', 'revoke');
fbq('init', '1857131551802431');
fbq('track', 'PageView'); /* queued; flushed to Meta only after consent grant *//* Grant bridge — reads the SAME ATR marketing signal as GMX_Consent.applyConsent(). */
(function () {
function read(name){var m=document.cookie.match('(?:^|; )'+name.replace(/([.*+?^${}()|[\]\\])/g,'\\$1')+'=([^;]*)');return m?decodeURIComponent(m[1]):'';}
function marketingGranted(){
try {
var given = read('atr_cookie_notice_consent_given');
if (!given) return false; // undecided -> stay revoked
var c = JSON.parse(read('atr_cookie_notice_consent') || '{}');
return !!(c.marketing || c.ad_storage === 'granted');
} catch (e) { return false; } // NO-SILENT-OK: parse/read failure degrades gracefully to revoked (consent stays held; no marketing send) — not an error to report.
}
function apply(){ if (marketingGranted()) fbq('consent', 'grant'); }
apply();
document.addEventListener('click', function(ev){
if (ev.target && ev.target.closest && ev.target.closest('[class*="atr-cookie"], #atr-cookie-notice')) setTimeout(apply, 50);
}, true);
window.addEventListener('storage', apply);
})();
var breeze_prefetch = {"local_url":"https://gomixapp.com","ignore_remote_prefetch":"1","ignore_list":["/cart/","/checkout/","/my-account/","https://gomixapp.co.il/(.)/u05d4u05d8u05d5u05e4u05e1-u05e0u05e9u05dcu05d7-u05d1u05d4u05e6u05dcu05d7u05d4/","wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
GoMixApp offers LED screens of all types – giant, video, for public advertising and indoor signage. Choose between transparent LED screens for shop windows, flexible screens for custom design, or outdoor LED screens that withstand any weather condition.
Pixel Pitch determines display quality: 2–4 mm for indoor screens, 10–16 mm for outdoor LED screens. The GoMixApp team will help you choose a solution based on location and budget – see our screen models.
✓ E2E end-to-end|✓ 300+ customers|★★★★★ Google 5.0
E2E
End-to-end
+500
Screens
+15
Years of experience
+1,000
Projects
LIVE
L
LOGO
👟
NEW COLLECTION
S A L E
LIVE
L
LOGO
👟
NEW COLLECTION
SALE
Upgrading community halls with advanced and cost-effective display technology.
Modular display tailored to any wall size – the perfect solution for community centers and halls.
Digital signage for sports halls: honor sponsors and immerse the crowd with giant screens.
Benefits and Uses of LED Video Walls
Business advertising screens with GoMixApp management software deliver immediate benefits for any business type. Retail stores use in-store screens to display real-time promotions, leading directly to higher sales. Restaurants and cafes integrate dynamic digital menus to update prices within seconds. Banks and financial branches, offices and business centers enjoy professional digital signage for branded messaging. All of this with Wi-Fi connectivity for signage and automatic updates of messages and ads – without manual intervention. For more details, see the full guide to using LED screens for business.
How Does HDR Technology Affect LED Screens for Business?
HDR (High Dynamic Range) technology significantly upgrades the display quality of LED screens for advertising businesses and stores. Thanks to HDR, screens deliver a wider range of contrast and brightness — ensuring that ad colors appear vivid and accurate even under strong lighting. Businesses and stores using LED screens with HDR enjoy more impressive visual content that draws customer attention and conveys advertising messages effectively.
HDR (High Dynamic Range) technology is driving a real revolution in digital advertising screens. It enables a wider dynamic range of colors and brightness levels, producing a more realistic and impressive image. LED screens with HDR capability show better detail in dark and bright areas simultaneously, with improved contrast of up to 1,000,000:1. The result is advertising content that stands out and grabs attention, especially in environments with challenging lighting. Businesses investing in LED screens with HDR see up to a 40% increase in attention compared to standard screens.
What Are the Technical Considerations When Choosing an Outdoor LED Screen?
Choosing an outdoor LED screen requires attention to critical parameters. At least IP65 protection is essential to handle rain and dust. Minimum brightness of 5,000 nits is required for visibility in direct sunlight, with advanced screens reaching 8,000 nits. Anti-UV coating extends LED lifespan and preserves color consistency for years. GoMixApp offers business advertising screens that withstand extreme conditions, with a simple management interface and remote content updates over Wi-Fi signage connectivity.
Advantages
LED Screens with Stunning Design
LED screens for business advertising and stores offer a stunning design that integrates aesthetically into any commercial environment. Thanks to ultra-thin panels, polished aluminum frames and premium finishes, the screens are a design element in themselves — not just an advertising tool. Screens can be ordered in custom shapes and sizes that integrate into the storefront, the window display or the business interior and lend it a modern, professional look.
LED Screens with Flexible Design and Size
LED screens excel in design and size flexibility, allowing the creation of custom displays for diverse needs.
Works Even Without Continuous Internet
Our digital signage can also run OFFLINE without needing internet, allowing the screens to be placed anywhere – indoors or outdoors.
Remote Control via the Content Editor
Our screen management software — the content editor — offers a range of built-in modules such as weather, news, date and time, images, videos and messages, enabling the creation of diverse content and easy management for a professional user experience.
ISO Standards for Information Security and Quality 27001, 9001
Information management at the highest standards. Strict security procedures for data management, access control and protection from potential threats ensure that your information is optimally safeguarded.
Warranty and Dedicated Technical Support
Phone support and dedicated technical assistance. Fast response and help with any issue. Includes a 3-year hardware warranty.
What Are the Benefits of Modular LED Screens?
Modular LED screens offer exceptional flexibility in design and maintenance. Each module can be replaced individually within minutes, significantly reducing downtime. The ability to build screens in non-standard shapes (curved, wave, 3D) opens new creative possibilities. Scalability allows starting with a small screen and expanding gradually as needed. Cost-wise, replacing a single module is 20× cheaper than repairing a full screen. Auto-calibration technology ensures color and brightness consistency across modules.
How to Choose the Right Resolution for Your Content Type?
Matching resolution to displayed content is critical to maximize impact. Text and fine graphics require at least Full HD (1920×1080), while video can look excellent even at HD (1280×720) from a suitable viewing distance. 4K content (3840×2160) is recommended for LED advertising screens in premium areas or when viewing distance is less than 3 meters. A 16:9 aspect ratio remains the standard, but ultra-wide formats (21:9) are gaining popularity. Correct DPI (dots per inch) calculation ensures optimal sharpness.
Digital signage for sports halls: honor sponsors and immerse the crowd with giant screens.
GoMixApp System for LED Video Screens
The GoMixApp system is far more than a digital content management platform; it enables smart, advanced management of your LED screens anywhere, anytime. With our platform, you can control LED video walls and digital LED screens, schedule content intelligently and manage dynamic advertising in real time.
Transparent LED Screens
Transparent LED screens are an innovative display tool that enables visual content projection while preserving full screen transparency. Their advantages include modern design, easy integration into shop windows or glass structures, and an attractive viewing experience without blocking natural light or line of sight.
Flexible LED Screens
Flexible LED screens are an advanced technological solution that enables display on concave, cylindrical or other uniquely shaped surfaces. Their main advantage is design flexibility and adaptation to complex spaces. They can be used in shopping malls, advertising displays, showrooms, exhibitions and more.
GoMixApp System for LED Video Screens
The GoMixApp system is far more than a digital content management platform; it enables smart, advanced management of your LED screens anywhere, anytime. With our platform, you can control LED video walls and digital LED screens, schedule content intelligently and manage dynamic advertising in real time.
Transparent LED Screens
Transparent LED screens are an innovative display tool that enables visual content projection while preserving full screen transparency. Their advantages include modern design, easy integration into shop windows or glass structures, and an attractive viewing experience without blocking natural light or line of sight.
Flexible LED Screens
Flexible LED screens are an advanced technological solution that enables display on concave, cylindrical or other uniquely shaped surfaces. Their main advantage is design flexibility and adaptation to complex spaces. They can be used in shopping malls, advertising displays, showrooms, exhibitions and more.
GoMixApp for Remote Control of Large LED Screens
GoMixApp customers enjoy a significant competitive advantage thanks to advanced LED screen technology. Screens for stores and offices, remote control and dynamic real-time advertising – all managed from one place. As of 2026, hundreds of businesses have already chosen GoMixApp and report an average 30% increase in customer traffic. Choose LED screens for sale with full warranty, proven technology and dedicated support – contact us for a quote.
What Are the Advanced Communication Protocols?
In the digital era, remote control of advertising screens is essential for efficient operation. The DMX512 protocol remains popular for LED lighting control, while Art-Net enables control over an IP network, and cloud-based solutions deliver global management with millisecond response times. 5G technologies open possibilities for real-time content updates with bandwidth up to 10 Gbps. Security protocols like TLS 1.3 ensure encrypted data transmission. GoMixApp enables full control through a dedicated app, with support for all leading platforms.
How Does Refresh Rate Impact the Viewing Experience?
A high refresh rate is essential for displaying smooth motion on LED screens. A minimum value of 1920Hz is required to prevent visible flicker, especially in video recordings. Professional screens reach 3840Hz and even 7680Hz, ensuring a smooth image even when filmed at high speed. The impact of refresh rate is particularly noticeable in dynamic content like sports or animations. High values reduce eye fatigue and improve the readability of moving text.
What Are the Innovations in MicroLED Technology?
MicroLED represents the next generation of business advertising screens. The tiny LEDs (under 100 microns) enable Pixel Pitch as small as 0.6 mm, producing unprecedented resolutions. Energy efficiency improves 30% over standard LED, with a lifespan exceeding 100,000 hours. The technology enables ultra-thin (under 30 mm thick) and flexible screens. Nanosecond response time ensures excellent performance even with interactive content.
How Do You Calculate ROI on LED Screen Investment?
ROI calculation for LED screens in businesses requires comprehensive analysis. Direct ad revenue can reach 500–2,000 ILS per square meter per day in strategic locations. Savings on printed static signage add up to tens of thousands of shekels per year. Businesses that adopted digital signage report an average 30% increase in customer traffic. Typical payback period ranges from 18 to 36 months, with the option to shorten it using accelerated depreciation. Also compare digital outdoor signage costs before deciding.
What Are the Standards for Brightness and Durability?
International standards such as IEC 62341 define minimum requirements for outdoor screens. Minimum brightness of 5,000 cd/m² is required for visibility in direct sun. A contrast ratio of at least 5000:1 ensures tonal distinction. UV resistance per ASTM G154 ensures color retention for at least 5 years. A 50,000-hour lifespan at 50% brightness is the minimum standard. EMC standards ensure the screen does not interfere with surrounding electronic devices.
How to Manage Power Consumption and Cooling?
Proper energy management in advertising screens is critical for long-term operation. Ambient light sensor technologies auto-adjust brightness and save up to 40% on power. Hybrid (active/passive) cooling systems prevent overheating with minimum noise. Using 90%+ efficient power supplies (80 PLUS Gold) reduces energy losses. Smart thermal management includes multiple temperature sensors and predictive algorithms.
How Does Auto-Calibration Technology Improve Quality?
Advanced auto-calibration systems ensure image consistency over time. Optical sensors monitor brightness and color of each module and apply real-time corrections. Machine Learning algorithms detect wear patterns and forecast required maintenance. Dynamic gamma calibration adapts the response curve to lighting conditions. Color Matching technology ensures ΔE<2 uniformity across all modules.
With LED Digital Signage You Can Display Diverse Content
“Their digital signage system transformed our business visibility. Real-time content management is so simple anyone can do it.”
Yuval
Events manager
Service:
★★★★★
Product:
★★★★★
Recommendation:
★★★★★
“The combination of the interactive kiosk with three tablets exceeded expectations. We collected 614 leads in just 3 days. Thanks for the effective solution!”
Gil Oz
Customer
Service:
★★★★★
Product:
★★★★★
Recommendation:
★★★★★
“Real pros!”
Start leading your business to success today with GoMixApp’s advanced technology tools
The GoMixApp platform offers a variety of design templates and advanced modules for easy remote content management. With support for all operating systems, real-time notifications and top-tier data security – your screens are always active and impressive. Digital menus for restaurants, store display screens and floor signage – all managed from one place. Contact us now for details and to get started.
The Right Integration
The world of LED screens and digital signage continues to evolve rapidly and offers businesses unique opportunities for effective communication with their target audience. The right integration of advanced technology, smart content management and professional maintenance – including business advertising screens, in-store screens and digital roll-ups – delivers maximum ROI and a clear competitive edge.
Already Collaborating With Us
A candid, warm photograph of two people smiling and interacting with an illuminated LED display screen in a modern clothing store.
Key Takeaways: Why Businesses Are Moving to Digital Signage
Digital signage using LED display screens has become the central marketing tool for businesses and retail stores. LCD advertising screens and advanced LED screens enable automatic content updates, savings on printing costs and a significant boost in customer attraction – all controlled through one cloud-based digital content management software.
Real-time content updates – changing prices, promotions and messages within seconds, no printing cost
Remote control and remote content management – full control from any device, anywhere
Low power consumption and savings on operating costs compared to traditional illuminated signs
High display quality and rich color options – stands out even in full sun
Easy installation and suitability for both small and large spaces
Modular LED screens – can be expanded gradually as needed
Compatibility with retail stores, restaurants, cafeterias, reception counters and shopping centers
LED Screens for Business: Comparing Technologies and Common Uses
Choosing an LED screen for your business depends on the type of use, location and display environment. Below is an overview of the main types and their advantages for businesses and stores:
Indoor LED screen – Pixel Pitch 2–4 mm, ideal for stores, offices and restaurants. High resolution for close-up viewing.
Outdoor LED screen – 5,000–8,000 nits brightness, IP65, rain and sun resistant. Suitable for outdoor signage and shopping centers.
Transparent LED screen – 70–95% transparency, perfect for shop windows and digital storefronts without blocking light.
Flexible LED screen – installs on concave, cylindrical or curved surfaces – for unique designs in malls and exhibitions.
Digital roll-up – high-mobility solution for events, exhibitions and temporary sales points.
All these types are controlled through the GoMixApp cloud content management system, with Wi-Fi connectivity for signage and automatic updates of messages and ads. For details on LED screens for sale and current pricing, contact us.
Need music for your business too?
GoMixApp has launched a new product line: AI music for businesses, with no ACUM royalties. A streamer plus 70 ILS/month (VAT excluded), fully synced with your digital signage.
The GoMixApp LED screen system is installed in retail stores, corporate lobbies and offices. A modular approach with custom pitch, high brightness and remote content management from a single platform.
Landmark Yarka, store
A double-sided LED outdoor pillar, an in-store video wall and LCD screens at display stations. Cloud-based content management across 2 floors by fashion, sports and outdoor categories.
Tech 770, corporate lobby
A 2.4×1.4 meter LED screen on a living green wall. Original AI music and dynamic real-time animation. See the full project.
Arad Group, lobby
An ultra-wide LED screen behind a reception desk. Multi-zone display with branding, internal announcements and real-time information.
Frequently Asked Questions
What is the difference between an indoor and outdoor LED advertising screen?
An indoor LED screen is designed for stores and offices with Pixel Pitch of 2–4 mm and up to 1,500 nits brightness. An outdoor LED screen comes with IP65 rating, 5,000–8,000 nits brightness and resistance to rain and sun – suitable for outdoor signage and shopping centers.
How much do LED screens for business advertising cost?
The cost of an LED screen for business varies by size, type and technology. A small indoor screen starts from a few thousand ILS, while a large video wall can reach tens of thousands. GoMixApp provides tailored quotes – contact us for details.
Can screen content be controlled remotely?
Yes. The GoMixApp system enables full remote control through a dedicated app or browser. You can update content, schedule ads and manage multiple screens from different locations – even without continuous internet in OFFLINE mode.
What is the benefit of a transparent LED screen for a store?
A transparent LED screen allows visual content to be projected on the shop window while maintaining 70–95% transparency, so customers see both the products inside and the advertisement. An ideal solution for digital storefronts in stores and shopping centers.
What is a digital roll-up and who is it suitable for?
A digital roll-up is a portable screen that displays dynamic digital content at temporary sales points, exhibitions and events. Its advantage is high mobility and remote content control – suitable for businesses seeking a flexible, eye-catching solution.
How long does it take to pay back an LED screen investment for a business?
Typical payback ranges from 18 to 36 months, depending on location, usage frequency and savings on printing. Businesses in strategic locations report ad revenue of 500–2,000 ILS per square meter per day.
Comparison of LED Screen Types for Business and Store Advertising
Attribute
Outdoor LED screen
Indoor LED screen
LED video wall
Weather resistance
✓Protected against rain, dust and extreme heat
✗Designed for controlled environments only
✗Installed inside the building only
HDR support
✓High contrast for visibility in sunlight
✓Rich colors and an exceptionally sharp image
✓Cinematic, immersive display quality
Flexibility in size and design
✓Adaptable to unique facades and structures
✓Modular and fits any interior space
✓Full wall coverage for a dramatic effect
Works without continuous internet
✓Content stored locally in standalone mode
✓Local content management without network dependency
✗Usually requires connection to central management
Installation and implementation cost
High – includes structural reinforcement and weather durability
Medium – relatively simple indoor installation
High – broad-scope, complex project
Fit for businesses and stores
✓Excellent for store facades and outdoor signs
✓Ideal for points of sale and indoor displays
✓Perfect for an impressive, branded customer experience
In Summary: Smart Digital Signage for Your Business
LED display screens for digital signage have become the most effective advertising tool for businesses and stores – with automatic content updates, full remote control and low power consumption that pays back the investment within 18–36 months. Whether you are looking for an in-store LED screen, an outdoor LED advertising screen, a digital roll-up for events, or a video wall for a shopping center – GoMixApp provides a custom solution with a 3-year warranty and dedicated technical support. As of 2026, hundreds of Israeli businesses already enjoy an average 30% increase in customer traffic thanks to professional digital signage. Last updated: June 2026. Ready to upgrade your advertising? Contact us now and we will be happy to prepare a custom quote.
var gmxCf7LegacyUxI18n = {"errName":"Please enter a full name","errPhone":"Please enter a valid phone number","errEmail":"Please enter a valid email address","errRequired":"Required field"};
//# sourceURL=gmx-cf7-legacy-ux-js-extra
var gmxCf7UxI18n = {"progressTemplate":"{N} field(s) remaining","allSet":"All set to send!","sending":"Sending\u2026","successTitle":"Thank you! Your inquiry has been received","successBody":"A representative will get back to you within 24 hours with a tailored quote.","successCtaLabel":"See our areas of expertise","successCtaHref":"/expertise/","errorTitle":"Submission failed","errorBody":"Please try again, or call us directly"};
//# sourceURL=gmx-cf7-ux-js-extra
var atrCookieNoticeSettings = {"cookieName":"atr_cookie_notice_consent","decisionCookieName":"atr_cookie_notice_consent_given","expiryDays":"365","autoHideDelay":"0","enableDebug":"","siteName":"GoMixApp","isPrivacyPage":"","privacyPolicyUrl":"https://gomixapp.com/privacy-policy/","privacyNoteText":"\ud83d\udca1 You can read this page while deciding about cookies","mode":"simple"};
//# sourceURL=atr-cookie-notice-simple-js-extra
(function(){
function cleanUrl(url) {
// Strip query params embedded mid-path: /ID?params/file -> /ID/file
return url.replace(/\?[^\/]+\//g, '/');
}
function addWebPFallback(pic) {
if (pic.getAttribute('data-webp-fb')) return;
pic.setAttribute('data-webp-fb', '1');
var img = pic.querySelector('img');
if (!img) return;
img.onerror = function() {
this.onerror = null;
this.src = cleanUrl(this.src).replace('vi_webp','vi').replace('.webp','.jpg');
var sources = this.parentElement.querySelectorAll('source');
for (var i = 0; i < sources.length; i++) {
sources[i].srcset = cleanUrl(sources[i].srcset).replace('vi_webp','vi').replace('.webp','.jpg');
}
};
}
var observer = new MutationObserver(function() {
var pics = document.querySelectorAll('.video-seo-youtube-picture');
for (var i = 0; i < pics.length; i++) addWebPFallback(pics[i]);
});
observer.observe(document.documentElement, { childList: true, subtree: true });
})();
(function(){
var siteKey = "6Ldnu_gsAAAAAGpkh7vCd_h3L9BA193yFU59I4Do";
var action = "submit_lead_form";
var loaderUrl = "https:\/\/www.google.com\/recaptcha\/enterprise.js?render=6Ldnu_gsAAAAAGpkh7vCd_h3L9BA193yFU59I4Do";
// GWP-506 (perf): the reCAPTCHA Enterprise runtime costs ~900ms of main-thread
// work (PSI contactus TBT 660ms, perf 69). It was loaded eagerly on every page
// carrying a CF7 form. It now loads on the FIRST real page interaction
// (scroll/pointer/key/touch) — warming the runtime well before the user can
// reach submit — and never loads on a no-interaction (lab) page view, so the
// perf win holds. The token is still stamped on form focusin and refreshed at
// submit. IMPORTANT: the server gate is fail-CLOSED by default (GWP-412
// require_token) — a missing token at submit is treated as spam — so the
// runtime MUST be warm before submit; that is exactly why the warm trigger is
// first-page-interaction, NOT focusin-only (focusin-only left a race where a
// fast focus→submit could POST before the ~900ms download finished and drop a
// legit lead). The eager <script src> is gone.
var greReady = false, greWaiters = [], greLoadStarted = false;
function pollGre(attempts) {
if (typeof grecaptcha !== 'undefined' && grecaptcha.enterprise) {
greReady = true;
var queued = greWaiters;
greWaiters = [];
queued.forEach(function (fn) { try { fn(); } catch (e) {} });
return;
}
if (attempts > 200) {
// no-silent-failures: enterprise.js never became ready (network-blocked,
// consent/privacy blocker, or a Google outage). Surface it — a missing
// token fails CLOSED server-side (GWP-412) and drops the lead.
if (window.console && console.warn) {
console.warn('[GMX recaptcha] enterprise.js not ready after ~10s; token will be missing (submit fails closed).');
}
return; // give up after ~10s (200 * 50ms)
}
setTimeout(function () { pollGre(attempts + 1); }, 50);
}
function loadGre() {
if (greLoadStarted) return;
greLoadStarted = true;
var s = document.createElement('script');
s.src = loaderUrl;
s.async = true;
document.head.appendChild(s);
pollGre(0); // begin polling only once the runtime is actually loading
}
function whenGreReady(cb) {
if (greReady) return cb();
greWaiters.push(cb);
}
function stampToken(form) {
if (!form.querySelector('.wpcf7-form-control-wrap input[type="submit"], .wpcf7-submit')) return;
loadGre(); // lazy: kick off enterprise.js on demand (idempotent)
whenGreReady(function () {
grecaptcha.enterprise.ready(function () {
grecaptcha.enterprise.execute(siteKey, { action: action }).then(function (token) {
var hidden = form.querySelector('input[name="gmx_recaptcha_token"]');
if (!hidden) {
hidden = document.createElement('input');
hidden.type = 'hidden';
hidden.name = 'gmx_recaptcha_token';
form.appendChild(hidden);
}
hidden.value = token;
}).catch(function () {
// no-silent-failures: token generation failed; the server gate is
// fail-CLOSED (GWP-412), so this submit will be rejected as spam.
if (window.console && console.warn) {
console.warn('[GMX recaptcha] token execute failed; submit will fail closed.');
}
});
});
});
}
document.addEventListener('wpcf7submit', function (e) { stampToken(e.target); });
// Also stamp on first focus into any CF7 form (so token ready before submit).
// `whenGreReady()` queues the stamp until grecaptcha loads, so the once-
// listener stays safe even if grecaptcha isn't ready at focus-in time.
document.querySelectorAll('form.wpcf7-form').forEach(function (form) {
form.addEventListener('focusin', function once() {
form.removeEventListener('focusin', once);
stampToken(form);
});
});
// GWP-506: warm enterprise.js on the FIRST real page interaction so the ~900ms
// runtime is ready before the user reaches submit (closes the focusin-only race
// against the fail-CLOSED server gate, and covers AJAX/popup-injected forms that
// missed the focusin binding above). Never fires on a no-interaction (lab) view,
// so the perf win holds. Idempotent via loadGre()'s greLoadStarted guard.
var warmOpts = { passive: true, capture: true };
var warmEvents = ['pointerdown', 'keydown', 'touchstart', 'scroll'];
function warmGre() {
loadGre();
warmEvents.forEach(function (e) { window.removeEventListener(e, warmGre, warmOpts); });
}
warmEvents.forEach(function (e) { window.addEventListener(e, warmGre, warmOpts); });// GWP-507 (CONFIRMED LIVE: 19 real leads dropped in 8 days): capture-phase
// submit GATE. The warm/focusin logic above only *helps* the token be ready;
// it is NOT a guarantee. The race: a user whose FIRST interaction is clicking
// submit on an autofilled form (no prior scroll/field-touch to warm the
// ~900ms enterprise.js), or who submits before the runtime readies, serializes
// the AJAX POST with an EMPTY gmx_recaptcha_token → the fail-CLOSED server gate
// (GWP-412 require_token) drops the lead as spam. CF7's `wpcf7submit` fires
// AFTER the AJAX POST (too late), and CF7 exposes no documented pre-POST JS
// hook (verified: contactform7.com/dom-events). So the ONLY seam is to
// intercept the native DOM submit/click in CAPTURE phase, HOLD it until
// greReady + token stamped, then re-dispatch. grecaptcha token lifetime is
// 2 minutes, so holding briefly is safe.
//
// TIMEOUT-FALLBACK CHOICE (a): if enterprise.js never readies within the
// ~10s ceiling (network-blocked / consent-blocker / Google outage), we
// RE-ENABLE the button and let the submit proceed WITHOUT a token rather than
// hard-blocking the user. It will fail-CLOSED server-side (GWP-412), but the
// console.warn fires loudly (no-silent-failures) — we never trap a real user
// behind a spinner they can't escape.
var GATE_TIMEOUT_MS = 10000; // matches pollGre ceiling (200 * 50ms).
function gmxFormHasToken(form) {
var hidden = form.querySelector('input[name="gmx_recaptcha_token"]');
return !!(hidden && hidden.value);
}
function gmxSetVerifying(form, on) {
var btn = form.querySelector('.wpcf7-submit, input[type="submit"], button[type="submit"]');
if (!btn) return;
if (on) {
btn.disabled = true;
btn.setAttribute('data-gmx-verifying', '1');
} else {
btn.disabled = false;
btn.removeAttribute('data-gmx-verifying');
}
}
function gmxReleaseSubmit(form) {
// Mark released so the re-dispatched submit passes straight through the
// capture gate (no re-gate loop), re-enable UX, then re-trigger.
form.__gmxGateReleased = true;
gmxSetVerifying(form, false);
if (typeof form.requestSubmit === 'function') {
form.requestSubmit();
} else {
form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
}
// GWP-507 finding-1 (BLOCKER fix): reset the release flag on the NEXT tick
// so any FUTURE user submit (user edits a field + resubmits) is re-gated and
// stamps a FRESH token. reCAPTCHA tokens are single-use with a ~2-min
// lifetime — without this reset, __gmxGateReleased stayed true forever after
// the first release, letting a second submit bypass the gate and POST a
// stale/used token. The setTimeout(0) lets the synchronous re-dispatch above
// complete (which short-circuits on the still-true flag) before we re-arm.
setTimeout(function () { form.__gmxGateReleased = false; }, 0);
}
function gmxSubmitGate(e) {
var form = e.currentTarget;
if (form.tagName !== 'FORM') { form = form.form || form.closest('form.wpcf7-form'); }
if (!form) return;
// Idempotent: a programmatic re-submit we already released proceeds. This is
// the ONLY pass-through — it lets the freshly-stamped re-dispatch reach CF7.
// (The flag is reset on the next tick in gmxReleaseSubmit, so the NEXT user
// submit is re-gated.)
if (form.__gmxGateReleased) return;
// GWP-507 finding-2 (stale/used token fix): every USER submit HOLDS + stamps
// a FRESH token — we do NOT early-return on an already-present token. A token
// already sitting in the hidden input may be stale or already used (single-
// use, ~2-min lifetime); proceeding on it would POST a dead token. enterprise.js
// is warm by submit time, so grecaptcha.enterprise.execute() resolves in
// ~100-300ms — the per-submit hold is brief. stampToken() OVERWRITES the
// hidden input value (hidden.value = token), so no stale token lingers.
// HOLD: block CF7's submit handler before the AJAX POST.
e.preventDefault();
e.stopImmediatePropagation();
if (form.__gmxGateWaiting) return; // a click + submit may both fire; hold once.
form.__gmxGateWaiting = true;
loadGre(); // kick the warm if not started.
gmxSetVerifying(form, true);
var released = false;
function release(missing) {
if (released) return;
released = true;
form.__gmxGateWaiting = false;
if (missing && window.console && console.warn) {
console.warn('[GMX recaptcha] submit gate timed out (~10s); releasing without token (submit fails closed).');
}
gmxReleaseSubmit(form);
}
var timer = setTimeout(function () { release(true); }, GATE_TIMEOUT_MS);
whenGreReady(function () {
stampToken(form);
// stampToken resolves the token asynchronously (enterprise.execute
// promise); poll briefly for the stamp, then release. Bounded by the
// same overall timer above.
(function awaitStamp(n) {
if (released) return;
if (gmxFormHasToken(form)) { clearTimeout(timer); release(false); return; }
if (n > 200) { clearTimeout(timer); release(true); return; } // ~10s (200*50ms)
setTimeout(function () { awaitStamp(n + 1); }, 50);
})(0);
});
}
// GWP-507 finding-4 (CF7 phase): WHY capture phase works. Our gate listener is
// registered in CAPTURE phase (3rd arg `true`), so it runs BEFORE CF7's own
// bubble-phase 'submit' handler on the same form. When we call
// e.stopImmediatePropagation() in the capture listener, the DOM spec stops ALL
// further listeners for that event on the target — including the later
// bubble-phase CF7 handler — so CF7's AJAX POST never fires until we re-dispatch
// with a fresh token. This capture-phase interception is the only documented
// pre-POST seam: CF7 exposes no pre-POST JS hook (wpcf7submit fires AFTER the
// AJAX POST). See contactform7.com/dom-events.
document.querySelectorAll('form.wpcf7-form').forEach(function (form) {
form.addEventListener('submit', gmxSubmitGate, true);
var btn = form.querySelector('.wpcf7-submit, input[type="submit"], button[type="submit"]');
if (btn) { btn.addEventListener('click', gmxSubmitGate, true); }
});
})();
(function(){
var loaded = false;
function loadUserWay() {
if (loaded) return;
loaded = true;
var el = document.createElement('script');
el.setAttribute('data-account', "UX40fo0Ctw");
el.setAttribute('data-language', "en");
el.setAttribute('src', 'https://cdn.userway.org/widget.js');
document.body.appendChild(el);
events.forEach(function(e){ window.removeEventListener(e, loadUserWay, {passive: true}); });
}
var events = ['scroll', 'mousemove', 'touchstart', 'click', 'keydown'];
events.forEach(function(e){ window.addEventListener(e, loadUserWay, {passive: true}); });
})();