Custom Header Cards for Bulk Air Freshener Orders Add a branded, retail-ready header card to your bulk air freshener order. Choose between two card sizes — both fully customizable with your logo, messaging, scent name, and branding. 3.5" x 4" Folded Business Card (Header Card) Single-sided print — clean, economical, and quick to produce Folds in half to create a pocket-sized header card that glues directly to the top of the air freshener Hang hole optional — add one for peg displays, skip it for bundled or flat packaging Best for: event swag, simple bulk gifts, dealer add-ons, quick branded presentation Download the Template: Illustrator (.ai) · PDF 3.5" x 9.625" Full Backer Card Double-sided print — both front and back are visible in the display Larger card that extends behind the full air freshener, creating a retail-style backer for a more premium look Hang hole optional Best for: retail-ready packaging, promotional kits, corporate gifting, branded displays Download the Template: Illustrator (.ai) · PDF How It Works Choose your card size and quantity Design your card using our template (download above) or upload your own artwork during checkout We'll print, glue, and pair it with your custom air freshener order before shipping Minimum order: 50 units. Turnaround: 5–7 business days after artwork approval. Questions or need a custom size/spec? Contact us for a custom quote. .if-mockup-trigger{display:inline-block;padding:12px 28px;border-radius:8px;background:#00AEEF;color:#fff;font-weight:700;font-size:15px;border:none;cursor:pointer;text-decoration:none;line-height:1.2;margin-top:14px} .if-mockup-trigger:hover{background:#0099d4} .if-price-per-unit{display:inline;margin-left:10px;font-size:1.15rem;font-weight:600;color:#00AEEF;letter-spacing:-0.01em;white-space:nowrap;line-height:1} Request a Free Mockup (function () { const HANDLE = "custom-header-card"; // ── Per-unit price display ─────────────────────────────────────────── (async function () { let product = null; try { const r = await fetch('/products/' + HANDLE + '.js'); product = await r.json(); } catch (e) { return; } if (!product || !product.variants || !product.variants.length) return; const variants = product.variants; const optionNames = (product.options || []).map(o => (typeof o === 'string' ? o : (o && o.name)) || '' ); let qtyIndex = optionNames.findIndex(n => /quantity|qty/i.test(n)); if (qtyIndex < 0) { const probe = variants[0]; for (let i = 0; i < 3; i++) { const v = probe['option' + (i + 1)]; if (v && /^\d+$/.test(String(v))) { qtyIndex = i; break; } } } if (qtyIndex < 0) return; const target = document.createElement('span'); target.className = 'if-price-per-unit'; target.setAttribute('data-price-per-unit', ''); function findPriceEl() { return document.querySelector('.price__regular .price-item--regular') || document.querySelector('.price-item--regular') || document.querySelector('.price__regular') || document.querySelector('.price__container') || document.querySelector('[data-product-price]'); } function ensureAttached() { if (document.contains(target)) return; const priceEl = findPriceEl(); if (priceEl) priceEl.insertAdjacentElement('afterend', target); } ensureAttached(); function readSelectedOptions() { return optionNames.map(name => { const sel = document.querySelector( 'select[name="options[' + name + ']"], ' + 'input[name="options[' + name + ']"]:checked' ); return sel ? sel.value : null; }); } function findVariant() { const opts = readSelectedOptions(); if (opts.some(v => v == null)) { const idInput = document.querySelector('input.product-variant-id, input[name="id"]'); if (idInput) return variants.find(v => String(v.id) === String(idInput.value)); return null; } return variants.find(v => (v.options || []).every((val, i) => String(val) === String(opts[i])) ); } let lastSig = ''; function update() { ensureAttached(); const variant = findVariant(); const sig = variant ? String(variant.id) : ''; lastSig = sig; if (!variant) { target.textContent = ''; return; } const qty = parseInt(variant['option' + (qtyIndex + 1)], 10); if (!qty || !variant.price) { target.textContent = ''; return; } const perUnit = (variant.price / 100 / qty).toFixed(2); target.textContent = '$' + perUnit + ' / unit'; } function bindOptionListeners() { optionNames.forEach(name => { document.querySelectorAll( 'select[name="options[' + name + ']"], ' + 'input[name="options[' + name + ']"]' ).forEach(el => { if (el.dataset.ifPpuBound) return; el.dataset.ifPpuBound = '1'; el.addEventListener('change', () => setTimeout(update, 0)); }); }); } bindOptionListeners(); setInterval(function () { bindOptionListeners(); ensureAttached(); const variant = findVariant(); const sig = variant ? String(variant.id) : ''; if (sig !== lastSig || !target.textContent) update(); }, 250); update(); })(); })();