{"product_id":"bulk-car-air-freshener-packs","title":"Bulk Car Air Freshener Packs","description":"\u003cp\u003eBulk Car Air Freshener Packs are built for events, bridesmaid boxes, client gifts, welcome bags, and branded drop-offs. The pack size sets how many fresheners go in each box: 10, 25, 50, or 100. Then you choose how many boxes you need. Each product line stays locked to its own discount tier so the price on the page matches the pack size you select.\u003c\/p\u003e\n\u003cp\u003eChoose the fragrance, choose one or two batch colors, then choose glitter or no glitter. We create these to order in Loxahatchee, Florida, so larger runs need added production time before shipment. This page is for group orders, not one-off retail pieces.\u003c\/p\u003e\n\u003ch3\u003ePack pricing\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003e10 fresheners:\u003c\/strong\u003e $90 total ($9 each; 10% pack savings)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003e25 fresheners:\u003c\/strong\u003e $212.50 total ($8.50 each; 15% pack savings)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003e50 fresheners:\u003c\/strong\u003e $375 total ($7.50 each; 25% pack savings)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003e100 fresheners:\u003c\/strong\u003e $600 total ($6 each; 40% pack savings)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe selected pack price is the merchandise price used in cart. Bulk and pack-pricing items do not qualify for the storewide free-shipping threshold.\u003c\/p\u003e\n\u003ch3\u003eScent notes\u003c\/h3\u003e\n\u003cp\u003eThe note profile depends on the fragrance you choose for the batch. Popular event picks include Clean Linen for a crisp profile, Honeysuckle Jasmine for citrus and floral lift, Black Ice for a sharper cologne read, and Palo Santo for a warmer wood profile.\u003c\/p\u003e\n\u003cp\u003eIf you need one scent across the order, keep the batch simple. If you need help choosing the right fragrance for an event, use the event notes box on the product page.\u003c\/p\u003e\n\u003ch3\u003eFAQ\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eIs the price shown for one freshener or one box?\u003c\/strong\u003e\u003cbr\u003eThe price shown is per box. The pack size tells you how many fresheners go in that box.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCan I mix scents inside one box?\u003c\/strong\u003e\u003cbr\u003eUse the event notes box to explain what you need. We review custom requests before production.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDo bulk packs ship on the normal timeline?\u003c\/strong\u003e\u003cbr\u003eLarger runs need added production time because we make them to order.\u003c\/p\u003e\n\u003ch3\u003eRelated products\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\u003ca href=\"\/collections\/drive-fresh-handmade-car-air-fresheners-collection\"\u003eHandmade Car Air Fresheners\u003c\/a\u003e\u003c\/li\u003e\n  \u003cli\u003e\u003ca href=\"\/products\/sea-turtle-air-freshener\"\u003eSea Turtle Air Freshener\u003c\/a\u003e\u003c\/li\u003e\n  \u003cli\u003e\u003ca href=\"\/products\/dolphin-car-air-freshener\"\u003eDolphin Car Air Freshener\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!-- lox-cache-refresh bulk-scent-selector 20260423-1848 --\u003e\n\u003cscript data-lox-bulk-scent-cap=\"20260423-max-trim\"\u003e\n(function () {\n  if (window.__loxBulkScentDescriptionCap) return;\n  window.__loxBulkScentDescriptionCap = true;\n  var rules = {\n    '\/products\/bulk-soy-candle-packs': { min: 12, unit: 'candles' },\n    '\/products\/bulk-soy-candle-gift-packs': { min: 12, unit: 'candles' },\n    '\/products\/bulk-room-spray-packs': { min: 10, unit: 'sprays' },\n    '\/products\/bulk-room-spray-gift-packs': { min: 10, unit: 'sprays' },\n    '\/products\/bulk-car-air-freshener-packs': { min: 10, unit: 'fresheners' },\n    '\/products\/bulk-car-air-freshener-packs': { min: 10, unit: 'fresheners' }\n  };\n  function rule() { return rules[window.location.pathname]; }\n  function parseCount(text) { var m = String(text || '').match(\/\\d+\/); return m ? parseInt(m[0], 10) : 0; }\n  function checks() { return Array.prototype.slice.call(document.querySelectorAll('.bulk-scent-checkbox')); }\n  function selected() { return checks().filter(function (input) { return input.checked; }); }\n  function form() { return document.querySelector('product-form form'); }\n  function packCount() {\n    var checked = Array.prototype.slice.call(document.querySelectorAll('input[type=\"radio\"]:checked')).find(function (input) { return \/\\d+\\s*pack\/i.test(input.value); });\n    if (checked) return parseCount(checked.value);\n    var idInput = form() \u0026\u0026 form().querySelector('[name=\"id\"]');\n    var selectedId = idInput ? String(idInput.value) : '';\n    var variants = (window.ShopifyAnalytics \u0026\u0026 window.ShopifyAnalytics.meta \u0026\u0026 window.ShopifyAnalytics.meta.product \u0026\u0026 window.ShopifyAnalytics.meta.product.variants) || (window.meta \u0026\u0026 window.meta.product \u0026\u0026 window.meta.product.variants) || [];\n    var variant = variants.find(function (v) { return String(v.id) === selectedId; });\n    return parseCount(variant \u0026\u0026 (variant.public_title || variant.title));\n  }\n  function quantity() { var input = form() \u0026\u0026 form().querySelector('input[name=\"quantity\"]'); return Math.max(1, parseInt((input \u0026\u0026 input.value) || '1', 10) || 1); }\n  function total() { var pack = packCount(); return pack \u003e 0 ? pack * quantity() : 0; }\n  function maxScents() { var r = rule(); return r ? Math.max(1, Math.floor(total() \/ r.min)) : 0; }\n  function limitText(prefix) { var r = rule(); var max = maxScents(); var units = total(); var word = max === 1 ? 'scent' : 'scents'; return (prefix || '') + 'Scent variety limit: ' + (units ? units + ' total ' + r.unit : 'this pack size') + ' allows up to ' + max + ' ' + word + '.'; }\n  function setMessage(prefix, error, trimmed) {\n    var msg = document.querySelector('[data-bulk-scent-limit-message]');\n    if (!msg || !rule()) return;\n    var max = maxScents(); var count = selected().length; var remain = Math.max(0, max - count);\n    msg.textContent = trimmed ? 'Pack size changed. We kept the first ' + max + ' selected ' + (max === 1 ? 'scent' : 'scents') + '. ' + limitText('') : limitText(prefix) + (remain ? ' Select ' + remain + ' more ' + (remain === 1 ? 'scent' : 'scents') + ' to max out this pack.' : \" You have reached this pack's scent max.\");\n    msg.classList.toggle('is-error', Boolean(error));\n  }\n  function syncHidden() { var values = selected().map(function (input) { return input.value; }); var hidden = document.getElementById('bulk-scents-hidden'); if (hidden) hidden.value = values.join(', '); var display = document.getElementById('selected-scent-display'); if (display) display.textContent = values.length ? values.join(', ') : 'Choose scents below'; }\n  function enforce(prefix, error) { if (!rule()) return true; var all = checks(); if (!all.length) return true; var max = maxScents(); var chosen = selected(); var trimmed = false; if (chosen.length \u003e max) { chosen.slice(max).forEach(function (input) { input.checked = false; }); trimmed = true; } var count = selected().length; all.forEach(function (input) { input.disabled = !input.checked \u0026\u0026 count \u003e= max; }); syncHidden(); setMessage(trimmed ? '' : prefix, error, trimmed); return count \u003c= max; }\n  function init() { if (!rule() || !checks().length) return; document.addEventListener('change', function (event) { var target = event.target; if (target \u0026\u0026 target.matches \u0026\u0026 target.matches('.bulk-scent-checkbox') \u0026\u0026 target.checked \u0026\u0026 selected().length \u003e maxScents()) { target.checked = false; enforce('That would add too many scents. ', true); event.stopPropagation(); return; } setTimeout(function () { enforce('', false); }, 0); setTimeout(function () { enforce('', false); }, 100); }, true); document.addEventListener('input', function () { enforce('', false); }); document.addEventListener('submit', function (event) { if (!rule() || !checks().length) return; if (selected().length \u003c 1) { event.preventDefault(); enforce('Choose at least one scent. ', true); return; } if (!enforce('Too many scents selected. ', true)) event.preventDefault(); }, true); enforce('', false); }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init();\n})();\n\u003c\/script\u003e","brand":"LoxLivin","offers":[{"title":"10 Pack (10 Air Fresheners)","offer_id":42570911187031,"sku":"BULK-AF-10","price":90.0,"currency_code":"USD","in_stock":true},{"title":"25 Pack (25 Air Fresheners)","offer_id":42570911219799,"sku":"BULK-AF-25","price":212.5,"currency_code":"USD","in_stock":true},{"title":"50 Pack (50 Air Fresheners)","offer_id":42570911252567,"sku":"BULK-AF-50","price":375.0,"currency_code":"USD","in_stock":true},{"title":"100 Pack (100 Air Fresheners)","offer_id":42570911285335,"sku":"BULK-AF-100","price":600.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0020\/6661\/2279\/files\/homepage-hero-optimized_5431ebfd-11e2-405c-b716-b695d8cb7432.jpg?v=1783831730","url":"https:\/\/www.loxlivin.com\/products\/bulk-car-air-freshener-packs","provider":"LoxLivin'","version":"1.0","type":"link"}