(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;
});
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) {}
})();
var breeze_prefetch = {"local_url":"https://gomixapp.co.il","ignore_remote_prefetch":"1","ignore_list":["/cart/","/checkout/","/my-account/","/(.)/u05d4u05d8u05d5u05e4u05e1-u05e0u05e9u05dcu05d7-u05d1u05d4u05e6u05dcu05d7u05d4/","wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
מחפשים שלט שעות פתיחה לעסק? כאן תמצאו תבנית מוכנה של טבלת ימים ושעות לתלייה על דלת החנות, הקליניקה או המשרד — מעתיקים בלחיצה, מדפיסים, או מורידים כקובץ PDF או Word לעריכה. מחליפים את השעות בסוגריים המרובעים בשעות שלכם — ויש לכם שלט מסודר תוך דקה.
שעות פתיחה — [שם העסק]
יום ראשון: [09:00-19:00]
יום שני: [09:00-19:00]
יום שלישי: [09:00-19:00]
יום רביעי: [09:00-19:00]
יום חמישי: [09:00-19:00]
יום שישי וערבי חג: [09:00-13:30]
שבת וחגים: סגור
לבירורים והזמנות: [טלפון]
נשמח לראותכם!
איך מכינים שלט שעות פתיחה שעובד — ומה חייב להופיע בו
שלט שעות הפתיחה הוא נקודת השירות הראשונה של העסק: לקוח שמגיע לדלת סגורה בלי לדעת מתי לחזור — ברוב המקרים פשוט לא חוזר. שלט ברור בכניסה חוסך שיחות טלפון מיותרות בשעות הסגירה, מונע אכזבות בדלת, ומשדר כבר מהמדרכה שמדובר בעסק מסודר שמכבד את זמנו של הלקוח.
מה חייב להופיע? כל ימי השבוע במפורש — כולל שורה נפרדת לימי שישי וערבי חג, שבהם רוב העסקים מקצרים, וציון ברור של הימים הסגורים. אל תכתבו "א׳-ה׳" בלבד ותשאירו את השאר לניחוש: דווקא השורות של שישי ושבת הן אלה שהלקוחות מחפשים. הוסיפו טלפון לבירורים — ומי שמתלבט יתקשר במקום לוותר.
הדפסה ותלייה: דף A4 בפונט גדול ומודגש נקרא היטב ממרחק שניים-שלושה מטרים — תלו אותו בגובה העיניים, בצד הנכנס של הדלת, ועטפו בלמינציה אם הוא חשוף לשמש או לגשם. שלט מצהיב ומקומט עם שעות ישנות גרוע יותר מאין שלט בכלל, כי הוא מטעה לקוחות בביטחון מלא. כדאי להדפיס שני עותקים: אחד לדלת ואחד ליד הקופה.
חשוב לדעת: בישראל אין חובה חוקית כללית להציג שעות פתיחה (להבדיל מהצגת מחירים, המחויבת לפי חוק הגנת הצרכן), אבל חוקי העזר העירוניים קובעים באילו ימים ושעות מותר לעסק לפעול — ולכן השלט צריך לשקף את מה שמותר ומתקיים בפועל. לא פחות חשוב: ודאו ששעות הפתיחה בשלט זהות לשעות בפרופיל העסק בגוגל, באתר וברשתות החברתיות. חוסר התאמה בין הדלת לגוגל הוא היום אחת הסיבות הנפוצות לביקורת שלילית.
שאלות נפוצות
מה חייב להופיע בשלט שעות פתיחה לעסק?
פירוט מלא של ימי הפעילות, שעות הפתיחה והסגירה לכל יום, שורה נפרדת לימי שישי וערבי חג, ציון מפורש של ימים סגורים (שבת וחגים) וטלפון לבירורים. שלט שמשאיר מקום לניחושים — למשל בלי שורת שישי — מייצר שיחות טלפון מיותרות ולקוחות מאוכזבים בדלת.
האם חובה על פי חוק להציג שלט שעות פתיחה בכניסה לעסק?
אין בישראל חובה חוקית כללית להציג שעות פתיחה (בשונה מהצגת מחירים, שמחויבת לפי חוק הגנת הצרכן). עם זאת, חוקי עזר עירוניים מסדירים באילו ימים ושעות מותר לעסקים לפעול, ושלט שעות פתיחה ברור נחשב סטנדרט שירות בסיסי שמחזק אמון של לקוחות.
באיזה גודל ובאיזה פונט כדאי להדפיס שלט שעות פתיחה?
לרוב העסקים מספיק דף A4 לאורך, עם כותרת גדולה ושעות בפונט מודגש וקריא — כך שהשלט נקרא בנוחות ממרחק שניים-שלושה מטרים. בחרו פונט פשוט ללא קישוטים, השאירו רווח בין השורות, והגנו על הדף בלמינציה או בעטיפת ניילון אם הוא תלוי בחוץ.
איך מעדכנים את השלט בשינויי שעון קיץ וחורף או בערבי חג?
הכי פשוט לשמור את הקובץ (Word או PDF) ולהדפיס גרסה מעודכנת בכל שינוי עונתי — זה בדיוק היתרון של תבנית לעריכה. לתקופות קצרות, כמו ערב חג בודד, אפשר להוסיף ליד השלט הקבוע פתק זמני בולט, למשל שלט סגור לרגל חג.
מה עושים כששעות הפתיחה בגוגל לא תואמות את השלט בדלת?
מעדכנים מיד את פרופיל העסק בגוגל (Google Business Profile) כך שיתאים לשלט — רוב הלקוחות בודקים את השעות בגוגל לפני שהם יוצאים אליכם. חוסר התאמה בין הדלת לגוגל הוא אחת הסיבות הנפוצות לביקורות שליליות, ולכן כל שינוי שעות צריך להתעדכן בשני המקומות באותו יום.
האם התבנית מתאימה גם לקליניקה, למשרד או למספרה?
כן. הטבלה של ימים ושעות זהה בכל סוג עסק — מחליפים את שורת הפנייה ומתאימים את השעות. לקליניקות ומשרדים כדאי להוסיף שורה נפרדת לשעות מענה טלפוני אם הן שונות משעות קבלת הקהל.
נקודות מפתח
שלט שעות פתיחה ברור הוא נקודת השירות הראשונה של העסק — עוד לפני שהלקוח נכנס
חובה לפרט: כל ימי השבוע, שורת שישי וערבי חג, ימים סגורים וטלפון לבירורים
מדפיסים על A4 בפונט גדול שנקרא ממרחק 2-3 מטרים, ועוטפים בלמינציה
השעות בשלט חייבות להיות זהות לשעות בגוגל, באתר וברשתות
הנוסח כאן חינמי — העתקה, הדפסה או הורדה כ-PDF/Word
מדפיסים שלט חדש בכל שינוי שעות? במסך שילוט דיגיטלי בכניסה לעסק שעות הפתיחה, המבצעים וההודעות מתעדכנים מרחוק תוך שניות — בלי מדפסת, בלי למינציה ובלי נייר דבק על הזכוכית.
document.addEventListener('click', function(e) {
var el = e.target.closest('.gmx-lite-yt');
if (!el) return;
var vid = el.getAttribute('data-vid');
if (!vid) return;
var iframe = document.createElement('iframe');
iframe.src = 'https://www.youtube.com/embed/' + vid + '?autoplay=1';
iframe.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;border:0;';
iframe.allow = 'autoplay;encrypted-media';
iframe.allowFullscreen = true;
el.style.position = 'relative';
el.innerHTML = '';
el.appendChild(iframe);
});
(function () {
var c = document.body.className;
c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
document.body.className = c;
})();
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
(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); });
})();
(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', "he");
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}); });
})();