Some mornings start off slow and easy, while others propel you into the day at breakneck speed.
Your alarm clock goes off later than planned. Your inbox is filling up with emails. Your coffee is brewing, but the day has already begun before you’re fully awake. In these moments, finding beauty can feel like another chore on your to-do list—something for leisurely days.
Achieving a polished look shouldn’t require an extensive routine involving multiple brushes and complicated techniques.
It should be efficient.
User-friendly.
Dependable.
It must align with your natural rhythm, your schedule, and your everyday life.
At 100% PURE, we embody this philosophy in our Real You Beauty Collection—a range of high-performance products crafted to highlight your inherent beauty instead of masking it. These formulas blend effortlessly, adapt to your skin’s movements, and provide a radiant glow with minimal effort.
The outcome? A professional, vibrant complexion in the same time it takes your coffee to brew.
Two minutes.
One hundred and twenty seconds.
A refreshed, glowing appearance that still feels authentically you.
Perhaps the most significant beauty breakthrough is not about doing more, but focusing on what truly matters.
Understanding the Importance of High-Performance Beauty During Your Morning Rush
The idea of “quick makeup” is often misconstrued.
Simply speeding through the process won’t yield polished results. In reality, hurriedly using products that need extensive blending and fixing can often require more time spent correcting than applying.
Genuine efficiency arises from the formulation.
When textures are designed to replicate the skin’s natural lipid structure, they apply more evenly, adhere intuitively, and settle into a finish that appears natural rather than layered on. This reduces the reliance on brushes, excessive blending, and touch-ups as the day progresses.
The Real You Beauty Collection is built around this concept.
Every formula aims to:
- Slide effortlessly across the skin
- Self-adjust to create a smooth finish
- Maintain natural movement and expression
- Provide both immediate and long-lasting benefits
This “one-and-done” strategy transforms makeup from a complex task into a swift ritual of enhancement.
Instead of hiding your true self, it makes you look as though you had a good night’s sleep, stayed hydrated, and woke up glowing—even when your day starts with chaos.
Step 1: The Serum Sweep (0–60 Seconds)
Achieve Instant Skin Perfection with Fruit Pigmented® 2nd Skin Foundation
The initial minute sets the foundation for your entire look.
When your complexion appears even, hydrated, and softly luminous, the remaining steps become almost effortless.
This is precisely why the Fruit Pigmented® 2nd Skin Foundation is the cornerstone of your two-minute transformation.
A Foundation That Functions Like Skincare
Conventional foundations often depend on thick waxes and heavy pigments that rest on the skin’s surface, necessitating sponges and brushes for even application.
The 2nd Skin Foundation is fundamentally different.
With its serum-like texture, it contains hydrating ingredients suspended in an ultra-light emulsion. This allows the product to glide smoothly with your fingertips and blend seamlessly into the skin.
The result is a satin finish that:
- Reduces redness
- Softens uneven skin tone
- Maintains natural texture
- Reflects light like healthy skin
It doesn’t cover the complexion.
It enhances it.
The Art of Finger Application
Many believe that achieving a professional-looking foundation necessitates tools. fingers can be incredibly effective when using fluid, skin-compatible formulas.
The warmth of your hands softens emollients, reducing viscosity, which allows the foundation to spread evenly. Gentle pressure helps integrate the product into the skin’s surface lipids.
This translates to:
- Speedier blending
- Less product waste
- More natural-looking results
The 60-Second Application Technique
- Apply a small amount to your fingertips.
- Dot it onto the center of your face—forehead, cheeks, nose, and chin.
- Sweep outward in thin layers.
- Gently press around the nose and under the eyes.
In moments, your complexion appears calmer, brighter, and more uniform.
Your face still looks like skin.
Just better rested.
The Ideal “No-Makeup” Satin Finish
Completely matte finishes absorb too much light, potentially flattening facial contours. Highly dewy formulas can appear overly shiny in professional settings.
Satin provides the perfect compromise.
It mimics the balanced reflectiveness of well-hydrated skin, resulting in:
- Soft luminosity
- Natural dimension
- Comfort that lasts
This makes it particularly suitable for busy mornings, where one product must deliver both polish and authenticity.
Step 2: The Wake-Up Call (60–90 Seconds)
Enhancing Lashes and Defining Light
Once your complexion is perfected, the next objective is to enhance your features strategically.
In just thirty seconds, two targeted products can create the illusion of alertness and structure:
Together, they define your eyes and sculpt your face with light.
Maracuja Mascara: Instant Eye Definition
The eyes often show signs of fatigue first.
Lack of sleep, dehydration, and extended screen time can make lashes less noticeable and eyes appear less awake.
A single coat of Maracuja Mascara restores visual contrast.
The Significance of Maracuja Oil
Maracuja (passion fruit) oil is rich in essential fatty acids, providing flexibility and nourishment to your lashes. Unlike brittle mascaras that harden and flake, this formula keeps lashes soft and well-defined.
The result is:
- Feathery volume
- Natural length
- Comfortable wear
With one quick application, your eyes look more awake and expressive.
Gemmed Luminizer: Sculpting with Light
While mascara frames the eyes, luminizer defines the structure of your face.
The Fruit Pigmented® Gemmed Luminizer utilizes avocado and cocoa butters to create a creamy texture that melts into the skin. Instead of sitting on top as obvious shimmer, it integrates into your complexion.
The Science Behind Light Reflection
Strategically placed luminosity enhances perceived elevation by highlighting high points of the face.
A quick tap onto:
- The tops of your cheekbones
- The bridge of your nose
- The brow bone
Creates instant dimension.
This isn’t sparkle.
This is architectural light.
Your face looks more lifted, rested, and naturally radiant.
The 30-Second Application Technique
- Apply one coat of Maracuja Mascara.
- Tap the Gemmed Luminizer onto your cheekbones using your fingertips.
- Blend gently.
In half a minute, your face looks brighter and more alert.
Step 3: The Juicy Finish (90–120 Seconds)
The Final Touch That Completes Your Look
The last thirty seconds focus on your most expressive feature: your lips.
A hydrated smile exudes vitality, confidence, and warmth.
This is where the Fruit Pigmented® Lip Gloss wraps up the routine.
More Than Just Shine
The gloss serves as both color and treatment.
Its semi-sheer pigments enhance your natural lip tone, while Vitamin E shields the delicate lip barrier from dehydration and oxidative stress.
The outcome is:
- Cushiony comfort
- Non-sticky shine
- Long-lasting softness
Why Moisturized Lips Look Healthier
Hydrated lips reflect light evenly, giving them a fuller and smoother appearance. Fine lines caused by dehydration become less noticeable, allowing your natural lip color to shine through.
This creates a “juicy” effect that feels refreshing and effortless.
The 30-Second Finishing Touch
- Swipe the gloss directly onto your lips.
- Press your lips together.
- Smile.
The change is immediate.
Your face appears complete, balanced, and polished.
And your lips remain protected throughout the day.
The Science of the 2-Minute Transformation
How Less Can Achieve More
A streamlined routine thrives when each product fulfills multiple roles at once.
Each formula in the Real You Beauty Collection is crafted to provide:
- Cosmetic enhancement
- Barrier support
- Comfortable wear
- Seamless blending
This multifunctionality is what makes two minutes sufficient.
Foundation
- Evens skin tone
- Hydrates
- Reflects light naturally
Mascara
- Defines lashes
- Conditions with Maracuja oil
Luminizer
- Adds dimension
- Nourishes with botanical butters
Lip Gloss
- Enhances color
- Protects with Vitamin E
Together, these products create a cohesive system rather than isolated steps.
The result is cumulative efficiency.
How to Maintain Your 2-Minute Look Until Noon
Longevity Through Intelligent Formulation
Long-lasting makeup isn’t solely determined by powders or setting sprays.
It starts with balanced textures that move harmoniously with the skin rather than resisting it.
Since these formulas blend with your skin’s natural oils, they are less prone to cracking, separating, or migrating during the day.
To prolong wear:
- Apply thin layers
- Allow each product to settle briefly
- Blot excess oil if necessary
- Reapply lip gloss as desired
Your complexion remains natural because these products are designed to age gracefully instead of visibly degrading.
The Significance of Beauty Routines for Busy Mornings
A quick routine offers more than just time savings.
It can positively influence your emotional state throughout the day.
Rather than starting your day in a rush and feeling compromised, you begin with a small act of efficiency and self-respect.
Two minutes can yield:
- Increased confidence
- Less decision fatigue
- A sense of readiness
- A more polished first impression
And because the process is straightforward, it becomes sustainable.
Consistency, rather than complexity, transforms a routine into a habit.
Transforming Your Look in Just Two Minutes
Achieve the Best Version of Yourself Without a Lengthy Routine
Beauty is often portrayed as something that demands time, effort, and numerous steps.
The most effective routines are seldom the most intricate.
They are those that work intuitively, complement the skin, and seamlessly fit into daily life.
The Real You Beauty Collection demonstrates that a refreshed, radiant look can be achieved in just two minutes:
No heavy blending.
No excessive correction.
No wasted time.
Just smart, efficient beauty designed to reveal the healthiest version of you.
With the 100% PURE Happy Promise, you can confidently experience this routine.
If two minutes don’t enhance your mornings, 100% PURE will make it right.
Frequently Asked Questions
Can I really apply serum foundation with my fingers?
Absolutely. The Fruit Pigmented® 2nd Skin Foundation is specifically formulated to blend beautifully with fingertip application. The warmth from your hands softens the formula, facilitating even distribution and a natural satin finish.
How do I keep my 2-minute look from fading by noon?
Utilize thin, even layers and allow each product to meld with your skin. Since these formulas are designed to move with your complexion instead of sitting on top, they maintain a fresh appearance for hours. Usually, reapplying lip gloss is the only touch-up required.
What are the key areas to highlight when I’m short on time?
Concentrate on the tops of your cheekbones first. If time permits, add a slight amount to the bridge of your nose and Cupid’s bow. These areas naturally catch light and create an immediate impression of lift and radiance.
(function () { if (window.__avadaPixelBlockerActive) return; let meta = {“shopId”:”bO7GwaV1iqrgFqTDunSG”,”settings”:{“theme”:”basic2″,”message”:”We and our partners, including Shopify, use cookies and other technologies to personalize your experience, show you ads, and perform analytics, and we will not use cookies or other technologies for these purposes unless you accept them.”,”showPrivacyPolicy”:true,”googlePrivacyLink”:”https://business.safety.google/privacy/”,”privacyLink”:”/policies/privacy-policy”,”privacyLinkText”:”Privacy Policy”,”googlePrivacyPolicy”:false,”googlePrivacyText”:”Google policy”,”agreeButtonText”:”Accept”,”denyButtonText”:”Reject”,”showOnCountry”:”all”,”displayType”:”full_bar”,”desktopFloatCardPosition”:”bottom_left”,”desktopPosition”:”bottom”,”mobilePositions”:”bottom”,”themeName”:”Light theme”,”textFont”:”Noto+Sans”,”serveFontViaCDN”:false,”showIcon”:true,”customCss”:””,”removeBranding”:true,”specificRegions”:{“gdpr”:false,”pipeda”:false,”ccpa”:false,”lgpd”:false,”appi”:false},”specificCountries”:[“DZA”,”AGO”,”BEN”,”BWA”,”IOT”,”BFA”,”BDI”,”CPV”,”CMR”,”CAF”,”TCD”,”COM”,”COG”,”COD”,”CIV”,”DJI”,”EGY”,”GNQ”,”ERI”,”SWZ”,”ETH”,”ATF”,”GAB”,”GMB”,”GHA”,”GIN”,”GNB”,”KEN”,”LSO”,”LBR”,”LBY”,”MDG”,”MWI”,”MLI”,”MRT”,”MUS”,”MYT”,”MAR”,”MOZ”,”NAM”,”NER”,”NGA”,”REU”,”RWA”,”STP”,”SEN”,”SYC”,”SLE”,”SOM”,”ZAF”,”SSD”,”SHN”,”SDN”,”TZA”,”TGO”,”TAA”,”TUN”,”UGA”,”ESH”,”ZMB”,”ZWE”,”AFG”,”ARM”,”AZE”,”BHR”,”BGD”,”BTN”,”BRN”,”KHM”,”CHN”,”GEO”,”HKG”,”IND”,”IDN”,”IRQ”,”ISR”,”JPN”,”JOR”,”KAZ”,”KWT”,”KGZ”,”LAO”,”LBN”,”MAC”,”MYS”,”MDV”,”MNG”,”MMR”,”NPL”,”OMN”,”PAK”,”PSE”,”PHL”,”QAT”,”SAU”,”SGP”,”KOR”,”LKA”,”TWN”,”TJK”,”THA”,”TLS”,”TUR”,”TKM”,”ARE”,”UZB”,”VNM”,”YEM”,”ALA”,”ALB”,”AND”,”AUT”,”BLR”,”BEL”,”BIH”,”BGR”,”HRV”,”CYP”,”CZE”,”DNK”,”EST”,”FRO”,”FIN”,”FRA”,”DEU”,”GIB”,”GRC”,”GGY”,”HUN”,”ISL”,”IRL”,”IMN”,”ITA”,”JEY”,”UNK”,”LVA”,”LIE”,”LTU”,”LUX”,”MLT”,”MDA”,”MCO”,”MNE”,”NLD”,”MKD”,”NOR”,”POL”,”PRT”,”ROU”,”RUS”,”SMR”,”SRB”,”SVK”,”SVN”,”ESP”,”SJM”,”SWE”,”CHE”,”UKR”,”GBR”,”VAT”,”AIA”,”ATG”,”ABW”,”BHS”,”BRB”,”BLZ”,”BMU”,”BES”,”VGB”,”CAN”,”CYM”,”CRI”,”CUW”,”DMA”,”DOM”,”SLV”,”GRL”,”GRD”,”GLP”,”GTM”,”HTI”,”HND”,”JAM”,”MTQ”,”MEX”,”MSR”,”NIC”,”PAN”,”PRI”,”SXM”,”KNA”,”LCA”,”SPM”,”VCT”,”TTO”,”TCA”,”Alabama”,”Alaska”,”Arizona”,”Arkansas”,”California”,”Colorado”,”Connecticut”,”Delaware”,”Florida”,”Georgia”,”Hawaii”,”Idaho”,”Illinois”,”Indiana”,”Iowa”,”Kansas”,”Kentucky”,”Louisiana”,”Maine”,”Maryland”,”Massachusetts”,”Michigan”,”Minnesota”,”Mississippi”,”Missouri”,”Montana”,”Nebraska”,”Nevada”,”New Hampshire”,”New Jersey”,”New Mexico”,”New York”,”North Carolina”,”North Dakota”,”Ohio”,”Oklahoma”,”Oregon”,”Pennsylvania”,”Rhode Island”,”South Carolina”,”South Dakota”,”Tennessee”,”Texas”,”Utah”,”Vermont”,”Virginia”,”Washington”,”Washington DC”,”West Virginia”,”Wisconsin”,”Wyoming”,”VIR”,”AUS”,”CXR”,”CCK”,”COK”,”FJI”,”PYF”,”GUM”,”HMD”,”KIR”,”MHL”,”FSM”,”NRU”,”NCL”,”NZL”,”NIU”,”NFK”,”MNP”,”PLW”,”PNG”,”PCN”,”WSM”,”SLB”,”ARG”,”BOL”,”BRA”,”CHL”,”COL”,”ECU”,”FLK”,”GUF”,”GUY”,”PRY”,”PER”,”SGS”,”SUR”,”URY”,”VEN”],”specificUsCountries”:null,”specificEuCountries”:[],”regionLanguageMap”:null,”customPrivacyLink”:””,”icon”:”cookie_bar_icon_1″,”customIcon”:false,”customIconUrl”:””,”textAlignment”:”left”,”fontSize”:13,”displayAfter”:”0″,”optionPolicyLink”:”select”,”bannerType”:”accept-or-decline”,”showReOpenButton”:false,”reOpenPosition”:”bottom-right”,”displayButtonAs”:”icon”,”iconReOpen”:”image-icon-1″,”reOpenImpliedConsent”:[“gdpr”,”nonGdpr”],”isRevertPreferences”:true,”textColor”:”#5F5A56″,”denyTextColor”:”#5F5A56″,”privacyLinkColor”:”#5F5A56″,”bgColor”:”#F6EFEB”,”messageColor”:”#2C332F”,”agreeBtnTextColor”:”#F6EFEB”,”agreeBtnBgColor”:”#A38064″,”agreeBtnBorder”:”#2C332F”,”iconColor”:”#A38064″,”textAvada”:”rgba(29, 29, 29, 0.8)”,”textBtnColor”:”#A38064″,”checkoutBannerTitle”:”We keep your privacy”,”notificationAfterConsent”:”Privacy updated”,”visibleAfterConsent”:true,”collapsedBannerContent”:true,”showCloseIcon”:true,”dataSalesCheckboxTitle”:”Do not Sell or Share My Personal Information”,”showAtConsentBanner”:true,”showAtPrefPopup”:true,”isUseVipTheme”:false,”isUseVipLogo”:false,”geoCompliance”:{“enabled”:false,”countryOverrides”:{},”gdpr”:{“enabled”:true,”bannerType”:”preferences”,”dataSaleOptOut”:false,”countries”:null,”regionOverrides”:{}},”ccpa”:{“enabled”:true,”bannerType”:”decline-only”,”dataSaleOptOut”:true,”countries”:null,”regionOverrides”:{}},”lgpd”:{“enabled”:true,”bannerType”:”accept-or-decline”,”dataSaleOptOut”:false,”countries”:null,”regionOverrides”:{}},”pipeda”:{“enabled”:true,”bannerType”:”accept-or-decline”,”dataSaleOptOut”:false,”countries”:null,”regionOverrides”:{}},”appi”:{“enabled”:true,”bannerType”:”accept-only”,”dataSaleOptOut”:false,”countries”:null,”regionOverrides”:{}},”others”:{“bannerType”:”informative”,”hideBanner”:false}},”forceConsentOnFirstVisit”:false,”scrollThreshold”:20,”skipInitialClicks”:0,”autoBlocker”:{“enabled”:true,”customRules”:[],”pixelIframeRemoval”:true,”riskyPixelIds”:[],”allowedPixelIds”:[]},”customerAccountBannerEnabled”:false,”customerAccountVisibleAfterConsent”:false,”customerAccountShowCollapseIcon”:false,”customerAccountShowCloseIcon”:false,”customerAccountNotificationAfterConsent”:”Privacy updated”,”preferencesButtonText”:”Preferences”,”preferencesPopHeaderTitle”:”Select type of Cookies you accept using.”,”preferencesPopHeaderDesc”:””,”strictCookiesTitle”:”Strictly Required”,”strictCookiesDesc”:”Those cookies are required to run our website properly and cannot be switched off.”,”analyticCookiesTitle”:”Analytics”,”analyticCookiesDesc”:”Those cookies help us to understand how visitors interact with websites by collecting and reporting information.”,”marketingCookiesTitle”:”Marketing”,”marketingCookiesDesc”:”These cookies are usually set by our marketing and advertising partners to show you relevant ads.”,”functionalCookiesTitle”:”Functional”,”functionalCookiesDesc”:”Functional cookies enable our website to offer additional functions and personal settings.”,”acceptSelectedButtonText”:”Save consent”,”acceptAllButtonText”:”Accept All”,”reopenButtonText”:”Cookie consent”,”preferenceStyleCustom”:”default”,”shopId”:”bO7GwaV1iqrgFqTDunSG”,”header”:”We keep your privacy”,”fontStore”:[{“label”:”lion-icons”,”value”:”lion-icons”},{“label”:”Source Sans Pro”,”value”:”Source+Sans+Pro”},{“label”:”Nunito Sans”,”value”:”Nunito+Sans”},{“label”:”Avenir Book”,”value”:”Avenir+Book”},{“label”:”Figtree”,”value”:”Figtree”},{“label”:”Libre Baskerville”,”value”:”Libre+Baskerville”},{“label”:”swiper-icons”,”value”:”swiper-icons”},{“label”:”capital-swiper-icons”,”value”:”capital-swiper-icons”},{“label”:”Just Lovely Regular”,”value”:”Just+Lovely+Regular”},{“label”:”Baskervville”,”value”:”Baskervville”},{“label”:”Cormorant”,”value”:”Cormorant”},{“label”:”Poppins”,”value”:”Poppins”},{“label”:”Prompt”,”value”:”Prompt”},{“label”:”Syne”,”value”:”Syne”},{“label”:”Urbanist”,”value”:”Urbanist”},{“label”:”Nunito-Sans-Klaviyo-Hosted”,”value”:”Nunito-Sans-Klaviyo-Hosted”},{“label”:”Poppins-Klaviyo-Hosted”,”value”:”Poppins-Klaviyo-Hosted”},{“label”:”Open Sans”,”value”:”Open+Sans”},{“label”:”Font Awesome 5 Brands”,”value”:”Font+Awesome+5+Brands”},{“label”:”Font Awesome 5 Free”,”value”:”Font+Awesome+5+Free”},{“label”:”stamped-font”,”value”:”stamped-font”}],”illustrations”:”Illustrations”,”boxShadow”:”0px 3px 8px rgba(0, 0, 0, 0.2)”,”borderColor”:””,”dataTrackingMethod”:”Data tracking method”,”tcfPrivacyText”:”Privacy policy”,”tcfAcceptAllButtonText”:”Accept all”,”maxDurationCookie”:”Maximum duration of cookies”,”tcfMessage3″:”You may modify or withdraw your preferences at any time by clicking the “Cookies Consent” button (or Cookies icon) at the bottom of this site. For more details, please refer to our {tcfPrivacyText} and {tcfGooglePolicyText}.”,”tcfMessage2″:”Store and/or access information on a device. Use limited data to select advertising. Use profiles to select personalised advertising. Create profiles for personalised advertising. Use profiles to personalise content. Measure advertising performance. Measure content performance. Understand audiences through statistics or combinations of data from different sources. Develop and improve services. Use limited data to select content. We may also use precise geolocation data and identify devices through scanning.”,”tcfMessage1″:”We and our {partnersText} process data that concerns you. We may process data essential for the proper functioning of the site or for security reasons, classified as Strictly required, which does not require your consent. to this data, we will process personal data (e.g. login-based identifiers, non-precise location, interaction with ads or content) only if you have given your consent. You express your consent by clicking “Accept” or manage your preferences by clicking on “Customize preferences”.”,”fontWeight”:”500″,”tcfConsent”:”Consent”,”tcfHeader”:”We keep your privacy”,”tcfAcceptButtonText”:”Accept”,”borderRadius”:”32px”,”deviceStorageOverview”:”Device Storage Overview”,”tcfLegIntClaim”:”Legitimate interest claim:”,”lifeTimeCookieRefresh”:”Cookie lifetime is being refreshed”,”tcfPreferencesContent1″:”Customize your consent preferences below. Granular consent for Purposes & Features and Vendors is supported.”,”cookieProvider”:”Provider”,”tcfSaveButtonText”:”Save consent”,”tcfPreferencesContent2″:”Most {vendorText} require your explicit consent to process personal data, while some rely on legitimate interest. you have the right to object to their use of legitimate interest at anytime.”,”tcfPreferencesContent3″:”The choices you make regarding the purposes and entities listed below are saved in a cookie named “avada-tcf” in Local Storage and expire after 12 months.”,”tcfSpecialPeriodInfo”:”Some purposes and/or special purposes may have different retention periods that are reported next to their descriptions.”,”cookieDescription”:”Description”,”numberVendor”:”{number} vendors”,”tcfPurposes”:”Purposes”,”tcfPrivacyPolicyText”:”Privacy policy”,”tcfDeclineAllButtonText”:”Decline all”,”tcfPartnerText”:”{number} partners”,”tcfGooglePolicyText”:”Google policy”,”textAvadaMobile”:”rgba(29, 29, 29, 0.8)”,”tcfThirdPartyVendors”:”TCF Third party vendors”,”tcfVendorTitle”:”Vendors”,”tcfDeviceStorage”:”Device storage information:”,”value”:”basic2″,”cookieName”:”Cookie name”,”tcfSpecialPurposes”:”Special purposes”,”tcfCategoryTitle”:”Categories”,”tcfPeriod”:”{days} days”,”tcfDenyButtonText”:”Decline”,”display”:””,”tcfFeatures”:”Features”,”cookieDuration”:”Duration”,”tcfPreferencesButtonText”:”Customize preferences”,”tcfDataRetention”:”Data retention period:”,”label”:”Elegant”,”dataCategories”:”Data categories”,”vendorText”:”vendors”,”btnColor”:”#F6EFEB”,”tcfFeaturesAndPurposesTitle”:”Features & Purposes”,”tcfFlexiblePurposes”:”Flexible purposes”,”tcfHeader2″:”We and our partners process data to provide:”,”tcfSpecialFeatureOptins”:”Special features”,”tcfHeader3″:”Withdraw consent”,”tcfLegIntPurposes”:”Legitimate interest”,”tcfLegitimate”:”Legitimate interest”,”id”:”wTzv5o1PIcttsFe8Zg1b”,”impliedConsent”:[]},”status”:true,”translations”:{“id”:”WwC4amb2BOhO4kJkwQK6″,”defaultLanguage”:”en”,”detectMethod”:”browser”,”shopId”:”bO7GwaV1iqrgFqTDunSG”,”createdAt”:”2026-08-17T15:55:00.629Z”,”updatedAt”:”2026-08-17T15:55:02.312Z”},”cookies”:{“strictly-required”:[{“description”:”Used in connection with browsing through site.”,”duration”:”-“,”provider”:”Shopify”,”name”:”_Brochure_session”},{“description”:”Merchant authentication: Identity session cookie.”,”duration”:”session”,”provider”:”Shopify”,”name”:”__Host-_identity_session_same_site”},{“description”:”Used in connection with access to admin.”,”duration”:”2y”,”provider”:”Shopify”,”name”:”_ab”},{“description”:”Used for managing customer privacy settings.”,”duration”:”1d”,”provider”:”Shopify”,”name”:”_cmp_a”},{“description”:”Used in combination with the _secure_account_session_id cookie to track a user’s session for new customer accounts”,”duration”:”30d”,”provider”:”Shopify”,”name”:”_customer_account_shop_sessions”},{“description”:”Merchant authentication: Main session cookie for Identity authentication. This is the underlying Rails session cookie. It contains the SID.”,”duration”:”2y”,”provider”:”Shopify”,”name”:”_identity_session”},{“description”:”Permanent device identifier.”,”duration”:”session”,”provider”:”Shopify”,”name”:”_master_udr”},{“description”:”Contains essential information for the correct functionality of merchant surfaces such as the admin area.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_merchant_essential”},{“description”:”Used to track a user’s session for new customer accounts”,”duration”:”30d”,”provider”:”Shopify”,”name”:”_secure_account_session_id”},{“description”:”Used to store session id in core for auth Legacy Admin”,”duration”:”12w”,”provider”:”Shopify”,”name”:”_secure_admin_session_id”},{“description”:”Used to store session id in core for auth Legacy Admin”,”duration”:”12w”,”provider”:”Shopify”,”name”:”_secure_admin_session_id_csrf”},{“description”:”Used to track a user’s session through the multi-step checkout process and keep their order, payment and shipping details connected.”,”duration”:”24h”,”provider”:”Shopify”,”name”:”_secure_session_id”},{“description”:”Contains essential information for the correct functionality of Shop.app.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_shop_app_essential”},{“description”:”For shops where pricing currency/country set from GeoIP, that cookie stores the country we’ve detected. This cookie helps avoid doing GeoIP lookups after the first request.”,”duration”:”session”,”provider”:”Shopify”,”name”:”_shopify_country”},{“description”:”Contains essential information for the correct functionality of a store such as session and checkout information and anti-tampering data.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_shopify_essential”},{“description”:”Contains an opaque token that is used to identify a device for all essential purposes.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_shopify_essential_”},{“description”:”Used for managing customer privacy settings.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_shopify_m”},{“description”:”Used to check cookie capabilities on the client.”,”duration”:”1min”,”provider”:”Shopify”,”name”:”_shopify_test”},{“description”:”Used for managing customer privacy settings.”,”duration”:”30min”,”provider”:”Shopify”,”name”:”_shopify_tm”},{“description”:”Used for managing customer privacy settings.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”_shopify_tw”},{“description”:”Used to facilitate updating customer account information.”,”duration”:”1min”,”provider”:”Shopify”,”name”:”_storefront_u”},{“description”:”Used to store a user’s preferences if a merchant has set up privacy rules in the visitor’s region.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_tracking_consent”},{“description”:””,”duration”:”-“,”provider”:”Avada”,”name”:”avada_cookie_consent”},{“description”:”Used in connection with checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”c”},{“description”:”Used in connection with checkout.”,”duration”:”20m”,”provider”:”Shopify”,”name”:”card_update_verification_id”},{“description”:”Contains information related to the user’s cart.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”cart”},{“description”:”Set after a checkout is completed to ensure that new carts are in the same currency as the last checkout.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”cart_currency”},{“description”:”A hash of the contents of a cart. This is used to verify the integrity of the cart and to ensure performance of some cart operations.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”cart_sig”},{“description”:”Used in connection with checkout.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”cart_ts”},{“description”:”Used in connection with shopping cart.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”cart_ver”},{“description”:”Used in connection with checkout.”,”duration”:”4w”,”provider”:”Shopify”,”name”:”checkout”},{“description”:”Helps detect fraud and provides continuity between each of your checkout attempts with Affirm. This data is necessary for Affirm to improve your experience by understanding where you and other customers are experiencing friction as you use our product.”,”duration”:”1y”,”provider”:”Affirm”,”name”:”checkout_continuity_service”},{“description”:”Helps detect fraud and provides continuity between each of your checkout attempts with Affirm. This data is necessary for Affirm to improve your experience by understanding where you and other customers are experiencing friction as you use our product.”,”duration”:”1y”,”provider”:”Affirm”,”name”:”checkout_continuity_service”},{“description”:”Used in connection with checkout.”,”duration”:”5m”,”provider”:”Shopify”,”name”:”checkout_prefill”},{“description”:”Used in connection with checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”checkout_queue_checkout_token”},{“description”:”Used in connection with checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”checkout_queue_token”},{“description”:”Used in connection with checkout.”,”duration”:”3w”,”provider”:”Shopify”,”name”:”checkout_session_lookup”},{“description”:”Used in connection with checkout.”,”duration”:”3w”,”provider”:”Shopify”,”name”:”checkout_session_token”},{“description”:”Used in connection with checkout.”,”duration”:”3w”,”provider”:”Shopify”,”name”:”checkout_session_token_<>”},{“description”:”Used in connection with checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”checkout_token”},{“description”:”Used in connection with checkout.”,”duration”:”3d”,”provider”:”Shopify”,”name”:”checkout_worker_session”},{“description”:”Used to ensure our systems are working correctly”,”duration”:”1m”,”provider”:”Shopify”,”name”:”cookietest”},{“description”:”Used in connection with new customer accounts”,”duration”:”1y”,”provider”:”Shopify”,”name”:”customer_account_locale”},{“description”:”Used in connection with customer authentication”,”duration”:”20m”,”provider”:”Shopify”,”name”:”customer_account_new_login”},{“description”:”Used in connection with customer authentication”,”duration”:”7d”,”provider”:”Shopify”,”name”:”customer_account_preview”},{“description”:”Used in connection with checkout.”,”duration”:”1h”,”provider”:”Shopify”,”name”:”customer_payment_method”},{“description”:”Used in connection with checkout.”,”duration”:”20m”,”provider”:”Shopify”,”name”:”customer_shop_pay_agreement”},{“description”:”Stores a discount code (received from an online store visit with a URL parameter) in order to the next checkout.”,”duration”:”session”,”provider”:”Shopify”,”name”:”discount_code”},{“description”:”Used in connection with checkout.”,”duration”:”30min”,”provider”:”Shopify”,”name”:”dynamic_checkout_shown_on_cart”},{“description”:”Used in connection with GDPR acceptance.”,”duration”:”-“,”provider”:”Oberlo”,”name”:”gdpr_accepted”},{“description”:”Used in connection with checkout.”,”duration”:”session”,”provider”:”Shopify”,”name”:”hide_shopify_pay_for_checkout”},{“description”:”Used in connection with customer authentication”,”duration”:”24h”,”provider”:”Shopify”,”name”:”identity-state”},{“description”:”Used in connection with customer authentication”,”duration”:”24h”,”provider”:”Shopify”,”name”:”identity-state-<>”},{“description”:””,”duration”:”-“,”provider”:”Avada”,”name”:”integration”},{“description”:”Used when international domain redirection is enabled to determine if a request is the first one of a session.”,”duration”:”session”,”provider”:”Shopify”,”name”:”keep_alive”},{“description”:”Used to localize the cart to the correct country.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”localization”},{“description”:”Used to facilitate login with Shop.”,”duration”:”5min”,”provider”:”Shopify”,”name”:”login_with_shop_finalize”},{“description”:”Used in connection with merchant login.”,”duration”:”2y”,”provider”:”Shopify”,”name”:”master_device_id”},{“description”:”Used in connection with order status page.”,”duration”:”3w”,”provider”:”Shopify”,”name”:”order”},{“description”:”Used in connection with checkout.”,”duration”:”20m”,”provider”:”Shopify”,”name”:”pay_update_intent_id”},{“description”:”Used in connection with the theme editor”,”duration”:”session”,”provider”:”Shopify”,”name”:”preview_theme”},{“description”:”Used in connection with checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”previous_step”},{“description”:”Remembers a user’s privacy choices about cookies and online tracking, especially for marketing and advertising, based on user’s regional privacy laws.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”privacy_signal”},{“description”:”Used in connection with checkout.”,”duration”:”5m”,”provider”:”Shopify”,”name”:”profile_preview_token”},{“description”:”Used in connection with checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”remember_me”},{“description”:”Used to identify a user after they sign into a shop as a customer so they do not need to log in again.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”secure_customer_sig”},{“description”:”This cookie is typically used to maintain an anonymized user session by the server.”,”duration”:”session”,”provider”:”Affirm”,”name”:”session”},{“description”:”This cookie is typically used to maintain an anonymized user session by the server.”,”duration”:”session”,”provider”:”Affirm”,”name”:”session”},{“description”:”Used in connection with checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”shop_pay_accelerated”},{“description”:”Used in connection with the theme editor”,”duration”:”16h”,”provider”:”Shopify”,”name”:”shopify-editor-unconfirmed-settings”},{“description”:”Used to log in a buyer into Shop Pay when they come back to checkout on the same store.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”shopify_pay”},{“description”:”Used in connection with checkout.”,”duration”:”1 hour, 3w or 1y depending on value”,”provider”:”Shopify”,”name”:”shopify_pay_redirect”},{“description”:”Used in connection with Shop login.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”signed_in”},{“description”:”Used in combination with mobile apps to provide custom checkout behavior, when viewing a store from within a compatible mobile app.”,”duration”:”session”,”provider”:”Shopify”,”name”:”source_name”},{“description”:”Stores a digest of the storefront password, allowing merchants to preview their storefront while it’s password protected.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”storefront_digest”},{“description”:”Used in connection with checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”tracked_start_checkout”},{“description”:”Used in connection with Shop login.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”user”},{“description”:”Used to ensure our systems are working correctly.”,”duration”:”session”,”provider”:”Shopify”,”name”:”wpm-test-cookie”}],”reporting-analytics”:[{“description”:”The cookie is set by embedded Microsoft Clarity scripts. The purpose of this cookie is for heatmap and session recording.”,”duration”:”1 year”,”provider”:”Microsoft”,”name”:”CLID”},{“description”:”This is a Microsoft cookie which we use to measure the use of the website for internal analytics”,”duration”:”session”,”provider”:”Microsoft”,”name”:”SM”},{“description”:”This cookie is installed by Microsoft Clarity to store information of how visitors use a website and help in creating an analytics report of how the website is doing. The data collected including the number visitors, the source where they have come from, and the pages visited in an anonymous form.”,”duration”:”1 year”,”provider”:”Microsoft”,”name”:”_clck”},{“description”:”This cookie is installed by Microsoft Clarity to store information of how visitors use a website and help in creating an analytics report of how the website is doing. The data collected including the number visitors, the source where they have come from, and the pages visited in an anonymous form.”,”duration”:”session”,”provider”:”Microsoft”,”name”:”_clsk”},{“description”:”Capture the landing page of visitor when they come from other sites.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”_landing_page”},{“description”:”Contains analytics data for the merchant session.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_merchant_analytics”},{“description”:”Allows merchant to identify where people are visiting them from.”,”duration”:”2w”,”provider”:”Shopify”,”name”:”_orig_referrer”},{“description”:”Shopify analytics.”,”duration”:”30min”,”provider”:”Shopify”,”name”:”_s”},{“description”:”Contains analytics data for Shop.app.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_shop_app_analytics”},{“description”:”Contains analytics data for buyer surfaces such as the storefront or checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_shopify_analytics”},{“description”:”Shopify analytics.”,”duration”:”session”,”provider”:”Shopify”,”name”:”_shopify_d”},{“description”:”Shopify analytics.”,”duration”:”30min”,”provider”:”Shopify”,”name”:”_shopify_fs”},{“description”:”Shopify and Google Analytics.”,”duration”:”session”,”provider”:”Shopify”,”name”:”_shopify_ga”},{“description”:”Used to identify a given browser session/shop combination. Duration is 30 minute rolling expiry of last use.”,”duration”:”30min”,”provider”:”Shopify”,”name”:”_shopify_s”},{“description”:”Shopify analytics relating to marketing & referrals.”,”duration”:”30min”,”provider”:”Shopify”,”name”:”_shopify_sa_p”},{“description”:”Shopify analytics relating to marketing & referrals.”,”duration”:”30min”,”provider”:”Shopify”,”name”:”_shopify_sa_t”},{“description”:”Shopify analytics.”,”duration”:”-“,”provider”:”Oberlo”,”name”:”_shopify_t”},{“description”:”Shopify analytics.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_shopify_y”},{“description”:”Shopify analytics.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_y”},{“description”:”Shopify analytics.”,”duration”:”session”,”provider”:”Shopify”,”name”:”customer_auth_provider”},{“description”:”Shopify analytics.”,”duration”:”session”,”provider”:”Shopify”,”name”:”customer_auth_session_created_at”},{“description”:”Contains the required buyer information for analytics in Shop.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”shop_analytics”},{“description”:”First-party analytics identifier set client-side by the Shopify Web Pixel Manager. It stores the visitor’s client ID (a UUID) to track an anonymous visitor across sessions for analytics and conversion attribution.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”shopify_client_id”},{“description”:”First-party analytics identifier set client-side by the Shopify Web Pixel Manager. It stores the visitor’s client ID (a UUID) to track an anonymous visitor across sessions for analytics and conversion attribution.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”shopify_client_id”},{“description”:”Shopify analytics.”,”duration”:”10min”,”provider”:”Shopify”,”name”:”unique_interaction_id”}],”marketing-retargeting”:[{“description”:”Used to store session ID for a users session to ensure that clicks from adverts on the Bing search engine are verified for reporting purposes and for personalisation”,”duration”:”10 minutes”,”provider”:”Microsoft”,”name”:”ANONCHK”},{“description”:”Used to collect information for analytics purposes.”,”duration”:”6 months”,”provider”:”Microsoft”,”name”:”MR”},{“description”:”Identifies unique web browsers visiting Microsoft sites. These cookies are used for advertising, site analytics, and other operational purposes.”,”duration”:”1 year”,”provider”:”Microsoft”,”name”:”MUID”},{“description”:”Tries to estimate the users’ bandwidth on pages with integrated YouTube videos. used for marketing”,”duration”:”179 days”,”provider”:”Google”,”name”:”VISITOR_INFO1_LIVE”},{“description”:”Youtube visitor privacy metadata cookie”,”duration”:”180 days”,”provider”:”Google”,”name”:”VISITOR_PRIVACY_METADATA”},{“description”:”When Klaviyo’s JavaScript is enabled, the __kla_id cookie can track and identify site visitors through an auto-generated ID. This cookie can temporarily hold personally identifiable information. Once a visitor is identified, the cookie can pass their data into Klaviyo.”,”duration”:”2 years”,”provider”:”Klaviyo”,”name”:”__kla_id”},{“description”:”Registers a unique ID that identifies and recognizes the user. Is used for targeted advertising.”,”duration”:”1 day”,”provider”:”Pinterest”,”name”:”_pin_unauth”},{“description”:”This cookieis a third party cookie which groups actions for users who cannot be identified by Pinterest.”,”duration”:”session”,”provider”:”Pinterest”,”name”:”_pinterest_ct_ua”},{“description”:”Contains marketing data for buyer surfaces such as the storefront or checkout.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”_shopify_marketing”},{“description”:”Tracking cookie used by TikTok to identify a visitor”,”duration”:”13 months”,”provider”:”TikTok”,”name”:”_ttp”},{“description”:”This cookie is used by Bing to determine what ads should be shown that may be relevant to the end user perusing the site.”,”duration”:”30 minutes”,”provider”:”Microsoft”,”name”:”_uetsid”},{“description”:”This is a cookie utilised by Microsoft Bing Ads and is a tracking cookie. It allows us to engage with a user that has previously visited our website.”,”duration”:”16 days”,”provider”:”Microsoft”,”name”:”_uetvid”}],”functional”:[{“description”:”This cookie is set by the cookie compliance solution from OneTrust. It stores information about the categories of cookies the site uses and whether visitors have given or withdrawn consent for the use of each category. This enables site owners to prevent cookies in each category from being set in the user’s browser, when consent is not given. The cookie has a normal lifespan of one year, so that returning visitors to the site will have their preferences remembered. It contains no information that can identify the site visitor.”,”duration”:”1 year”,”provider”:”OneTrust”,”name”:”OptanonConsent”},{“description”:”Cookie generated by applications based on the PHP language. This is a general purpose identifier used to maintain user session variables. It is normally a random generated number, how it is used can be specific to the site, but a good example is maintaining a logged-in status for a user between pages.”,”duration”:”Sessions”,”provider”:”PHP.net”,”name”:”PHPSESSID”},{“description”:”Collected user data is specifically adapted to the user or device. The usercan also be followed outside of the loaded website, creating a picture of the visitor’s behavior.”,”duration”:”1 year”,”provider”:”Microsoft”,”name”:”SRM_B”},{“description”:”Registers a unique ID to keep statistics of what videos from YouTube the user has seen.”,”duration”:”Session”,”provider”:”Google”,”name”:”YSC”},{“description”:”Cloudflare’s bot products identify and mitigate automated traffic to protect your site from bad bots. Cloudflare places the __cf_bm cookie on End User devices that access Customer sites that are protected by Bot Management or Bot Fight Mode. The __cf_bm cookie is necessary for the proper functioning of these bot solutions.”,”duration”:”session”,”provider”:”Cloudflare”,”name”:”__cf_bm”},{“description”:”The _cfuvid cookie is only set when a site uses this option in a Rate Limiting Rule, and is only used to allow the Cloudflare WAF to distinguish individual users who share the same IP address.”,”duration”:”session”,”provider”:”Cloudflare”,”name”:”_cfuvid”},{“description”:”Used as a mechanism to set User locale in admin.”,”duration”:”1y”,”provider”:”Shopify”,”name”:”shopify_override_user_locale”}]},”integration”:{“shopify”:{“connected”:true},”metaPixel”:{“enabled”:false,”script”:”n !function(f,b,e,v,n,t,s)n {n=f.fbq=function(){n.callMethod?n n.callMethod.apply(n,arguments):n.queue.push(arguments)};n if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;n n.queue=[];t=b.createElement(e);t.async=!0;n t.src=v;s=b.getElementsByTagName(e)[0];n s.parentNode.insertBefore(t,s)}(window, document,’script’,n ‘https://connect.facebook.net/en_US/fbevents.js’);n fbq(‘consent’, ‘revoke’);n n fbq(‘track’, ‘PageView’);n “},”tiktokPixel”:{“enabled”:false,”script”:””},”microsoftConsentMode”:{“enabled”:false},”tcf”:{“enabled”:false},”pinterestConsent”:{“enabled”:false,”script”:””},”klaviyo”:{“enabled”:false},”headlessCommerce”:{“enabled”:false},”swym”:{“enabled”:false},”shopId”:”bO7GwaV1iqrgFqTDunSG”,”createdAt”:”2026-08-27T00:43:13.327Z”,”googleConsentMode”:{“enabled”:true,”gtm”:”GTM-W2H6GL”,”script”:””},”globalPrivacyControl”:{“enabled”:true},”updatedAt”:”2026-10-01T15:11:20.182Z”,”id”:”4QPCOLUfv2qQ99nmYcDe”},”autoBlocker”:{“enabled”:true,”defaultConsentGranted”:true,”blockedScriptHosts”:[“googletagmanager.com”,”google-analytics.com”,”analytics.google.com”,”googleadservices.com”,”googlesyndication.com”,”doubleclick.net”],”customHosts”:{“script”:[],”iframe”:[],”pixel”:[]},”pixelIframeRemoval”:false}} || {}; let config = meta.autoBlocker; if (!config || config.enabled === false) return; let SCRIPT_HOSTS = config.blockedScriptHosts || []; let CUSTOM_HOSTS_OBJ = config.customHosts || {}; let CUSTOM_SCRIPT_HOSTS = CUSTOM_HOSTS_OBJ.script || []; let CUSTOM_IFRAME_HOSTS = CUSTOM_HOSTS_OBJ.iframe || []; let CUSTOM_PIXEL_HOSTS = CUSTOM_HOSTS_OBJ.pixel || []; // Merchant posture, used ONLY once Shopify’s probe has given up. Never // consulted while a real answer is still possible. let DEFAULT_CONSENT_GRANTED = config.defaultConsentGranted === true; let CMP_TIMED_OUT = false; // Do NOT set __avadaPixelBlockerActive yet — Defense 0 may already be live // from the early theme.liquid bootstrap. Full init still needs the pixel // defenses below. window.__avadaBlockerConfig = config; // —- Consent (reads avada_cookie_consent cookie live) —- function rawConsentCookie() { let nameEQ = ‘avada_cookie_consent=”; let ca = document.cookie ? document.cookie.split(“;”) : []; for (let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) === ' ') c = c.substring(1); if (c.indexOf(nameEQ) === 0) { try { return JSON.parse(decodeURIComponent(c.substring(nameEQ.length))); } catch (e) { return null; } } } return null; } function getMarketingConsent() { let consent = rawConsentCookie(); if (!consent || typeof consent !== 'object') return null; let hasChoice = typeof consent.marketing === 'boolean' || typeof consent.analytics === 'boolean' || typeof consent.preferences === 'boolean'; if (!hasChoice) return null; return consent.marketing === true; } function cmp() { return window.Shopify && window.Shopify.customerPrivacy; } function cmpAllowsTracking() { let c = cmp(); if (!c || typeof c.userCanBeTracked !== 'function') return null; try { return c.userCanBeTracked() === true; } catch (e) { return null; } } // Shopify's answer to "does this visitor have to be asked for consent?". // userCanBeTracked() cannot answer that: it reads false both for a visitor who // refused and for one nobody ever asked. On a shop that shows the banner in one // region only, it therefore stays false forever everywhere else. function cmpNeedsBanner() { let c = cmp(); if (!c || typeof c.shouldShowBanner !== 'function') return null; try { return c.shouldShowBanner() === true; } catch (e) { return null; } } function cmpReady() { return cmpAllowsTracking() !== null || cmpNeedsBanner() !== null; } // —- Region scope, published by the cookie bar —- // Only the banner knows whether it will ever be shown to this visitor // (showOnCountry / specificRegions / Smart Geo). It publishes that verdict as // 'in' or 'out'. 'out' means no consent can ever be collected here, so blocking // such a visitor lasts forever. Cached in localStorage because this script runs // in compliance_head, long before the bundle that computes the verdict. function readScopeCache() { try { let raw = window.localStorage.getItem('avadaBlockerScope'); if (!raw) return null; let parsed = JSON.parse(raw); if (!parsed || !parsed.expiry || parsed.expiry < Date.now()) return null; return parsed.value === 'in' || parsed.value === 'out' ? parsed.value : null; } catch (e) { return null; } } // shouldBlock() runs inside the patched appendChild, i.e. once per inserted // node, so the stored verdict is parsed at most once per page view. A verdict // published later in the page arrives on window, not through storage. let SCOPE_CACHE = {read: false, value: null}; function regionScope() { let live = window.__avadaBlockerScope; if (live === 'in' || live === 'out') return live; if (!SCOPE_CACHE.read) { SCOPE_CACHE.read = true; SCOPE_CACHE.value = readScopeCache(); } return SCOPE_CACHE.value; } // 'granted' | 'denied' | 'unknown' function consentState() { let m = getMarketingConsent(); if (m === true) return 'granted'; if (m === false) return 'denied'; if (cmpAllowsTracking() === true) return 'granted'; let needsBanner = cmpNeedsBanner(); // Shopify says a regulation applies to this visitor. That outranks our own // region config: if the merchant scoped the banner away from a region // Shopify considers regulated, we cannot obtain consent there — so we must // not track there either. Blocking is the only compliant answer, and it is // what shipped before regionScope existed. if (needsBanner === true) return 'denied'; if (needsBanner === false) return 'granted'; // Shopify has no opinion (no regulation, or not hydrated yet). Now the // merchant's own banner scope decides: a visitor we were never going to ask // must not be blocked forever. if (regionScope() === 'out') return 'granted'; if (regionScope() === 'in') return 'denied'; // FIX 2: nobody has an answer. Failing closed forever would trade one // silent-tracking-outage for another, so once the probe below has actually // given up we fall back to the merchant's configured posture. A strict // opt-in shop has defaultConsentGranted false and stays blocked. if (CMP_TIMED_OUT) return DEFAULT_CONSENT_GRANTED ? 'granted' : 'denied'; return 'unknown'; } function shouldBlock() { // Reversible defenses (script / iframe / img neutralization) stay fail-closed // while the decision is unknown; tick() puts them back once it resolves. return consentState() !== 'granted'; } // The early snippet, when a merchant has pasted it, installs the element // patches first and this block then skips installing its own. Interception // would keep running on the snippet's simpler verdict while release ran on // this one — so every tag reenableScripts() restored got neutralized again // on the way back in. Publishing the verdict keeps both halves on one // decision. window.__avadaShouldBlock = shouldBlock; function waitForCmpReady(callback) { let attempts = 0; let featureRequested = false; let completed = false; // loadFeatures' callback re-enters check() while a retry is already // queued. Without this guard each re-entry forks another chain, so the // shared budget below burns down several times faster than the wall // clock it is meant to describe. let scheduled = false; function check() { if (completed) return; if (cmpReady()) { completed = true; callback(); return; } let shopify = window.Shopify; if (!featureRequested && shopify && typeof shopify.loadFeatures === 'function') { featureRequested = true; try { shopify.loadFeatures( [{name: 'consent-tracking-api', version: '0.1'}], function (error) { if (!error) check(); } ); } catch (e) {} } // Shopify's bootstrap itself can arrive after this compliance script. // Probe for up to 10s. if (attempts < 200 && !scheduled) { attempts++; scheduled = true; setTimeout(function () { scheduled = false; check(); }, 50); return; } // Probe exhausted and no retry pending: Customer Privacy is not coming. // Mark it so consentState() can fall back to the merchant's posture, and // run the callback so tick() re-evaluates instead of leaving every // neutralized tag stranded for the rest of the visit. if (!scheduled) { completed = true; CMP_TIMED_OUT = true; callback(); } } check(); } // —- Defense 0: script-tag neutralization —- // `type` is the one thing neutralization destroys rather than merely hides: // everything else (defer, integrity, nonce, crossorigin, data-*, DOM // position, attached load/error listeners) survives on the element, and is // lost only because the old restore built a fresh tag from one attribute. // Stash type before overwriting it, and stash async because it is // unreadable later: once the aborted prepare has forced it, every // neutralized script reports async true whatever it started as. function stashOriginals(node) { try { if (!node.hasAttribute('data-avada-blocked-type')) { node.setAttribute('data-avada-blocked-type', node.getAttribute('type') || ''); } if (node.async === true && !node.hasAttribute('data-avada-blocked-async')) { node.setAttribute('data-avada-blocked-async', '1'); } } catch (e) {} } function isHeldType(type) { let t = (type || '').toLowerCase(); return t === 'javascript/blocked' || t === 'text/plain'; } // Held by somebody else. A non-executable placeholder type with none of our // markers is another consent tool's tag: it still carries the src that tool // needs to put back. Taking it over strips that URL and leaves the tag dead // for them while we release it on our verdict instead. function isForeignHeld(node) { try { return isHeldType(node.type) && !node.hasAttribute('data-avada-blocked-src'); } catch (e) { return false; } } // An entry is a host ("example.com") or a host plus a path prefix // ("example.com/widget-assets/pixel"). The host matches itself and its // subdomains; the path matches on segment boundaries, so "/pixel" covers // "/pixel" and "/pixel/v2.js" but never "/pixelated.js". function matchesHostList(target, list) { let host = target.host; for (let i = 0; i < list.length; i++) { let frag = list[i]; let slash = frag.indexOf("https://www.100percentpure.com/"); let fragHost = slash === -1 ? frag : frag.slice(0, slash); if (host !== fragHost && !host.endsWith('.' + fragHost)) continue; if (slash === -1) return true; let fragPath = frag.slice(slash); if (target.path === fragPath || target.path.indexOf(fragPath + "https://www.100percentpure.com/") === 0) return true; } return false; } function parseSrc(src) { try { let url = new URL(src, location.href); return {host: url.hostname.toLowerCase(), path: url.pathname.toLowerCase()}; } catch (e) { return null; } } function hasBlockedScriptHosts() { return !!(SCRIPT_HOSTS.length || CUSTOM_SCRIPT_HOSTS.length); } function isBlockedScriptSrc(src) { if (!src) return false; let target = parseSrc(src); if (!target) return false; return matchesHostList(target, SCRIPT_HOSTS) || matchesHostList(target, CUSTOM_SCRIPT_HOSTS); } function isBlockedIframeSrc(src) { if (!src || !CUSTOM_IFRAME_HOSTS.length) return false; let target = parseSrc(src); return !!target && matchesHostList(target, CUSTOM_IFRAME_HOSTS); } function isBlockedPixelSrc(src) { if (!src || !CUSTOM_PIXEL_HOSTS.length) return false; let target = parseSrc(src); return !!target && matchesHostList(target, CUSTOM_PIXEL_HOSTS); } function neutralizeScriptNode(node) { try { if (!node || node.tagName !== 'SCRIPT') return; // Already held — by us, or by whoever got here first. Both // javascript/blocked and text/plain are non-executable placeholder // types; adopting one that still carries src would overwrite the other // CMP's marker and strip the URL it needs to restore, leaving that tag // permanently dead for them and released on our verdict instead. if (isHeldType(node.type)) return; let src = (node.getAttribute && node.getAttribute('src')) || (node.src && String(node.src)) || ''; // Ignore the page URL that browsers expose when src is empty. if (!src || src === location.href) return; if (isBlockedScriptSrc(src)) { stashOriginals(node); // Was it already in the document? Then prepare-a-script has run and // the fetch is away; stripping src now stops the execution but not // the request. Record that, so a tag we merely cleaned up after is // not counted as one we prevented. Verification tooling, the e2e // recorder and CS all read data-avada-blocked-src as proof of a // block — this is what keeps that proof honest. if (node.isConnected) node.setAttribute('data-avada-blocked-late', '1'); node.type="javascript/blocked"; node.setAttribute('data-avada-blocked-src', src); node.removeAttribute('src'); } } catch (e) {} } function neutralizeIframeNode(node) { try { if (!node || node.tagName !== 'IFRAME') return; if (node.getAttribute('data-avada-blocked-iframe')) return; let src = node.getAttribute('src'); if (isBlockedIframeSrc(src)) { node.setAttribute('data-avada-blocked-iframe', src); node.removeAttribute('src'); } } catch (e) {} } function neutralizePixelNode(node) { try { if (!node || node.tagName !== 'IMG') return; if (node.getAttribute('data-avada-blocked-pixel')) return; let src = node.getAttribute('src'); if (isBlockedPixelSrc(src)) { node.setAttribute('data-avada-blocked-pixel', src); node.removeAttribute('src'); node.style.display = 'none'; } } catch (e) {} } function neutralizeScripts() { if (!hasBlockedScriptHosts() || !shouldBlock()) return; let scripts = document.querySelectorAll('script'); for (let i = 0; i < scripts.length; i++) neutralizeScriptNode(scripts[i]); } function neutralizeIframes() { if (!CUSTOM_IFRAME_HOSTS.length || !shouldBlock()) return; let iframes = document.querySelectorAll('iframe'); for (let i = 0; i < iframes.length; i++) neutralizeIframeNode(iframes[i]); } function neutralizePixels() { if (!CUSTOM_PIXEL_HOSTS.length || !shouldBlock()) return; let imgs = document.querySelectorAll('img'); for (let i = 0; i < imgs.length; i++) neutralizePixelNode(imgs[i]); } // Release only what this app held. // // The selector used to carry three more arms, matching // type="javascript/blocked" with src or data-src — markup this app never // produces, because neutralizeScriptNode strips src in the same breath as // it sets the type. What those arms did match is a competing CMP's // markup (Pandectes writes exactly that shape). On a store running two // consent tools, Avada would resurrect a tag the other one was // deliberately holding, firing a tracker under a denied consent state, // silently, with both tools' consent records showing no consent given. // // Nothing merchant-facing is stranded by dropping them. Both documented // hand-edit forms carry data-avada-blocked-src — type="javascript/blocked" // (earlyScriptBlockerSnippet.js) and type="text/plain" (autoBlocker.js) — // so the first arm already matched them, and the type filter below still // admits both. function reenableScripts() { if (shouldBlock()) return; let blocked = document.querySelectorAll('script[data-avada-blocked-src]'); for (let i = 0; i < blocked.length; i++) { let old = blocked[i]; let type = (old.getAttribute('type') || '').toLowerCase(); if (type && type !== 'javascript/blocked' && type !== 'text/plain') continue; let url = old.getAttribute('data-avada-blocked-src'); if (!url) continue; // Restore the element we neutralized rather than building a new one. // // The old
