Colored Contact Lenses | Free Shipping | Fresh Lens® (2025)

  • &nbsp

One or more of the items in your cart is a recurring or deferred purchase. By continuing, I agree to the cancellation policy and authorize you to charge my payment method at the prices, frequency and dates listed on this page until my order is fulfilled or I cancel, if permitted.

Skip to content

Save 10% On All Subscription Orders

Cart

Item added to your cart

View cart

Colored Contact Lenses | Free Shipping | Fresh Lens® (3)
Cart

Item added to your cart

View cart

Monthly Wear Contacts
Weekly Wear Contacts
Daily Wear Contacts
Color Contacts
Contact Lens Solution

With Fresh Lens you can explore the possibilities of the world. We provide a wide range of lenses including prescription, non-prescription and colored lenses. Our collection includes brands such as Acuvue, Biofinity and Proclear. For those who are looking for a bright color, check out our FreshLook ColorBlends. These lenses available in both prescription and non-prescription, combine three colors with patented three-in-one technology and provide a natural and vivid look. Tuck into our color spectrum and find the perfect pair that not only improves your vision but also improves your style.

  • Colored Contact Lenses | Free Shipping | Fresh Lens® (17)

    Air Optix Colors 6 Pk

    Sale

    Air Optix Colors 6 Pk

    6 Lenses per Box.Unlike other color contact lenses with ...

    5.0 / 5.0

    (19) 19 total reviews

    Regular price $123.99 USD

    $111.59 USD

    Regular price $143.99 USD Sale price $123.99 USD $111.59 USD

    Unit price / per

    Sale

  • Colored Contact Lenses | Free Shipping | Fresh Lens® (21)

    Air Optix Colors - 2 Pack

    Sale

    Air Optix Colors - 2 Pack

    2 Lenses per Box.Unlike other color contact lenses with ...

    4.86 / 5.0

    (29) 29 total reviews

    Regular price $48.99 USD

    Regular price $64.99 USD Sale price $48.99 USD $48.99 USD

    Unit price / per

    Sale

  • Colored Contact Lenses | Free Shipping | Fresh Lens® (25)

    1-Day Acuvue Define - 30pk

    1-Day Acuvue Define - 30pk

    These innovative new contact lenses enhance the natural b...

    4.72 / 5.0

    (36) 36 total reviews

    Regular price $58.99 USD

    Regular price $58.00 USD Sale price $58.99 USD $58.99 USD

    Unit price / per

  • Colored Contact Lenses | Free Shipping | Fresh Lens® (29)

    Dailies Colors 30pk

    Sale

    Dailies Colors 30pk

    DAILES® Colors contact lenses deliver color enhancement a...

    5.0 / 5.0

    (29) 29 total reviews

    Regular price $39.99 USD

    Regular price $59.00 USD Sale price $39.99 USD $39.99 USD

    Unit price / per

    Sale

  • Colored Contact Lenses | Free Shipping | Fresh Lens® (33)

    Dailies Colors 90pk

    Sale

    Dailies Colors 90pk

    DAILES® Colors contact lenses deliver color enhancement a...

    5.0 / 5.0

    (28) 28 total reviews

    Regular price $83.99 USD

    Regular price $105.99 USD Sale price $83.99 USD $83.99 USD

    Unit price / per

    Sale

Ready to level up your look? Discover our extensive selection of coloured contact lenses from top brands in the industry, all available at competitive prices

Frequently Asked Questions

Are coloured contacts safe?

Yes, when you buy from a trusted source and follow your eye doctor's instructions, coloured contacts are safe.

Sleeping in coloured contacts?

No way! It's not recommended for any type of contact lens.

How long do they last?

It depends on the type you choose. Daily disposables are super hygienic, while monthly lenses are a more budget-friendly option for regular wear.

Colored Contact Lenses | Free Shipping | Fresh Lens® (37)

Your happiness, backed by our Fresh Lens

We’re here to help.

Real people with real answers in real time, 24/7.

Colored Contact Lenses | Free Shipping | Fresh Lens® (39) +1 888-699-1963

Subscribe to our Newsletter

Fresh lens

  • About
  • Blog
  • Free Online Vision Exam
  • Rx Requirements
  • Reviews

