/** * Mayka Capi — Wix Custom Code Script * Placement: All pages, Load code on each new page * Version: v2.35.0 * * What this does: * 1. Captures fbclid from the URL query string on landing pages. * 2. Constructs fbc (fb.1.{ms_timestamp}.{fbclid}) from fbclid. * 3. Reads _fbp cookie from document.cookie (accessible here, NOT in Velo sandbox). * 4. Writes fbc, fbp, fbclid to localStorage so Velo's wixStorage.local can read them. * * WHY localStorage BRIDGE: * Wix Velo page code runs in an iframe sandbox where document.cookie and window.fbq * are NOT accessible. However, wixStorage.local maps to localStorage in the outer * page context. This script runs in the outer page context and writes the signals * to localStorage keys that Velo's wixStorage.local.getItem() can then read. * * localStorage keys used (must match masterPage.js): * mayka_fbc — Meta click ID (fb.1.{ts}.{fbclid}) * mayka_fbp — Meta browser ID (_fbp cookie value) * mayka_fbclid — Raw fbclid query parameter * * v2.35.0: Improved _fbp capture timing. * Root cause of fbp: false — the Meta Pixel sets _fbp asynchronously after * fbevents.js loads and initialises. On slower connections or Safari/iOS, this * can take 3–8 seconds. The previous script only retried at 2s and 5s, and * skipped the 2s retry if fbp was already found on first run (which it rarely is). * * Fixes applied: * 1. Active polling loop: checks for _fbp every 500ms for up to 15 seconds. * Stops as soon as _fbp is found. This catches the cookie as soon as the * Pixel sets it, regardless of how long it takes. * 2. fbq queue hook: if window.fbq exists, wraps fbq() to detect when the Pixel * fires its first event (which happens after _fbp is set) and immediately * reads the cookie. This is the fastest path. * 3. Extended final retry at 10s: catches very slow Pixel loads. * 4. Always run 2s retry regardless of whether fbp was found on first run, * because the first-run check happens before Pixel init in most cases. * * v2.34.0: Added _fbp cookie read from document.cookie and localStorage bridge. * v2.28.0: Added 13-digit millisecond timestamp for fbc construction. */ (function () { try { // ── Helper: read a cookie value by name ──────────────────────────────────── function getCookie(name) { try { var match = document.cookie.match(new RegExp('(?:^|;)\\s*' + name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '=([^;]*)')); return match ? decodeURIComponent(match[1]) : ''; } catch (_e) { return ''; } } // ── Helper: write to localStorage safely ────────────────────────────────── function setLocal(key, value) { try { if (value) localStorage.setItem(key, value); } catch (_e) {} } // ── Helper: read from localStorage safely ───────────────────────────────── function getLocal(key) { try { return localStorage.getItem(key) || ''; } catch (_e) { return ''; } } // ── Step 1: Capture fbclid from URL and construct fbc ───────────────────── // Do this first — it doesn't depend on Pixel timing. var fbcFromCookie = ''; try { var urlParams = new URLSearchParams(window.location.search); var fbclid = urlParams.get('fbclid'); if (fbclid) { setLocal('mayka_fbclid', fbclid); // IMPORTANT: creationTime MUST be milliseconds (13 digits). // Math.floor(Date.now()/1000) produces 10-digit seconds — Meta rejects this. var ts = Date.now(); var constructedFbc = 'fb.1.' + ts + '.' + fbclid; setLocal('mayka_fbc', constructedFbc); } } catch (_e) {} // ── Step 2: Read _fbc from document.cookie ──────────────────────────────── fbcFromCookie = getCookie('_fbc'); if (fbcFromCookie) { setLocal('mayka_fbc', fbcFromCookie); } // ── Step 3: Read _fbp from document.cookie (immediate attempt) ──────────── // _fbp is set by the Meta Pixel (fbevents.js) on first page load. // Format: fb.1.{timestamp}.{random} // On most page loads the Pixel has NOT yet initialised at this point, // so fbp will be empty here. The polling loop below catches it once set. var fbp = getCookie('_fbp'); if (fbp) { setLocal('mayka_fbp', fbp); } // ── Step 4: Active polling loop ─────────────────────────────────────────── // Poll every 500ms for up to 15 seconds (30 attempts). // Stops as soon as _fbp is found and written to localStorage. // This is the primary mechanism for catching _fbp after Pixel init. var pollCount = 0; var maxPolls = 30; // 30 × 500ms = 15 seconds var pollInterval = setInterval(function () { try { pollCount++; var fbpPoll = getCookie('_fbp'); if (fbpPoll) { setLocal('mayka_fbp', fbpPoll); clearInterval(pollInterval); // Stop polling once found return; } // Also re-check _fbc in case it was set after page load var fbcPoll = getCookie('_fbc'); if (fbcPoll) { setLocal('mayka_fbc', fbcPoll); } if (pollCount >= maxPolls) { clearInterval(pollInterval); // Give up after 15 seconds } } catch (_e) { clearInterval(pollInterval); } }, 500); // ── Step 5: fbq queue hook ──────────────────────────────────────────────── // The Meta Pixel sets _fbp just before or during its first fbq('init') call. // By hooking into the fbq queue, we can read _fbp immediately after init fires. // This is the fastest path — typically 100-500ms after page load. try { var originalFbq = window.fbq; var hooked = false; function hookFbq(fbqFn) { if (hooked) return; hooked = true; var origCall = fbqFn.callMethod || fbqFn; // Wrap the fbq function to intercept calls window.fbq = function () { // Call original first try { origCall.apply(this, arguments); } catch (_e) {} // After any fbq call, check if _fbp is now available try { if (!getLocal('mayka_fbp')) { var fbpHook = getCookie('_fbp'); if (fbpHook) { setLocal('mayka_fbp', fbpHook); } } } catch (_e) {} }; // Copy all properties from original fbq for (var k in fbqFn) { if (Object.prototype.hasOwnProperty.call(fbqFn, k)) { window.fbq[k] = fbqFn[k]; } } } if (typeof window.fbq === 'function') { hookFbq(window.fbq); } else { // fbq not yet loaded — watch for it var fbqCheckCount = 0; var fbqWatcher = setInterval(function () { fbqCheckCount++; if (typeof window.fbq === 'function') { hookFbq(window.fbq); clearInterval(fbqWatcher); } else if (fbqCheckCount > 20) { clearInterval(fbqWatcher); // Give up after 10s } }, 500); } } catch (_e) {} // ── Step 6: Final safety net retries ───────────────────────────────────── // Belt-and-suspenders for very slow Pixel loads (e.g. Safari ITP, slow 3G). setTimeout(function () { try { var v = getCookie('_fbp'); if (v) setLocal('mayka_fbp', v); var c = getCookie('_fbc'); if (c) setLocal('mayka_fbc', c); } catch (_e) {} }, 3000); setTimeout(function () { try { var v = getCookie('_fbp'); if (v) setLocal('mayka_fbp', v); var c = getCookie('_fbc'); if (c) setLocal('mayka_fbc', c); } catch (_e) {} }, 8000); setTimeout(function () { try { var v = getCookie('_fbp'); if (v) setLocal('mayka_fbp', v); var c = getCookie('_fbc'); if (c) setLocal('mayka_fbc', c); } catch (_e) {} }, 15000); } catch (_e) {} })();
top of page

Your Natural Skincare Questions Answered: The Mayka Skincare FAQ

  • 8 hours ago
  • 4 min read

We receive a lot of questions from customers who are curious about natural skincare, making the switch to plastic-free hair care, and which products are right for their specific skin or hair type. In this post, we have compiled the most frequently asked questions about Mayka Skincare products and natural beauty in general — with full, honest answers.

About Mayka Skincare

What makes Mayka Skincare products natural?

Mayka Skincare products are formulated with botanical ingredients including plant-derived oils, butters, and extracts. All products are free from sulphates (SLS/SLES), parabens, synthetic silicones, and artificial fragrances. Every product is handmade in small batches in Preston, Lancashire, UK, using ethically sourced, vegan ingredients.

Are Mayka Skincare products vegan and cruelty-free?

Yes. All Mayka Skincare products are 100% vegan and cruelty-free. No animal-derived ingredients are used, and no animal testing is carried out at any stage of production or by any of our ingredient suppliers.

Where is Mayka Skincare based?

Mayka Skincare was founded in 2014 and is based in Preston, Lancashire, United Kingdom. All products are handmade in the UK and shipped across the country, with international shipping available to selected destinations.

Natural Shampoo Bars

What is a natural shampoo bar and how does it work?

A natural shampoo bar is a solid, concentrated block of hair-cleansing ingredients. Unlike liquid shampoo — which is typically 70 to 80 percent water — a shampoo bar contains no added water. Instead, it is made entirely from active botanical ingredients: mild plant-derived surfactants, nourishing oils, and natural extracts.

Mayka Skincare's Clarifying Shampoo Bar is a pH-balanced syndet bar, meaning it uses gentle surfactants (such as Sodium Cocoyl Isethionate, derived from coconut oil) that clean the hair effectively without stripping the scalp's natural oils or leaving a waxy residue.

How long does a natural shampoo bar last?

A Mayka Skincare shampoo bar typically lasts between 50 and 80 washes, depending on hair length and frequency of use. This is equivalent to approximately two to three standard 250ml bottles of liquid shampoo, making it both more economical and significantly more eco-friendly.

Will a shampoo bar leave my hair feeling waxy or heavy?

A pH-balanced syndet shampoo bar — like Mayka Skincare's Clarifying Shampoo Bar — will not leave a waxy residue. Waxy build-up is a common issue with traditional soap-based shampoo bars (which have an alkaline pH), but syndet bars are specifically formulated to match the natural pH of hair (4.5 to 5.5), so they rinse clean without any residue.

What is the best natural shampoo bar for hair loss?

For hair loss or thinning hair, look for a sulphate-free shampoo bar that contains scalp-stimulating botanical ingredients such as rosemary essential oil, peppermint oil, or caffeine. These ingredients improve scalp circulation and create a healthier environment for hair growth. Mayka Skincare's Clarifying Shampoo Bar helps remove the scalp build-up that can block hair follicles and inhibit growth.

How do I switch from liquid shampoo to a shampoo bar?

To switch to a natural shampoo bar, wet your hair thoroughly, then either rub the bar directly onto your scalp in circular motions or lather it between your wet hands and apply the foam. Massage into the scalp and rinse well. Some people experience a short transition period of one to two weeks as the scalp adjusts and sheds silicone build-up from previous products. Using a pH-balanced syndet bar like Mayka Skincare's Clarifying Shampoo Bar minimises this transition period significantly.

Natural Conditioner Bars

What is the difference between a shampoo bar and a conditioner bar?

A shampoo bar cleanses the scalp and hair by removing dirt, oil, and product build-up using mild surfactants. A conditioner bar, by contrast, is formulated with nourishing butters, oils, and detangling agents to smooth the hair cuticle, add moisture, and reduce frizz after washing. Mayka Skincare offers both: the Clarifying Shampoo Bar for cleansing and the Silky Wonder and Volume Wonder Conditioner Bars for conditioning.

Are natural conditioner bars suitable for fine hair?

Yes, when formulated correctly. Mayka Skincare's Volume Wonder Hair Conditioner Bar is specifically designed for fine or limp hair. It uses lightweight botanical ingredients that provide moisture and detangling without weighing the hair down, helping to maintain natural body and volume.

Do conditioner bars contain silicones?

No. Mayka Skincare conditioner bars are completely silicone-free. Unlike many conventional liquid conditioners — which rely on dimethicone and other silicones to create a temporary illusion of smoothness — our conditioner bars use natural emollients and plant-based proteins to genuinely moisturise and repair the hair from the inside out.

Skin Care Questions

Is Mayka Skincare good for sensitive skin?

Yes. Mayka Skincare offers a dedicated range for dry and sensitive skin, formulated without common irritants such as sulphates, parabens, synthetic fragrances, and artificial dyes. Products such as the Moisture Boost Face Cream and the Children's Face Cream are specifically designed for delicate and sensitive skin types.

Is African black soap good for acne?

African black soap is widely regarded as one of the most effective natural remedies for acne-prone skin. It contains natural antibacterial and anti-inflammatory properties from ingredients such as plantain ash, shea butter, and coconut oil. Mayka Skincare's African Black Soap gently cleanses the skin, removes excess sebum, and helps reduce the appearance of blemishes without stripping the skin's natural moisture barrier.

What natural skincare products do you recommend for teenagers?

For teenage skin, we recommend starting with a gentle, sulphate-free cleanser and a lightweight, non-comedogenic moisturiser. Mayka Skincare's Teenage Skin range features the African Black Soap — a traditional natural cleanser that is particularly effective for oily, acne-prone skin — alongside lightweight moisturisers that hydrate without clogging pores.

Sustainability and Packaging

Is Mayka Skincare packaging plastic-free?

Yes. Mayka Skincare is committed to zero-waste beauty. All products are packaged in 100% plastic-free, recyclable, and biodegradable materials. By switching to solid bars and plastic-free packaging, you can eliminate a significant amount of single-use plastic from your bathroom routine.

How much plastic does switching to a shampoo bar save?

In the UK alone, an estimated 520 million shampoo bottles are thrown away every year. A single Mayka Skincare shampoo bar replaces two to three plastic bottles of liquid shampoo. Over the course of a year, a typical household could eliminate six or more plastic bottles simply by switching to solid hair care bars.

Have More Questions?

If you have a question that is not answered here, please do not hesitate to get in touch with the Mayka Skincare team. You can also explore our full product range at mayka-skincare.com to find the perfect natural, vegan, and plastic-free solution for your hair and skin.

 
 
 

Comments


Featured Posts
Recent Posts
Archive
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page