This store requires javascript to be enabled for some features to work correctly.

AtomFresh AtomFresh
Take Summer Slow

Juicy fruits, soft florals, and a sweet scent worth savoring

Juicy fruits, soft florals, and a sweet scent worth savoring.

Explore Sweet Jam Jasmine

Best Sellers

22% OFF
AtomFresh Mini Deodorant Deluxe Set
SAVE $15
AtomFresh Signature Scents Discovery Set
SAVE $49
AtomFresh Skin-to-Scent Trio

Skin-to-Scent Trio

$91.00 $140.00
AtomFresh Natural Deodorant Balm
SAVE $10
AtomFresh Scent Ritual Duo

Scent Ritual Duo

$40.00 $50.00
AtomFresh Eau de Parfum

Eau de Parfum

$80.00
SAVE $20
AtomFresh Best Seller Body Wash Duo
30% OFF
AtomFresh Body Care Duo

Body Care Duo

$59.50 $85.00
SAVE $12
AtomFresh Fresh Start Duo

Fresh Start Duo

$48.00 $60.00
SAVE $28
AtomFresh Daily Refined Trio

Daily Refined Trio

$52.00 $80.00
SAVE $40
AtomFresh Deodorant Quintet

Deodorant Quintet

$60.00 $100.00
SAVE $8
AtomFresh Deodorant Duo Set

Deodorant Duo Set

$32.00 $40.00
AtomFresh Natural Body Lotion
SAVE $25
AtomFresh Luxe Glow Gift Box

Luxe Glow Gift Box

$144.00 $169.00
SAVE $58
AtomFresh Ultimate Body Care Bundle

Ultimate Body Care Bundle

$87.00 $145.00
SAVE $56
AtomFresh Body Wash Quartet

Body Wash Quartet

$104.00 $160.00
AtomFresh Body & Hand Lotion
AtomFresh Natural Deodorant Cream
SAVE $8
AtomFresh Invisible Cream Deo Duo

Invisible Cream Deo Duo

$32.00 $40.00
EXPLORE OUR SCENTS

EXPLORE OUR SCENTS