Collections

  • Daily
  • Weekly
  • Monthly
  • Color
  • Solutions

Policies

  • Privacy Policy
  • Shipping
  • Refund and Return
  • Terms Of Service
  • Billing

    © 2025 Fresh Lens | CanadianContactLenses.com.

    • Colored Contact Lenses | Free Shipping | Fresh Lens® (40)
    • Colored Contact Lenses | Free Shipping | Fresh Lens® (41)
    • Colored Contact Lenses | Free Shipping | Fresh Lens® (42)
    • Colored Contact Lenses | Free Shipping | Fresh Lens® (43)
    • Colored Contact Lenses | Free Shipping | Fresh Lens® (44)
    • Colored Contact Lenses | Free Shipping | Fresh Lens® (45)
    • Colored Contact Lenses | Free Shipping | Fresh Lens® (46)
    • Colored Contact Lenses | Free Shipping | Fresh Lens® (47)

    {{^requires_selling_plan}}{{^showSubOptionBeforeOneTime}}

    {{oneTimePuchaseText}}

    {{{noSubscriptionLabelTextV2}}}

    {{#showOneTimeComparePrice}} {{{oneTimePuchaseComparePriceAmount}}}{{/showOneTimeComparePrice}}{{{oneTimePuchaseAmount}}}

    {{/showSubOptionBeforeOneTime}}{{/requires_selling_plan}} {{#sellingPlanVariants}}

    {{^prepaidFlag}}

    {{{name}}}

    {{{cancelAnytimeLabelTextV2}}}

    {{{formattedCompareAtPrice}}} {{{formattedPrice}}}

    {{#showPricePerDay}}

    {{{pricePerDay}}}

    {{/showPricePerDay}}

    {{{frequencyDescription}}}

    {{#showFormattedDiscountText}} {{{formattedDiscountText}}}{{/showFormattedDiscountText}}

    {{{frequencyDescription}}}

    {{/prepaidFlag}}{{#prepaidFlag}}

    {{{name}}}

    {{{cancelAnytimeLabelTextV2}}}

    {{{formattedCompareAtPrice}}} {{{totalPrice}}}

    {{{formattedPrepaidPerDeliveryPriceText}}} {{#showPricePerDay}}

    {{{pricePerDay}}}

    {{/showPricePerDay}}

    {{{frequencyDescription}}}

    {{#showFormattedDiscountText}} {{{formattedDiscountText}}}{{/showFormattedDiscountText}}

    {{{frequencyDescription}}}

    {{/prepaidFlag}}

    {{/sellingPlanVariants}}{{^requires_selling_plan}}{{#showSubOptionBeforeOneTime}}

    {{oneTimePuchaseText}}

    {{{noSubscriptionLabelTextV2}}}

    {{{oneTimePuchaseComparePriceAmount}}} {{{oneTimePuchaseAmount}}}

    {{/showSubOptionBeforeOneTime}}{{/requires_selling_plan}}

    {{#showStaticTooltip}}

    {{{toolTipDescription}}}

    {{/showStaticTooltip}}{{#showTooltip}}

    {{{tooltipTitle}}}

    {{{toolTipDescription}}}

    {{#showAppstleLink}}

    {{/showAppstleLink}}

    {{/showTooltip}}

    {% endraw %}`, "allWidgetTemplateHtml": "{\"WIDGET_TYPE_1\":\"{% raw %}{% endraw %}\",\"WIDGET_TYPE_6\":\"{% raw %}

    \\n

    \\n

    {{{purchaseOptionsText}}}

    \\n

    \\n{{^requires_selling_plan}}\\n{{^showSubOptionBeforeOneTime}}\\n

    \\n \\n

    \\n {{oneTimePuchaseText}}\\n

    {{{noSubscriptionLabelTextV2}}}

    \\n

    \\n

    \\n

    \\n{{#showOneTimeComparePrice}}\\n\\n {{{oneTimePuchaseComparePriceAmount}}}\\n\\n{{/showOneTimeComparePrice}}\\n\\n{{{oneTimePuchaseAmount}}}

    \\n

    \\n \\n \\n

    \\n{{/showSubOptionBeforeOneTime}}\\n{{/requires_selling_plan}}\\n {{#sellingPlanVariants}}\\n

    \\n \\n \\n{{^prepaidFlag}}\\n

    \\n {{{name}}}\\n

    {{{cancelAnytimeLabelTextV2}}}

    \\n

    \\n

    \\n

    \\n {{{formattedCompareAtPrice}}}\\n {{{formattedPrice}}}\\n\\n\\n

    \\n\\n{{#showPricePerDay}}

    {{{pricePerDay}}}

    {{/showPricePerDay}}\\n

    \\n{{{frequencyDescription}}} \\n

    \\n

    \\n \\n{{#showFormattedDiscountText}}\\n {{{formattedDiscountText}}}\\n{{/showFormattedDiscountText}}\\n

    {{{frequencyDescription}}}

    \\n{{/prepaidFlag}}\\n{{#prepaidFlag}}\\n

    \\n {{{name}}}\\n

    {{{cancelAnytimeLabelTextV2}}}

    \\n

    \\n

    \\n

    \\n {{{formattedCompareAtPrice}}}\\n {{{totalPrice}}}\\n\\n

    \\n{{{formattedPrepaidPerDeliveryPriceText}}}\\n {{#showPricePerDay}}

    {{{pricePerDay}}}

    {{/showPricePerDay}}\\n

    \\n

    \\n{{{frequencyDescription}}} \\n

    \\n

    \\n

    \\n\\n{{#showFormattedDiscountText}}\\n {{{formattedDiscountText}}}\\n{{/showFormattedDiscountText}}\\n

    {{{frequencyDescription}}}

    \\n\\n{{/prepaidFlag}}\\n \\n

    \\n {{/sellingPlanVariants}}\\n{{^requires_selling_plan}}\\n{{#showSubOptionBeforeOneTime}}\\n

    \\n \\n

    \\n {{oneTimePuchaseText}}\\n

    {{{noSubscriptionLabelTextV2}}}

    \\n

    \\n

    \\n{{{oneTimePuchaseComparePriceAmount}}}\\n {{{oneTimePuchaseAmount}}}\\n\\n

    \\n \\n \\n

    \\n{{/showSubOptionBeforeOneTime}}\\n{{/requires_selling_plan}}\\n

    \\n{{#showStaticTooltip}}\\n

    {{{toolTipDescription}}}

    \\n{{/showStaticTooltip}}\\n{{#showTooltip}}\\n\\n

    \\n

    \\n {{{tooltipTitle}}}\\n

    \\n

    \\n

    \\n {{{toolTipDescription}}}\\n

    \\n {{#showAppstleLink}}\\n

    \\n \\n POWERED BY APPSTLE \\n

    \\n {{/showAppstleLink}}\\n

    \\n{{/showTooltip}}\\n

    \\n

    \\n

    \\n{% endraw %}\",\"WIDGET_TYPE_7\":\"{% raw %}{% endraw %}\",\"WIDGET_TYPE_2\":\"{% raw %}{% endraw %}\",\"WIDGET_TYPE_3\":\"{% raw %}

    \\n

    \\n

    {{{purchaseOptionsText}}}

    \\n

    \\n{{#showSubOptionBeforeOneTime}}\\n {{#sellingPlanVariants}}\\n

    \\n \\n {{^prepaidFlag}}\\n

    \\n {{{formattedPrice}}}\\n{{#showSecondFormattedDiscountText}}{{^isFixedPrice}}({{{secondFormattedDiscountText}}}) {{/isFixedPrice}}{{/showSecondFormattedDiscountText}}\\n

    \\n \\n \\n {{/prepaidFlag}}\\n {{#prepaidFlag}}\\n \\n {{/prepaidFlag}}\\n \\n

    \\n {{/sellingPlanVariants}}\\n{{/showSubOptionBeforeOneTime}}\\n {{^requires_selling_plan}}\\n

    \\n \\n \\n \\n

    \\n {{/requires_selling_plan}}\\n{{^showSubOptionBeforeOneTime}}\\n {{#sellingPlanVariants}}\\n

    \\n \\n {{^prepaidFlag}}\\n

    \\n {{{formattedPrice}}}\\n{{#showSecondFormattedDiscountText}}{{^isFixedPrice}}({{{secondFormattedDiscountText}}}) {{/isFixedPrice}}{{/showSecondFormattedDiscountText}}\\n

    \\n \\n \\n {{/prepaidFlag}}\\n {{#prepaidFlag}}\\n \\n {{/prepaidFlag}}\\n \\n

    \\n {{/sellingPlanVariants}}\\n{{/showSubOptionBeforeOneTime}}\\n

    \\n{{#showStaticTooltip}}\\n

    {{{toolTipDescription}}}

    \\n{{/showStaticTooltip}}\\n{{#showTooltip}}\\n

    \\n

    \\n {{{tooltipTitle}}}\\n

    \\n

    \\n

    \\n {{{toolTipDescription}}}\\n

    \\n {{#showAppstleLink}}\\n

    \\n \\n POWERED BY APPSTLE\\n \\n

    \\n{{/showAppstleLink}}\\n

    \\n{{/showTooltip}}\\n

    \\n

    {% endraw %}\",\"WIDGET_TYPE_4\":\"{% raw %}

    \\n

    \\n

    {{{purchaseOptionsText}}}

    \\n

    \\n{{^requires_selling_plan}}\\n{{^showSubOptionBeforeOneTime}}\\n

    \\n \\n \\n

    \\n{{/showSubOptionBeforeOneTime}}\\n{{/requires_selling_plan}}\\n {{#sellingPlanVariants}}\\n

    \\n {{{formattedDiscountText}}}\\n \\n{{^prepaidFlag}}\\n

    \\n {{{formattedPrice}}}\\n/{{{sellingPlanFrequencyText}}}{{#isFrequencySubsequent}}{{/isFrequencySubsequent}}\\n

    \\n \\n{{/prepaidFlag}}\\n{{#prepaidFlag}}\\n\\n{{/prepaidFlag}}\\n

    \\n {{/sellingPlanVariants}}\\n{{^requires_selling_plan}}\\n{{#showSubOptionBeforeOneTime}}\\n

    \\n \\n \\n

    \\n{{/showSubOptionBeforeOneTime}}\\n{{/requires_selling_plan}}\\n

    \\n{{#showStaticTooltip}}\\n

    {{{toolTipDescription}}}

    \\n{{/showStaticTooltip}}\\n{{#showTooltip}}\\n

    \\n

    \\n {{{tooltipTitle}}}\\n

    \\n

    \\n

    \\n {{{toolTipDescription}}}\\n

    \\n{{#showAppstleLink}}\\n

    \\n \\n POWERED BY APPSTLE\\n \\n

    \\n{{/showAppstleLink}}\\n

    \\n{{/showTooltip}}\\n

    \\n

    {% endraw %}\",\"WIDGET_TYPE_5\":\"{% raw %}

    \\n

    \\n

    {{{purchaseOptionsText}}}

    \\n

    \\n{{^showSubOptionBeforeOneTime}}\\n{{^requires_selling_plan}}\\n

    \\n \\n \\n \\n

    \\n{{/requires_selling_plan}}\\n{{/showSubOptionBeforeOneTime}}\\n {{#sellingPlanVariants}}\\n

    \\n \\n \\n \\n

    \\n {{/sellingPlanVariants}}\\n{{#showSubOptionBeforeOneTime}}\\n{{^requires_selling_plan}}\\n

    \\n \\n \\n \\n

    \\n{{/requires_selling_plan}}\\n{{/showSubOptionBeforeOneTime}}\\n

    \\n{{#showStaticTooltip}}\\n

    {{{toolTipDescription}}}

    \\n{{/showStaticTooltip}}\\n{{#showTooltip}}\\n

    \\n

    \\n {{{tooltipTitle}}}\\n

    \\n

    \\n

    \\n {{{toolTipDescription}}}\\n

    \\n {{#showAppstleLink}}\\n

    \\n \\n POWERED BY APPSTLE\\n \\n

    \\n {{/showAppstleLink}}\\n

    \\n{{/showTooltip}}\\n

    \\n

    {% endraw %}\"}", "bundle": {}, "labels": `{\"appstle.subscription.wg.noSubscriptionLabelTextV2\":\"No Subscription\",\"appstle.subscription.wg.cancelAnytimeLabelTextV2\":\"\",\"appstle.subscription.wg.addToShipmentErrorTextV2\":\"Error\",\"appstle.subscription.wg.weeksFrequencyTextV2\":\"Weeks\",\"appstle.subscription.wg.weeklyLabelTextV2\":\"Weekly\",\"appstle.subscription.wg.displayAddToExistingSubscriptionButtonForNotLoggedInV2\":\"false\",\"appstle.subscription.wg.addToShipmentProcessingV2\":\"Processing...\",\"appstle.subscription.wg.deliveryEveryFrequencyTextV2\":\"Delivery Every\",\"appstle.subscription.wg.subscribeAndSaveInitalV2\":\"Subscribe & save\",\"appstle.subscription.wg.allowRefreshOnCartPageV2\":\"false\",\"appstle.subscription.wg.prepaidLabelTextV2\":\"Prepaid\",\"appstle.subscription.wg.daysFrequencyTextV2\":\"Days\",\"appstle.subscription.wg.monthlyLabelTextV2\":\"Save 10% on every order\",\"appstle.subscription.wg.subscribeAndSaveSuccessV2\":\"Subscribe success\",\"appstle.subscription.wg.addToShipmentSuccessTextV2\":\"Success\",\"appstle.subscription.wg.monthFrequencyTextV2\":\"Month\",\"appstle.subscription.wg.addToShipmentButtonTextV2\":\"Add to Shipment\",\"appstle.subscription.wg.displayAddToExistingSubscriptionButtonToSubscribersOnlyV2\":\"false\",\"appstle.subscription.wg.yearsFrequencyTextV2\":\"Years\",\"appstle.subscription.wg.onetimeDescriptionTextV2\":\"\",\"appstle.subscription.wg.addToShipmentTooltipTextV2\":\"Please avoid double delivery charges! Login to add this product to an upcoming delivery.\",\"appstle.subscription.wg.weekFrequencyTextV2\":\"Week\",\"appstle.subscription.wg.oneTimePurchaseTextV2\":\"One Time Purchase\",\"appstle.subscription.wg.loyaltyPerkDescriptionTextV2\":\"{{#isDiscountTypeFreeProduct}}

    Colored Contact Lenses | Free Shipping | Fresh Lens® (48)<\/img><\/div>

    After {{{billingCycleBlock}}} orders, get a FREE {{freeProductName}} <\/span><\/div>

    {{\/isDiscountTypeFreeProduct}}{{#isDiscountTypePercentage}}After {{{billingCycleBlock}}}<\/span> order<\/span>, get {{{discount}}}% OFF your entire order<\/span><\/span>.{{\/isDiscountTypePercentage}}{{#isDiscountTypeShipping}}After {{{billingCycleBlock}}}<\/span> order<\/span>, get shipping at {{{formatDiscountedPrice}}}<\/span><\/span>.{{\/isDiscountTypeShipping}}{{#isDiscountTypeFixed}}After {{{billingCycleBlock}}}<\/span> order<\/span>, get {{{formatDiscountedPrice}}} OFF your entire order<\/span><\/span>.{{\/isDiscountTypeFixed}}\",\"appstle.subscription.wg.unsubscribeFrequencyTextV2\":\"unsubscribe\",\"appstle.subscription.wg.oneTimeFrequencyTextV2\":\"\",\"appstle.subscription.wg.dayFrequencyTextV2\":\"day\",\"appstle.subscription.wg.allowFulfilmentCountViaPropertiesV2\":\"false\",\"appstle.subscription.wg.monthsFrequencyTextV2\":\"Months\",\"appstle.subscription.wg.manageSubscriptionButtonTextV2\":\"Manage Subscription\",\"appstle.subscription.wg.offFrequencyTextV2\":\"Off\",\"appstle.subscription.wg.yearFrequencyTextV2\":\"Year\",\"appstle.subscription.wg.prepayLabelTextV2\":\"Prepay\",\"appstle.subscription.wg.sellingPlanTitleTextNonPrepaid\":\"{{sellingPlanName}}\",\"appstle.subscription.wg.selectDeliverOptionV2\":\"select deliver option\",\"appstle.subscription.wg.yearlyLabelTextV2\":\"Yearly\"}`, "css": { "appstle_subscription_widget": { "margin-top": "" , "margin-bottom": "", }, "appstle_subscription_wrapper": { "border-width": "", "border-color": "", }, "appstle_circle": { "border-color": "", }, "appstle_dot": { "background-color": "", }, "appstle_select": { "padding-top": "", "padding-bottom": "", "padding-left": "", "padding-right": "", "border-width": "", "border-style": "", "border-color": "", "border-radius": "", }, "tooltip_subscription_svg": { "fill": "", }, "appstle_tooltip": { "color": "", "background-color": "", }, "appstle_tooltip_border_top_color": { "border-top-color": "", }, "appstle_subscription_final_price": { "color": "", }, "appstle_widget_text_color": { "color": "", }, "appstle_selected_background": { "background": "transparent", }, "elementCSS": "[\".appstle_tooltip_content {background-color: #ffffff !important;} #appstle_subscription_widget0 [data-appstle-icon]:after {border-top-color: #ffffff !important;}\"]", "customCSS": ".widgetSellingPlanWrapper input:checked+label span {\ncolor: #A1D461!important;\n}", "customerPortalCss": "", "externalStyleTag": "", "themeCss": "", } }; window.AppstleSubscription = window.AppstleSubscription || JSON.parse(JSON.stringify(RS)); sessionStorage['appstleSubscriptionConfig'] = JSON.stringify(RS.Config); var _RSConfig = _RSConfig || {}; _RSConfig.shop = 'fresh-lens.myshopify.com'; _RSConfig.shopMoneyFormat = '<span class='money conversion-bear-money'>${{amount}} </span>'; _RSConfig.shopMoneyFormatWithCurrencyFormat = '<span class='money conversion-bear-money'>${{amount}} USD</span>'; }

    `; document.querySelector('body').insertAdjacentHTML('beforeend', snackBarHtml); window.addEventListener('message', toasterEventListener, false); function toasterEventListener(event) { if (event?.data && typeof event?.data.indexOf === 'function' && event?.data?.indexOf('appstle_message_for_notification') !== -1) { var message = event?.data?.split('|')[1]; showAppstleLoyaltyToaster(message); } } let snackBarIndex = 0; function showAppstleLoyaltyToaster(msg) { var snackBar = document.getElementById('snackbar'); snackBar.classList.add('show'); snackBar.insertAdjacentHTML('beforeend', `

    ${msg}

    `); const el = snackBarIndex; setTimeout(function() { if (document.getElementById(`elem${el}`)) document.getElementById(`elem${el}`).remove(); }, 5000); snackBarIndex++; } const closeSnackBar = (el) => document.getElementById(el).remove(); document.addEventListener('DOMContentLoaded', () => { }); const parseHtmlStringContent = (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; } }; const loyaltyWidgetStyles = ``; document.querySelector('body').insertAdjacentHTML('beforeend', loyaltyWidgetStyles); const mainHTMLString = ` `; document.querySelector('body').insertAdjacentHTML('beforeend', mainHTMLString); window.addEventListener('message', widgetEventListener, false); function widgetEventListener(event) { if (event?.data && typeof event?.data.indexOf === 'function' && event?.data?.indexOf('appstle_message_for_showWidget') !== -1) { } else if (event?.data && typeof event?.data.indexOf === 'function' && event?.data?.indexOf('appstle_widget_showHide') !== -1) { document.querySelector('#appstle-loyalty-button')?.classList?.remove('appstle-loyalty-hidden'); toggleWidget(); } else if (event?.data && typeof event?.data.indexOf === 'function' && event?.data?.indexOf('refresh_appstle_loyalty_widget') !== -1 && _ALConfig?.widget_setting?.widgetType === 'LAUNCHER') { loadAppstleLoyaltyWidget() console.log("REFRESH WIDGET"); } } function removeAppstleLoyaltyWidget() { document.querySelector('#appstle-loyalty-button')?.classList?.add('appstle-loyalty-hidden'); document.querySelector('#appstle_loyalty_iframe')?.classList?.add('appstle-loyalty-hidden'); } (function checkForWidgetRestrictions() { let isShowWidget = true; if(_ALConfig?.customerLoyalty?.customerStatus === 'EXCLUDED') { isShowWidget = false; } if (!_ALConfig?.customerId) { isShowWidget = !(_ALConfig?.widget_setting?.restrictedCustomersTag || _ALConfig?.widget_setting?.allowedCustomersTag) } if (_ALConfig?.widget_setting?.allowedCustomersTag?.length && isShowWidget) { let allowedTags = _ALConfig?.widget_setting?.allowedCustomersTag.split(','); if (allowedTags?.length > 0 && !_ALConfig?.customerTags?.some((tag) => allowedTags?.some((allowedTag) => allowedTag?.trim()?.toLowerCase() === tag?.trim()?.toLowerCase()))) { isShowWidget = false; } } if (_ALConfig?.widget_setting?.restrictedCustomersTag?.length && isShowWidget) { let restrictedTags = _ALConfig?.widget_setting?.restrictedCustomersTag?.split(','); if (restrictedTags?.length > 0 && _ALConfig?.customerTags?.some((tag) => restrictedTags?.some((restrictedTag) => restrictedTag?.trim()?.toLowerCase() === tag?.trim()?.toLowerCase()))) { isShowWidget = false; } } if (_ALConfig?.widget_setting?.blockWidgetOnPages?.length && isShowWidget) { let restrictedPages = _ALConfig?.widget_setting?.blockWidgetOnPages?.split(','); const currentPage = window?.location?.pathname; if (restrictedPages?.length > 0) { if (restrictedPages?.includes('/homepage') && currentPage === '/') { isShowWidget = false; } else if (restrictedPages?.some((page) => currentPage?.includes(page))) { isShowWidget = false; } } } if (_ALConfig?.widget_setting?.allowWidgetOnSpecificPages?.length && isShowWidget) { let allowedPages = _ALConfig?.widget_setting?.allowWidgetOnSpecificPages?.split(','); const currentPage = window?.location?.pathname; if (allowedPages?.length > 0) { if (allowedPages?.includes('/homepage') && currentPage === '/') { isShowWidget = true; } else if (allowedPages?.some((page) => currentPage?.includes(page))) { isShowWidget = true; } else { isShowWidget = false } } } if (!_ALConfig?.customerId && _ALConfig?.widget_setting?.showToLoggedInCustomerOnly) { isShowWidget = false; } if (isShowWidget) { showAppstleLoyaltyWidget(); } else { removeAppstleLoyaltyWidget(); } })() function enableWidget() { document.querySelector('#appstle_loyalty_iframe')?.classList?.add('open'); document.querySelector('#appstle_loyalty_iframe')?.classList?.remove('appstle-loyalty-hidden'); setTimeout(function() { document.querySelector('#appstle_loyalty_iframe')?.classList?.toggle('show-close-icon'); }, 900); } function showAppstleLoyaltyWidget() { document.querySelector('#appstle-loyalty-button')?.classList?.remove('appstle-loyalty-hidden'); document.querySelector('#appstle_loyalty_iframe')?.classList?.remove('appstle-loyalty-hidden'); } document.querySelector('.appstle-loyalty-button').addEventListener('click', toggleWidget); if (_ALConfig?.widget_setting?.widgetPosition === 'LEFT') { document.getElementById('appstle_loyalty_iframe')?.classList?.add('appstle-loyalty-left'); document.querySelector('.appstle-loyalty-button')?.classList?.add('appstle-loyalty-left'); document.getElementById('appstle_loyalty_iframe')?.classList?.add('appstle-loyalty-left'); document.getElementById('snackbar')?.classList?.add('left_snackbar'); } else { document.getElementById('appstle_loyalty_iframe')?.classList?.add('appstle-loyalty-right'); document.querySelector('.appstle-loyalty-button')?.classList?.add('appstle-loyalty-right'); document.getElementById('snackbar')?.classList?.add('right_snackbar'); } const loyaltyButtonTitle = document.getElementById('loyalty-widget-title'); if(_ALConfig?.widget_setting?.widgetTitle){ loyaltyButtonTitle.innerHTML = parseHtmlStringContent(_ALConfig?.widget_setting?.widgetTitle); } const alIframeSrc = '' + ' ' + '

    ' + '

    ' + '

    ' + '' + 'body' + '>' + ''; 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(); }); }; if (_ALConfig?.customerLoyalty && _ALConfig?.customerLoyalty?.availablePoints) { document.querySelector('#appstle-loyalty-button')?.classList?.add('appstle_show_points'); document.querySelector('.loyalty_widget_available_points').innerHTML = _ALConfig?.customerLoyalty?.availablePoints?.toLocaleString(); } if (_ALConfig?.widget_setting?.showTierName && _ALConfig?.customerLoyalty && _ALConfig?.customerLoyalty?.currentVipTier) { document.querySelector('.loyalty_widget_available_points').innerHTML = _ALConfig?.customerLoyalty?.currentVipTier?.toLocaleString(); } 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 (widgetReferralUrl?.searchParams.get('appstle_referral') && _ALConfig?.widget_setting?.widgetType === 'LAUNCHER') { let redirectURL = _ALConfig?.widget_setting?.referralRedirectUrl + window.location.search; if (redirectURL && !window.location.pathname.includes(_ALConfig.widget_setting.referralRedirectUrl)) { 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 dedicatedPageURL = new URL(window.location.href); if (dedicatedPageURL?.searchParams?.get('appstle_referral') && _ALConfig?.widget_setting?.widgetType === 'DEDICATED_PAGE' && !window.location.href.includes(_ALConfig?.proxy_path_prefix)) { window.open(`/${_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(); } var s = document.createElement('script'); s.setAttribute('src', "https://loyalty-admin.appstle.com/app/loyalty-widget.bundle.js?v=1742394438536"); s.setAttribute('defer', 'defer'); document.body.appendChild(s); var head = document.head; var link = document.createElement('link'); link.type = 'text/css'; link.rel = 'stylesheet'; link.href = "https://loyalty-admin.appstle.com/content/loyalty-widget.css?v=1742394438536"; head.appendChild(link); } else { setTimeout(() => { initiateAppstleLoyaltyPage(); }, 2000); } } const dedicatedPageReferralUrl = new URL(window.location.href)?.searchParams.get('appstle_referral'); const checkDedicatedPageForRestrictions = () => { const { widget_setting, customerTags, customerLoyalty, customerId } = _ALConfig || {}; const { allowedCustomersTag, restrictedCustomersTag } = widget_setting || {}; const { customerStatus } = customerLoyalty || {}; if (customerStatus === 'EXCLUDED') { return false; } if (!dedicatedPageReferralUrl && !customerId) { return !(allowedCustomersTag || restrictedCustomersTag); } if (allowedCustomersTag?.length) { const allowedTags = allowedCustomersTag.split(','); if (!allowedTags.some(tag => customerTags?.some((customerTag) => customerTag?.trim()?.toLowerCase() === tag?.trim()?.toLowerCase()))) { return false; } } if (restrictedCustomersTag?.length) { const restrictedTags = restrictedCustomersTag.split(','); if (restrictedTags.some(tag => customerTags?.some((customerTag) => customerTag?.trim()?.toLowerCase() === tag?.trim()?.toLowerCase()))) { return false; } } return true; }; if (_ALConfig?.widget_setting?.showWidget === true && _ALConfig?.['hasDedicatedPageAccess'] === true && checkDedicatedPageForRestrictions()) { 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);

    Colored Contact Lenses | Free Shipping | Fresh Lens® (2025)
    Top Articles
    Latest Posts
    Recommended Articles
    Article information

    Author: Dan Stracke

    Last Updated:

    Views: 5444

    Rating: 4.2 / 5 (43 voted)

    Reviews: 82% of readers found this page helpful

    Author information

    Name: Dan Stracke

    Birthday: 1992-08-25

    Address: 2253 Brown Springs, East Alla, OH 38634-0309

    Phone: +398735162064

    Job: Investor Government Associate

    Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

    Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.