window.dataLayerPYS = window.dataLayerPYS || [];
console.log('PixelYourSite PRO version 12.5.2');
var breeze_prefetch = {"local_url":"https://www.canadiansavers.ca","ignore_remote_prefetch":"1","ignore_list":["/how-to-earn-points/","/login/","/profile/","/forgot-password/","/profile/my-brands/","/profile/my-categories/","/profile/my-stores/","/sign-up/","wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
https://www.canadiansavers.ca/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js
var pysTikTokRest = {"restApiUrl":"https://www.canadiansavers.ca/wp-json/pys-tiktok/v1/event","debug":""};
var pysFacebookRest = {"restApiUrl":"https://www.canadiansavers.ca/wp-json/pys-facebook/v1/event","debug":""};
//# sourceURL=jquery-core-js-extra
(function(w,d,e,u,f,l,n){w[f]=w[f]||function(){(w[f].q=w[f].q||[])
.push(arguments);},l=d.createElement(e),l.async=1,l.src=u,
n=d.getElementsByTagName(e)[0],n.parentNode.insertBefore(l,n);})
(window,document,'script','https://assets.mailerlite.com/js/universal.js','ml');
ml('account', '230245');
ml('enablePopups', true);
jQuery(document).ready(function($) {
// Notification function
function showNotification(message) {
const container = $('.tfs-notification-container');
const notification = $(`
<div class="tfs-notification">
<span class="tfs-notification-icon">
<svg viewBox="0 0 24 24" width="16" height="16">
<polyline points="20 6 9 17 4 12" fill="none" stroke="white" stroke-width="2"/>
</svg>
</span>
<span class="tfs-notification-message">${message}</span>
</div>
`);
container.append(notification);
notification[0].offsetHeight;
setTimeout(() => {
notification.addClass('show');
}, 10);
setTimeout(() => {
notification.removeClass('show');
setTimeout(() => {
notification.remove();
}, 300);
}, 3000);
}
// Handle Select All button
$('.select-all-button').on('click', function() {
const $form = $(this).closest('form');
$form.find('input[type="checkbox"]').prop('checked', true);
});
// Handle Select None button
$('.select-none-button').on('click', function() {
const $form = $(this).closest('form');
$form.find('input[type="checkbox"]').prop('checked', false);
});
// Handle search functionality
let searchTimeout;
$('.taxonomy-search-input').on('input', function() {
const $input = $(this);
const $container = $input.closest('.taxonomy-follow-list');
clearTimeout(searchTimeout);
searchTimeout = setTimeout(function() {
const searchTerm = $input.val().toLowerCase();
const $items = $container.find('.taxonomy-item');
const $noTerms = $container.find('.no-terms-message');
let visibleItems = 0;
$items.each(function() {
const termName = $(this).data('term-name');
if (termName.includes(searchTerm)) {
$(this).show();
visibleItems++;
} else {
$(this).hide();
}
});
if (visibleItems === 0) {
$noTerms.show();
} else {
$noTerms.hide();
}
}, 300);
});
// Handle accordion toggles
$('.accordion-toggle').on('click', function(e) {
e.preventDefault();
const $button = $(this);
const $content = $button.closest('.followed-item-header').next('.accordion-content');
const isExpanded = $button.attr('aria-expanded') === 'true';
$button.attr('aria-expanded', !isExpanded);
if (!isExpanded) {
$content.prop('hidden', false);
const $item = $button.closest('.followed-item');
const termId = $item.data('term-id');
const taxonomy = $item.data('taxonomy');
$.ajax({
url: 'https://www.canadiansavers.ca/wp-admin/admin-ajax.php',
type: 'POST',
data: {
action: 'update_last_visit',
term_id: termId,
taxonomy: taxonomy,
nonce: 'b8f6e2a101'
}
});
} else {
$content.prop('hidden', true);
}
});
// Form submission handler: regular POST submit, no AJAX
$('.taxonomy-follow-form').off('submit').on('submit', function() {
const $form = $(this);
const $button = $form.find('.follow-taxonomy-button');
$button.prop('disabled', true).text('Updating...');
});
const $stickyCta = $('.tfs-sticky-cta');
let activeStickyButton = null;
function isMobileTfs() {
return window.matchMedia('(max-width: 767px)').matches;
}
function getActiveLauncher() {
const $launchers = $('.tfs-add-button-wrapper:visible');
if (!$launchers.length) {
return null;
}
let best = null;
let bestTop = Number.POSITIVE_INFINITY;
const scrollTop = window.pageYOffset || document.documentElement.scrollTop || 0;
$launchers.each(function() {
const rect = this.getBoundingClientRect();
const absoluteTop = rect.top + scrollTop;
if (absoluteTop < bestTop) {
bestTop = absoluteTop;
best = this;
}
});
return best;
}
function setStickyButtonFromLauncher(launcher) {
if (!launcher || !$stickyCta.length) {
return;
}
const button = launcher.querySelector('.tfs-open-modal-button');
if (!button) {
return;
}
const modalTarget = button.getAttribute('data-tfs-modal-target') || '';
if (activeStickyButton === modalTarget && $stickyCta.children().length) {
return;
}
activeStickyButton = modalTarget;
const clone = button.cloneNode(true);
clone.classList.add('tfs-sticky-open-modal-button');
$stickyCta.empty().append(clone);
}
function updateStickyCta() {
if (!$stickyCta.length) {
return;
}
if (!isMobileTfs()) {
$stickyCta.removeClass('is-visible').attr('aria-hidden', 'true').empty();
$('body').removeClass('has-tfs-sticky-cta');
activeStickyButton = null;
return;
}
if ($('.tfs-modal-overlay.is-open').length) {
$stickyCta.removeClass('is-visible').attr('aria-hidden', 'true');
$('body').removeClass('has-tfs-sticky-cta');
return;
}
const launcher = getActiveLauncher();
if (!launcher) {
$stickyCta.removeClass('is-visible').attr('aria-hidden', 'true').empty();
$('body').removeClass('has-tfs-sticky-cta');
activeStickyButton = null;
return;
}
setStickyButtonFromLauncher(launcher);
const rect = launcher.getBoundingClientRect();
const shouldShow = rect.bottom < 0 || rect.top > (window.innerHeight - 80);
$stickyCta.toggleClass('is-visible', shouldShow)
.attr('aria-hidden', shouldShow ? 'false' : 'true');
$('body').toggleClass('has-tfs-sticky-cta', shouldShow);
}
$(window).on('scroll resize orientationchange load', updateStickyCta);
$(document).on('click', '.tfs-sticky-cta .tfs-open-modal-button', function() {
setTimeout(updateStickyCta, 20);
});
setTimeout(updateStickyCta, 50);
// Individual follow button handler
$('.tfs-follow-button').on('click', function(e) {
if (!$(this).hasClass('follow-taxonomy-button')) {
e.preventDefault();
var $button = $(this);
var termId = $button.data('term-id');
var taxonomy = $button.data('taxonomy');
var action = $button.data('action');
$.ajax({
url: 'https://www.canadiansavers.ca/wp-admin/admin-ajax.php',
type: 'POST',
data: {
action: action,
term_id: termId,
taxonomy: taxonomy,
nonce: 'b8f6e2a101'
},
beforeSend: function() {
$button.prop('disabled', true).addClass('loading');
},
success: function(response) {
if (response.success) {
if (response.data.is_following) {
$button.addClass('is-following')
.data('action', 'unfollow_term');
showNotification('Successfully followed!');
} else {
$button.removeClass('is-following')
.data('action', 'follow_term');
showNotification('Successfully unfollowed');
}
// Reload page after a short delay
setTimeout(function() {
window.location.reload();
}, 1500);
} else {
alert('Action failed. Please try again.');
}
},
error: function() {
alert('An error occurred. Please try again.');
},
complete: function() {
$button.prop('disabled', false).removeClass('loading');
}
});
}
});
});
document.documentElement.className += " js";
(function(g,o){g[o]=g[o]||function(){(g[o]['q']=g[o]['q']||[]).push(
arguments)},g[o]['t']=1*new Date})(window,'_googCsa');
(function() {function signalGooglefcPresent() {if (!window.frames['googlefcPresent']) {if (document.body) {const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe);} else {setTimeout(signalGooglefcPresent, 0);}}}signalGooglefcPresent();})();
window.pushMST_config={"vapidPK":"BPXoRQolBdaYgbUv5xasrzRIkdVBsxyQ5qCGGAJgqiEAYVeWlVWos21eT1pHT1Ve4H0LoT2UlGbN5N78rDeHAz4","enableOverlay":true,"swPath":"/sw.js","i18n":{}};
var pushmasterTag = document.createElement('script');
pushmasterTag.src = "https://cdn.pushmaster-cdn.xyz/scripts/publishers/648adb4fc6ef390008e58b83/SDK.js";
pushmasterTag.setAttribute('defer','');
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(pushmasterTag, firstScriptTag);
(function(){
var loc = window.location.href;
var dd = document.createElement('script');
dd.type = 'text/javascript'; dd.src = '//static.digidip.net/canadiansavers.js?loc=' + loc;
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(dd, s);
})();
Grocery prices in Canada have increased sharply over the past few years, forcing many households to rethink where and how they shop. What used to be viewed as a “budget-only” option has now become mainstream. The role of discount grocery stores in Canada has expanded dramatically as consumers ...
READ MORE +
Updated for 2026: For Canadian parents, diapers remain one of the biggest recurring baby expenses. The good news is that you can lower your cost per diaper by combining sales, coupons, loyalty rewards, cashback offers, bulk purchases, and free baby samples.
This updated guide explains how to ...
READ MORE +
Most Canadians assume grocery sales are random, tied to holidays, or simply whatever the store decides to discount that week. That assumption costs real money. Grocery deal cycles are structured, repeating patterns driven by supplier contracts, seasonal demand, and retailer promotional calendars. ...
READ MORE +
(adsbygoogle = window.adsbygoogle || []).push({});
(adsbygoogle = window.adsbygoogle || []).push({});
(function() {
function getUTM(param) {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(param) || '';
}
// Hook global gtag
if (typeof gtag !== 'undefined') {
const originalGtag = gtag;
window.gtag = function() {
// arguments = ['event', 'AdSense', {...}]
if (arguments[0] === 'event' && arguments[1] === 'AdSense') {
let params = arguments[2] || {};
// Override avec les vraies valeurs URL
params.utm_campaign = getUTM('utm_campaign');
params.utm_source = getUTM('utm_source');
params.utm_medium = getUTM('utm_medium');
params.utm_content = getUTM('utm_content');
arguments[2] = params;
}
return originalGtag.apply(this, arguments);
};
}
})();
(function() {
if (window.innerWidth > 767) return;
let shown = false;
window.addEventListener('scroll', function() {
if (shown) return;
document.querySelectorAll('.sidebar-widget-mobile-delay').forEach(el => {
el.style.display = '';
});
shown = true;
}, { passive: true });
})();
https://www.canadiansavers.ca/wp-content/themes/rehub-blankchild/js/custom-filters.js
https://www.canadiansavers.ca/wp-content/plugins/pixelyoursite-pro/dist/scripts/js.cookie-2.1.3.min.js
https://www.canadiansavers.ca/wp-content/plugins/pixelyoursite-pro/dist/scripts/sha256.js
https://www.canadiansavers.ca/wp-content/plugins/pixelyoursite-pro/dist/scripts/tld.min.js
https://www.canadiansavers.ca/wp-content/plugins/pixelyoursite-pro/dist/scripts/public.js
https://www.canadiansavers.ca/wp-content/themes/rehub-theme/js/inview.js
https://www.canadiansavers.ca/wp-content/themes/rehub-theme/js/pgwmodal.js
https://www.canadiansavers.ca/wp-content/themes/rehub-theme/js/unveil.js
https://www.canadiansavers.ca/wp-content/themes/rehub-theme/js/hoverintent.js
https://www.canadiansavers.ca/wp-content/themes/rehub-theme/js/countdown.js
https://www.canadiansavers.ca/wp-content/themes/rehub-theme/js/custom.js
jQuery(document).ready(function($) {
var retina = window.devicePixelRatio > 1 ? true : false;
if(retina) {
jQuery(".logo_image img").attr("src", "https://www.canadiansavers.ca/wp-content/uploads/2025/08/canadian-savers-logo.webp");
}
});
//# sourceURL=rehub-js-after
var kadence_blocks_toc = {"headings":"[]","expandText":"Expand Table of Contents","collapseText":"Collapse Table of Contents"};
//# sourceURL=kadence-blocks-tableofcontents-js-extra
https://www.canadiansavers.ca/wp-content/plugins/kadence-blocks/includes/assets/js/kb-table-of-contents.min.js
https://www.canadiansavers.ca/wp-content/themes/rehub-theme/js/userlogin.js
https://www.canadiansavers.ca/wp-content/themes/rehub-theme/js/bettercategory.js