SHOP ALL
Zesty Citrus Sage
Sweet Jam Jasmine
Comfy Woody
Rose Freesia Oud
Ocean Breeze
Bright citrus bursts through sun-warmed herbs—sparkling, energetic, and full of effortless optimism. Lingers softly on the skin.
SHOP OUR GIFT SETS
Image
From the first unwrapping to the final trace of scent, each gift set is a complete fragrance experience—elegantly curated and ready to give.Thoughtful pairings designed for layering, exploration, and everyday ritual.
Image
From the first unwrapping to the final trace of scent, each gift set is a complete fragrance experience—elegantly curated and ready to give.Thoughtful pairings designed for layering, exploration, and everyday ritual.
Dadao proudct review Shopify review
`; function toggleWidget() { loadAppstleLoyaltyWidget(); if (_ALConfig?.widget_setting?.widgetType?.toUpperCase() === 'LAUNCHER' && _ALConfig?.widget_setting?.forceRedirectDedicatedPage === true) { window.open(`/${_ALConfig?.proxy_path_prefix}`); } else { document.querySelector('#appstle_loyalty_iframe')?.classList?.toggle('open'); showAppstleLoyaltyWidget(); setTimeout(function() { document.querySelector('#appstle_loyalty_iframe')?.classList?.toggle('show-close-icon'); }, 900); } } const loadAppstleLoyaltyWidget = () => { var iframe = document.querySelectorAll('#appstle_loyalty_iframe'); iframe.forEach(function(item) { item.contentWindow._ALConfig = _ALConfig; item.contentWindow.document.open('text/html', 'replace'); item.contentWindow.document.write(alIframeSrc); item.contentWindow.document.close(); }); }; const launcherDataType = _ALConfig?.widget_setting?.launcherDataType || 'POINTS'; const loyaltyButtonTitle = document.getElementById('loyalty-widget-title'); if (_ALConfig?.shop_labels?.widgetTitle) { loyaltyButtonTitle.innerHTML = parseHtmlStringContent(_ALConfig?.shop_labels?.widgetTitle); } (function() { const { customerLoyalty, widget_setting } = _ALConfig || {}; if (!customerLoyalty) return; const showTier = widget_setting?.showTierName; const launcherButtonElement = document.querySelector('#appstle-loyalty-button'); const pointsEl = document.querySelector('.loyalty_widget_available_points'); if (!pointsEl) return; const fmt = new Intl.NumberFormat(); const { storeCreditBalance = 0, availablePoints = 0, currentVipTier = '' } = customerLoyalty; let displayValue; if (launcherDataType === 'STORE_CREDITS') { displayValue = formatStoreCreditAmount(storeCreditBalance); } else if ((launcherDataType === 'VIP_TIER') && currentVipTier) { displayValue = String(currentVipTier); } else { const n = Number(availablePoints) || 0; displayValue = fmt.format(formatNumberByPointRoundType(n)); } pointsEl.textContent = displayValue; launcherButtonElement?.classList.add('appstle_show_points'); })(); function handleDeepLink() { const loyaltyDeepLinks = [ '#appstle-loyalty', '#appstle-refer', '#appstle-loyalty-earn-rewards', '#appstle-loyalty-redeem-rewards', '#appstle-loyalty-referrals', '#appstle-loyalty-vip-program' ]; if (!_ALConfig?.widget_setting?.showWidget || !loyaltyDeepLinks.some(hash => location?.hash?.includes(hash))) { return; } loadAppstleLoyaltyWidget(); enableWidget(); setTimeout(() => { document.querySelector('#appstle_loyalty_iframe')?.classList?.add('show-close-icon'); }, 900); } handleDeepLink(); const widgetReferralUrl = new URL(window.location.href); if (_ALConfig?.referralEnabled && widgetReferralUrl?.searchParams.get('appstle_referral') && _ALConfig?.widget_setting?.widgetType === 'LAUNCHER') { let referralRedirectUrl = _ALConfig?.widget_setting?.referralRedirectUrl; let redirectURL = referralRedirectUrl + window.location.search; if (referralRedirectUrl) { let referralUrlObj; try { referralUrlObj = new URL(referralRedirectUrl, window.location.origin); } catch { referralUrlObj = null; } let referralPath = referralUrlObj ? referralUrlObj.pathname.replace(/\/+$/, '') : referralRedirectUrl.replace(/\/+$/, ''); let currentPath = window.location.pathname.replace(/\/+$/, ''); if (referralPath && currentPath !== referralPath) { window.open(redirectURL, '_self'); } } setTimeout(() => { loadAppstleLoyaltyWidget(); enableWidget(); }, 200); } (function observeURLChanges() { let lastUrl = location.href; const handleUrlChange = () => { if (location.href !== lastUrl) { handleDeepLink(); lastUrl = location.href; } }; new MutationObserver(handleUrlChange).observe(document.body, { subtree: true, childList: true }); window.addEventListener('popstate', handleUrlChange); window.addEventListener('hashchange', handleUrlChange); })(); const alDOMObserver = new MutationObserver(function(mutations_list) { mutations_list.forEach(function(mutation) { mutation.addedNodes.forEach(function(added_node) { if (added_node.id === 'appstle_loyalty_iframe') { var iframe = document.querySelectorAll('#appstle_loyalty_iframe'); iframe.forEach(function(item) { item.contentWindow._ALConfig = _ALConfig; item.contentWindow.document.open('text/html', 'replace'); item.contentWindow.document.write(alIframeSrc); item.contentWindow.document.close(); }); alDOMObserver.disconnect(); } }); }); }); alDOMObserver.observe(document.querySelector('body'), { subtree: true, childList: true }); } const storeCreditMismatch = _ALConfig?.customerId && _ALConfig?.customerStoreCreditBalance >= 0 && _ALConfig?.customerLoyalty?.storeCreditBalance >= 0 && _ALConfig?.customerLoyalty?.storeCreditBalance !== _ALConfig?.customerStoreCreditBalance; if (storeCreditMismatch && _ALConfig.shop === 'olineloyalty27.myshopify.com') { const updateCustomerUrl = `/${_ALConfig?.proxy_path_prefix || 'apps/loyalty'}/cp/api/update-customer`; try { fetch(updateCustomerUrl, { method: 'POST' }) .then((response) => { if(response.ok) {} }) .catch(() => {}); } catch (err) {} } const dedicatedPageURL = new URL(window.location.href); const decodeUrl = (content) => { if (typeof content !== 'string') return content; try { const htmlDecoded = content?.replace(/\\\//g, '/'); return JSON.parse(`"${htmlDecoded}"`); } catch (error) { console.error('Error parsing content:', error); return content; } }; if (dedicatedPageURL?.searchParams?.get('appstle_referral') && _ALConfig?.widget_setting?.widgetType === 'DEDICATED_PAGE') { const customUrl = decodeUrl(_ALConfig?.widget_setting?.referralCustomRedirectUrl); if (customUrl) { const normalizedCustomPath = customUrl.startsWith('/') ? customUrl : `/${customUrl}`; if (window.location.pathname !== normalizedCustomPath) { const redirectUrl = new URL(window.location.href); redirectUrl.pathname = normalizedCustomPath; window.open(redirectUrl.toString(), '_self'); } } else if (dedicatedPageURL?.searchParams?.get('appstle_referral') && _ALConfig?.widget_setting?.widgetType === 'DEDICATED_PAGE' && !window.location.href.includes(_ALConfig?.proxy_path_prefix)) { window.open(`${window.location.origin}/${_ALConfig?.proxy_path_prefix}${window.location.search}`, '_self'); } } const dedicatedPageEventListener = (event) => { if (event?.data && typeof event?.data.indexOf === 'function' && event?.data?.indexOf('refresh_appstle_loyalty_page') !== -1) { initiateAppstleLoyaltyPage(); console.log('REFRESH PAGE'); } }; window.addEventListener('message', dedicatedPageEventListener, false); function initiateAppstleLoyaltyPage() { if (document.querySelector('#appstleLoyaltyPage')) { const appstleLoyaltyPageElement = document.getElementById('appstleLoyaltyPage'); while (appstleLoyaltyPageElement.firstChild) { appstleLoyaltyPageElement.firstChild.remove(); } document.title = ""; setTimeout(() => { let metaDescription = document.querySelector('meta[name="description"]'); if (metaDescription) { metaDescription.content = ""; } else { metaDescription = document.createElement('meta'); metaDescription.name = 'description'; metaDescription.content = ""; document.head.appendChild(metaDescription); } }, 500); if (appstleLoyaltyPageElement) { const loadDedicatedPageAsset = (createAsset, attempt, onSettle) => { const asset = createAsset(); let settled = false; const settle = () => { if (settled) return; settled = true; if (typeof onSettle === 'function') { onSettle(); } }; asset.onload = settle; asset.onerror = () => { asset.remove(); if (attempt < 4) { setTimeout(() => loadDedicatedPageAsset(createAsset, attempt + 1, onSettle), 1000 * Math.pow(2, attempt - 1)); } else { settle(); } }; } const appendDedicatedPageWidgetScript = () => { loadDedicatedPageAsset(() => { const s = document.createElement('script'); s.setAttribute('src', _ALConfig?.widgetJsPath); s.async = false; document.body.appendChild(s); return s; }, 1); } const executeDedicatedPageScript = () => { let widgetScriptAppended = false; const appendWidgetScriptOnce = () => { if (widgetScriptAppended) return; widgetScriptAppended = true; appendDedicatedPageWidgetScript(); }; try { const preload = document.createElement('link'); preload.rel = 'preload'; preload.as = 'script'; preload.href = _ALConfig?.widgetJsPath; document.head.appendChild(preload); } catch (e) {} loadDedicatedPageAsset(() => { const link = document.createElement('link'); link.type = 'text/css'; link.rel = 'stylesheet'; link.href = _ALConfig?.widgetCssPath; document.head.appendChild(link); return link; }, 1, appendWidgetScriptOnce); setTimeout(appendWidgetScriptOnce, 8000); } try { const versionUrl = `${location.origin}/${_ALConfig?.proxy_path_prefix || 'apps/loyalty'}/app-loyalty-version`; fetch(versionUrl).then(res => res.json()).then(data => { if (data) { const widgetJsUrl = new URL(_ALConfig.widgetJsPath); const widgetCssUrl = new URL(_ALConfig.widgetCssPath); widgetJsUrl.searchParams.set('v', data); widgetCssUrl.searchParams.set('v', data); _ALConfig.widgetJsPath = widgetJsUrl.toString(); _ALConfig.widgetCssPath = widgetCssUrl.toString(); } }).catch(() => {}).finally(() => { executeDedicatedPageScript(); }); } catch (err) { executeDedicatedPageScript(); } } } else { setTimeout(() => { initiateAppstleLoyaltyPage(); }, 2000); } } const dedicatedPageReferralUrl = new URL(window.location.href)?.searchParams.get('appstle_referral'); if (_ALConfig?.widget_setting?.showWidget === true) { initiateAppstleLoyaltyPage(); } (async function() { const isAvailableVisitShop = _ALConfig?.pointEarnRules?.length > 0 && _ALConfig?.pointEarnRules?.find((rule) => rule?.type === 'VISIT_SHOP' && rule?.status === 'ACTIVE'); if (_ALConfig?.customerId && isAvailableVisitShop) { if (!sessionStorage.getItem('syncVisitStore') && ((_ALConfig?.customerId && isAvailableVisitShop && isAvailableVisitShop?.id) || (_ALConfig?.referralEnabled && _ALConfig?.referralLoyalty?.referralType === 'VISIT_SHOP'))) { try { const response = await fetch(`/${_ALConfig?.proxy_path_prefix || 'apps/loyalty'}/cp/api/customer-visit-store`, { method: 'POST', headers: {'Content-Type': 'application/json'}, }); if (response?.ok) { sessionStorage.setItem('syncVisitStore', 'true'); } } catch (error) { console.error('Error:', error); } } } })(); const loyaltyCustomStyles = ``; document.querySelector('body').insertAdjacentHTML('beforeend', loyaltyCustomStyles);