Skip to content
document.addEventListener('DOMContentLoaded', function() {
fetch('/cart.js')
.then(res => res.json())
.then(cart => {
// Only these promo gift card variant IDs are managed by this script
const tiers = [
{ threshold: 12500, promoVariantId: '40406823174217' },
{ threshold: 7500, promoVariantId: '40406823141449' }
];
const allPromoIds = tiers.map(t => t.promoVariantId);
// Only look for PROMO gift cards in cart (ignore regular gift cards)
const promoCardsInCart = cart.items.filter(item =>
allPromoIds.includes(String(item.variant_id))
);
// Calculate cart total EXCLUDING promo gift cards
const cartTotalWithoutPromos = cart.items.reduce((sum, item) => {
if (allPromoIds.includes(String(item.variant_id))) return sum;
return sum + (item.price * item.quantity);
}, 0);
// Determine which tier they qualify for
const qualifiedTier = tiers.find(tier => cartTotalWithoutPromos >= tier.threshold);
if (qualifiedTier) {
const hasCorrectPromo = promoCardsInCart.some(
item => String(item.variant_id) === qualifiedTier.promoVariantId
);
if (!hasCorrectPromo) {
// Remove any wrong-tier PROMO cards
const removePromises = promoCardsInCart.map(item =>
fetch('/cart/change.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ id: item.key, quantity: 0 })
})
);
Promise.all(removePromises).then(() => {
fetch('/cart/add.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ id: qualifiedTier.promoVariantId, quantity: 1 })
}).then(() => location.reload());
});
}
} else {
// Below threshold - remove promo cards only
if (promoCardsInCart.length > 0) {
const removePromises = promoCardsInCart.map(item =>
fetch('/cart/change.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ id: item.key, quantity: 0 })
})
);
Promise.all(removePromises).then(() => location.reload());
}
}
});
});