CRO Audit — Better Beauty (thebetterbeauty.com)
Consolidated conversion-rate-optimization audit. Audit date: 15 August 2026. Prepared from live browser traversal of every user-reachable page plus the business-analysis, web-quality, AI-SEO, digital-brand-intelligence, competitive, content-strategy, ad-intelligence, and traffic-estimation reports in this workspace. Page-level evidence lives in pageaudit/.md; this document synthesizes and prioritizes it.*
0. Executive Summary (the 30-second read)
Better Beauty is a launch-stage, India-first, single-category (lip colour) D2C brand with a genuinely strong brand story and a best-in-class ingredients-transparency layer — but the on-site conversion funnel has two Critical, revenue-leaking defects and a cluster of Major trust/discovery gaps that will suppress first-purchase conversion for an unknown brand.
The headline tension: the binding business constraint is traffic/acquisition (micro-tier, ~618 visits/mo, zero paid ads, no marketplace), not on-site friction — BUT the on-site defects that exist are severe enough that any traffic gained would leak. You cannot fix CRO before you fix the two Critical items, because they destroy revenue at the point of purchase itself.
Two Critical, fix-before-launch issues:
- Add-to-Cart does not populate the cart on every path (PLP card, PDP main CTA, bundle builder). Reproduced live with 3 JS load exceptions + a misconfigured GoKwik accelerator. Root cause needs a real-device confirmation, but it is a red-flag checkout blocker until proven otherwise.
- ₹0 "ghost" lip-liner products (
-1handles: roseline-1, pixel-red-1, merlot-1, nutmeg-1, deep-contour, terra-metric dup) are published with enabled Add-to-Cart and leak onto the PLP, Shop All, and every PDP's cross-sell. A shopper can add a free item to cart. Free-item / revenue / SEO-cannibalisation risk.
Top Major gaps (trust & discovery): no shade-match / try-at-home safety net (refund policy forbids returns of opened products — the #1 objection for an unknown shade brand); no FAQ despite the Contact page inviting users to one; bundle PDPs (₹999–₹4,099, the highest-AOV products) have zero customer reviews; shade selection forces a full same-tab page reload to a sibling product instead of an in-page variant swap; a near-dead cart drawer empty-state; no sort control on any listing page.
Net: Fix the two Critical items + the no-returns objection + the review gap and the funnel becomes structurally sound for a launch brand. The deeper growth lever is upstream (acquisition, marketplace, paid), covered in the strategic section — but it is pointless to spend on traffic while add-to-cart and ghost products are live.
1. Scope, Method & Confidence
- Live-traversed surfaces: Homepage, 4 PLPs (lipsticks, lip liners, Shop All, bundle), 2 PDPs (Spectrum lipstick ₹450; Build-Your-Own-Box Pack-of-3 ₹999) + ghost-liner PDPs, cart drawer +
/cartpage, 7 support/utility pages, About + clinical-report page. - Environment caveat (material to confidence): the audit browser renders at a fixed desktop viewport (1280×577) with no mobile emulation, no screenshot, and the
fetch/localStorageJS primitives disabled. Mobile layouts are inferred from live DOM/CSS; the add-to-cart AJAX could not execute in-session, so the populated cart and full checkout steps are NOT UI-verified and are explicitly flagged "(verify)" — see §6. - Severity scale: Critical (revenue leak / checkout blocker), Major (materially suppresses conversion), Moderate (notable friction), Minor (polish). Effort: Low/Medium/High.
- Evidence basis: every finding below is traced to a
pageaudit/*.mdsection or a business report; no finding is invented. Corrections across sub-reports (e.g. "reviews are present on PLP cards, not absent site-wide") are reconciled.
2. The Binding Constraint: Traffic vs. Conversion
Per traffic-estimation.md (user-provided SimilarWeb, treated as ground truth): ~618 monthly visits, 100% India, mobile-dominant, bounce 54%, ~1.9 pages/visit. digital-brand-intelligence.md scores overall digital brand health 3.1/10 — driven by a critical-floor trust deficit (zero off-site reviews) and a distribution gap (rivals out-reach 280–700× on Instagram). ad-intelligence.md confirms ₹0 paid media; competitive-analysis.md confirms no Nykaa/Amazon/Flipkart/marketplace presence.
Implication for CRO priority:
- The biggest revenue lever is acquisition (marketplace distribution, first paid burst, creator/regional-language content), not on-site tinkering. A 10% on-site lift on 618 visits is ~62 visits; a 10× traffic lift is 6,180.
- However, two Critical on-site defects mean any traffic gained today would leak at checkout. The sequencing is: (a) stop the Critical leaks, (b) close the highest-leverage trust gaps (returns, reviews, FAQ), (c) invest in acquisition. Doing (c) before (a)/(b) burns spend on a broken funnel.
3. Conversion Funnel Health (stage by stage)
| Stage | Health | Key issues |
|---|---|---|
| Acquisition (off-site) | 🔴 Weak | Micro-tier traffic; no paid; no marketplace; brand-name collision with unrelated "Better Beauty" skincare hurts discoverability (business-analysis, competitive, ad-intel). |
| Landing / Homepage | 🟡 Moderate | Strong brand/story; but primary CTA "Customize" is low-emphasis text, no testimonials despite 4.5 badge, no first-purchase offer, founder name-overlap risk (homepage F1/F2/F3/F4). |
| Discovery (PLP) | 🟡 Moderate | Beautiful cards + real Judge.me ratings on single products (a strength); but ₹0 ghost products (Critical), no sort, no breadcrumbs, tone filter not shareable (plp F1–F5). |
| Product (PDP) | 🟡 Moderate | Excellent ingredients/FAQ accordions (strength); but ghost products leak into cross-sell (Critical), shade = same-tab reload (Major), bundle PDPs have zero reviews (Major), no breadcrumbs, no inline fulfilment badges (pdp F1–F9). |
| Cart & Checkout | 🔴 Poor (highest-intent) | Add-to-cart non-population (Critical, verify); ghost free-item path (Critical); GoKwik misconfigured (Major); drawer empty-state dead-end (Major); no express "Buy it now" (Moderate); guest-checkout/payment unverified (cart-checkout C1–C8). |
| Post-purchase / Support | 🟡 Moderate | Strong contact legibility (phone/email/GST/address consistent); but no shade-match return safety net (Major), no FAQ (Major), free-ship threshold & COD fee unspecified (Moderate), ToS "BLA BLI BLU" placeholder (Moderate), clinical-proof page under-exposed (support F1–F8). |
Funnel read: the brand is strong at story and substance (brand POV, clinical claim, ingredients, founder faces) and weak at transactional trust and mechanics (returns reassurance, reviews at decision points, working cart, discovery controls). A first-time buyer is persuaded by the narrative but blocked or anxious at the moment of purchase.
4. Consolidated Findings Ledger (severity-ranked)
Severity → Effort → Source → Recommendation. (Items marked verify require a real-device/browser confirmation.)
🔴 CRITICAL
| ID | Finding | Effort | Source | Recommendation |
|---|---|---|---|---|
| C1 | Add-to-Cart never populates the cart on any path (3 JS exceptions + GoKwik conflict suspected) | Low–Med (verify) | cart-checkout C1, pdp F4 | Confirm on a real device first. If live: kill the 3 JS exceptions (likely GoKwik/theme conflict) and restore cart-drawer AJAX; add a /cart fallback redirect if the drawer fails. |
| C2 | ₹0 "ghost" lip-liner products (-1 handles) published with enabled Add-to-Cart; leak onto PLP, Shop All, and every PDP cross-sell | Low | plp F1, pdp F1, cart-checkout C2 | Unpublish/delete all -1 duplicate products (roseline-1, pixel-red-1, merlot-1, nutmeg-1, deep-contour, terra-metric dup). Add a launch catalogue-hygiene check (no ₹0 published simples, no duplicate handles). |
🟠 MAJOR
| ID | Finding | Effort | Source | Recommendation |
|---|---|---|---|---|
| M1 | No shade-match / try-at-home safety net — refund policy forbids returns of opened/used products; exchange is damage-only. #1 objection for an unknown shade brand. | Med | support F1 | Add a limited satisfaction/shade-exchange allowance (e.g. 7-day unopened-or-swipe exchange, or a partial try guarantee). Soften the mandatory unboxing-video rule to damage claims only. |
| M2 | No FAQ / Help page exists, yet Contact invites users to a "Help & FAQs section" (dead reference). | Med | support F2, homepage F5 | Build a category-aware FAQ (shade match, "what if the shade is wrong," COD, delivery, patch-test/advisory); link from Contact + footer. Directly fills the homepage objection gap. |
| M3 | Bundle PDPs (₹999–₹4,099, highest AOV) have zero reviews — only a static, brand-asserted "4.5". | Low | pdp F3, plp F4 | Surface Judge.me on bundle PDPs/PLP, or remove the misleading static "4.5". The purchase page for the most expensive items must carry customer-validated trust. |
| M4 | Shade selection = hard same-tab navigation to 15 separate sibling products (no in-page variant swap). Full reload + scroll/cart-context loss on every shade tap; worse on mobile. | High | pdp F2, cart-checkout C8 | Convert shades to true Shopify variants (one product, 15 variant options) so selection is in-page and the cart carries the chosen shade without a reload. |
| M5 | GoKwik one-click-checkout accelerator installed but misconfigured ("0 buttons claimed"); dormant dead weight that may conflict with cart JS and is a latent OTP gate. | Low | cart-checkout C3 | Either remove GoKwik (kills dead JS + conflict risk) or intentionally configure it and decide the OTP gate deliberately. Don't leave it dormant. |
| M6 | Cart drawer empty-state is a dead-end ("Log in" / "Continue shopping" only) while the /cart page has a proper "You may also like" recovery carousel. | Low | cart-checkout C4 | Mirror the /cart recovery carousel into the drawer empty-state. |
| M7 | Homepage primary CTA "Customize" is low-emphasis text, not a high-contrast button; clinical banner CTA is outlined/low-emphasis. | Low | homepage F2 | Restyle "Customize" as a high-contrast button; make the bundle the hero CTA. |
| M8 | Homepage shows a "4.5" badge but no customer testimonials / review content despite the claim — trust is brand-asserted, not customer-validated. | Med | homepage F1 | Add a "what customers say" strip + surface review counts next to the 4.5 on homepage bundles. |
| M9 | No sort control on any PLP (no Featured/Price/Newest/Most-reviewed). With 15 shades at uniform ₹450, users can't reorder by social proof. | Low | plp F2 | Add Shopify "Sort by" (Featured, Price, Newest, Most reviewed). |
🟡 MODERATE
| ID | Finding | Effort | Source | Recommendation |
|---|---|---|---|---|
| N1 | Tone filter has no URL persistence/shareability (client-side only); fragile innerText fallback. | Med | plp F3 | Persist filter in URL (?tone=bolds); add active-filter chip + Clear; drop innerText fallback. |
| N2 | No breadcrumbs on any PLP or PDP. Weak orientation/information scent. | Low | plp F5, pdp F5 | Add Home / Shop All / Lipsticks / Spectrum trails. |
| N3 | No inline fulfilment badges in PDP buy box (free shipping / returns / COD / secure). | Low | pdp F6 | Add a 1-line fulfilment/returns badge under Add-to-cart. |
| N4 | Single-product reviews lack verified-buyer badge + customer photos (UGC). Beauty is visual. | Low | pdp F7 | Enable Judge.me verified-buyer badge; incentivise on-lips photo reviews. |
| N5 | Bundle primary "Add to cart" not gated on shade selection — risk of empty-box (₹999, no shades) orders. | Low | pdp F8 | Disable primary CTA until minimum shades chosen; show "X of N selected" counter. |
| N6 | No first-purchase / launch acquisition offer on homepage (no discount, free-ship threshold, or urgency beyond static "FAST SHIPPING"). | Low | homepage F3 | Add a launch offer (first-order discount or free liner over ₹X) in marquee/banner. |
| N7 | Free-shipping threshold & COD fee unspecified in Shipping policy; dense wall, no "at a glance" summary. | Low | support F3 | State free-ship threshold & COD fee; add a top-of-page summary block. |
| N8 | Clinical-report proof page (/pages/surveys) only reachable via About "View reports" — not on HP/PDP/footer. | Low | support F5 | Link the clinical-report page from the homepage clinical banner + PDPs. |
| N9 | Terms of Service "BLA BLI BLU" placeholder + duplicated paragraphs — visible professionalism defect on a legal page. | Low | support F4 | Replace placeholder with brand name; de-duplicate paragraphs. |
| N10 | No "Buy it now" / express shortcut on PDP — if the drawer breaks there is no bypass. | Low | cart-checkout C5 | Add Shopify-native "Buy it now" so a broken drawer can't fully block purchase. |
| N11 | No cart upsell / shipping-progress bar / trust badges in (populated) cart drawer. | Med | cart-checkout C6 | Add free-shipping threshold bar, payment/trust badges, and a "Pair it with" upsell to the populated cart. |
| N12 | Founder name-overlap (Naina/Prateek Ruhail) with the unrelated "Better Beauty" skincare brand unaddressed on HP/About. | Low | homepage F4, support F7 | Add one disambiguation line ("the lip-colour Better Beauty, AGAUE CONSULTING — unrelated to the skincare brand"). |
🔵 MINOR (polish; full list in sub-reports)
homepageF5/F6/F7/F8 (social "Launching soon" vs live store; footer/some image alt + unlabelled newsletter input; "More" mega-menu buries shades; no personalization).plpF6/F7 (no bottom-of-page SEO/educational block; uniform pricing).pdpF9/F10 (no visible cruelty-free/vegan badge; Argan/Macadamia nut-oil allergen nuance not flagged; no rating-distribution histogram).supportF6/F8 (Contact "Help & FAQs" dead ref + "we wil" typo + masked tel:; Privacy 50-paragraph wall no summary).cart-checkoutC7 (guest-checkout & payment methods unverified — confirm on real device).
5. Phased Prioritized Roadmap
P0 — Launch-blockers (do before spending a rupee on traffic)
- C2 — Delete/unpublish all ₹0
-1ghost products. (Hours, eliminates free-item + SEO risk.) - C1 — Real-device confirm add-to-cart; fix the 3 JS exceptions / GoKwik conflict; restore cart-drawer AJAX +
/cartfallback. (Days, but gates all revenue.) - M1 — Introduce a shade-exchange / limited satisfaction allowance. The single highest-leverage trust fix for an unknown shade brand.
P1 — High-ROI trust & discovery (weeks 1–4)
- M2 — Build the FAQ (preempts shade/return/COD/delivery objections).
- M3 — Surface reviews on bundle PDPs (highest-AOV, currently zero).
- M8 / M7 — Add "what customers say" strip + restyle "Customize" as a button on homepage.
- M9 / N1 / N2 — Add PLP sort + URL-persistent tone filter + breadcrumbs.
- N7 / N9 — Fix Shipping free-ship/COD clarity + ToS "BLA BLI BLU" placeholder.
P2 — Conversion mechanics & recovery (weeks 4–8)
- M5 / M6 / N10 / N11 — Decide GoKwik fate; mirror
/cartrecovery into drawer; add "Buy it now"; add cart upsell + shipping bar. - M4 — Convert shades to true variants (removes same-tab reload friction; big but high-impact).
- N3 / N4 / N5 / N8 — Inline fulfilment badges; verified-buyer + photo reviews; gate bundle CTA; expose clinical-report proof at decision points.
P3 — Growth upstream (parallel, owned by acquisition/marketing)
- Marketplace (Nykaa/Amazon/Flipkart) — the distribution gap vs rivals (
competitive). - First paid burst + regional-language/creator content (currently ₹0 paid;
ad-intel). - Brand-name disambiguation from the skincare "Better Beauty" in SERP/
AI-SEO(ai-seo-audit). - Social proof flywheel — drive the first real reviews/UGC to close the 3.1/10 brand-health trust floor (
digital-brand-intelligence).
6. Verification Status — What Is and Isn't Confirmed
Live-verified this session: empty-cart states (drawer + /cart); ghost-product ₹0 + enabled CTA on live PDPs; GoKwik "0 buttons claimed" log; the 3 JS exceptions; the non-population of the cart after genuine Add-to-Cart clicks on 3 paths; Judge.me presence on single-product PLP/PDP cards and absence on bundles; shade same-tab navigation; all 7 support/utility pages reachable with 0 broken links; contact-detail consistency.
NOT UI-verified (blocked by sandbox fetch/localStorage disable + no real device): populated cart line items, quantity AJAX, cart upsells, the native multi-step checkout (information/shipping/payment), guest-checkout gating, and payment-method list. These are flagged (verify) and must be confirmed on a real browser before launch sign-off. The add-to-cart non-population (C1) is the priority verification — it reproduced live but its root cause (site bug vs sandbox limitation) is ambiguous and must be resolved on a real device.
7. Cross-Cutting Strategic Notes
- Trust asymmetry. The brand tells you it's trustworthy (clinical banner, ingredients, founders) but shows little customer-validated proof (no reviews on homepage/bundles, no FAQ, no returns safety net, zero off-site reviews). For an unknown launch brand this is the core CRO problem — close M1/M2/M3/M8 before anything cosmetic.
- Brand-name collision. Search/social frequently return an unrelated "Better Beauty" skincare brand. This hurts discoverability and creates misattribution risk (N12, P3-14). Disambiguate explicitly and in SERP/
llms.txtassets. - Strength to protect. The ingredients-transparency layer (full INCI + key + free-from + application guide + FAQ accordion) genuinely exceeds the beauty-segment baseline and should not be diluted during redesign.
- Acquisition is the real ceiling. On-site CRO can recover maybe a few points of a tiny funnel; the 10–100× leverage is distribution + paid + marketplace. Fix the Critical leaks, then spend there.
Synthesis complete. All findings trace to pageaudit/homepage.md, pageaudit/plp.md, pageaudit/pdp.md, pageaudit/cart-checkout.md, pageaudit/support-and-utility.md, and the business/competitive/traffic/brand-intelligence reports in this workspace. Per-page evidence and self-checks remain in those files.