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:

  1. 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.
  2. ₹0 "ghost" lip-liner products (-1 handles: 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 + /cart page, 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/localStorage JS 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/*.md section 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)

StageHealthKey issues
Acquisition (off-site)🔴 WeakMicro-tier traffic; no paid; no marketplace; brand-name collision with unrelated "Better Beauty" skincare hurts discoverability (business-analysis, competitive, ad-intel).
Landing / Homepage🟡 ModerateStrong 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)🟡 ModerateBeautiful 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)🟡 ModerateExcellent 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🟡 ModerateStrong 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

IDFindingEffortSourceRecommendation
C1Add-to-Cart never populates the cart on any path (3 JS exceptions + GoKwik conflict suspected)Low–Med (verify)cart-checkout C1, pdp F4Confirm 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-sellLowplp F1, pdp F1, cart-checkout C2Unpublish/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

IDFindingEffortSourceRecommendation
M1No 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.Medsupport F1Add 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.
M2No FAQ / Help page exists, yet Contact invites users to a "Help & FAQs section" (dead reference).Medsupport F2, homepage F5Build 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.
M3Bundle PDPs (₹999–₹4,099, highest AOV) have zero reviews — only a static, brand-asserted "4.5".Lowpdp F3, plp F4Surface 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.
M4Shade 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.Highpdp F2, cart-checkout C8Convert 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.
M5GoKwik 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.Lowcart-checkout C3Either remove GoKwik (kills dead JS + conflict risk) or intentionally configure it and decide the OTP gate deliberately. Don't leave it dormant.
M6Cart 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.Lowcart-checkout C4Mirror the /cart recovery carousel into the drawer empty-state.
M7Homepage primary CTA "Customize" is low-emphasis text, not a high-contrast button; clinical banner CTA is outlined/low-emphasis.Lowhomepage F2Restyle "Customize" as a high-contrast button; make the bundle the hero CTA.
M8Homepage shows a "4.5" badge but no customer testimonials / review content despite the claim — trust is brand-asserted, not customer-validated.Medhomepage F1Add a "what customers say" strip + surface review counts next to the 4.5 on homepage bundles.
M9No sort control on any PLP (no Featured/Price/Newest/Most-reviewed). With 15 shades at uniform ₹450, users can't reorder by social proof.Lowplp F2Add Shopify "Sort by" (Featured, Price, Newest, Most reviewed).

🟡 MODERATE

IDFindingEffortSourceRecommendation
N1Tone filter has no URL persistence/shareability (client-side only); fragile innerText fallback.Medplp F3Persist filter in URL (?tone=bolds); add active-filter chip + Clear; drop innerText fallback.
N2No breadcrumbs on any PLP or PDP. Weak orientation/information scent.Lowplp F5, pdp F5Add Home / Shop All / Lipsticks / Spectrum trails.
N3No inline fulfilment badges in PDP buy box (free shipping / returns / COD / secure).Lowpdp F6Add a 1-line fulfilment/returns badge under Add-to-cart.
N4Single-product reviews lack verified-buyer badge + customer photos (UGC). Beauty is visual.Lowpdp F7Enable Judge.me verified-buyer badge; incentivise on-lips photo reviews.
N5Bundle primary "Add to cart" not gated on shade selection — risk of empty-box (₹999, no shades) orders.Lowpdp F8Disable primary CTA until minimum shades chosen; show "X of N selected" counter.
N6No first-purchase / launch acquisition offer on homepage (no discount, free-ship threshold, or urgency beyond static "FAST SHIPPING").Lowhomepage F3Add a launch offer (first-order discount or free liner over ₹X) in marquee/banner.
N7Free-shipping threshold & COD fee unspecified in Shipping policy; dense wall, no "at a glance" summary.Lowsupport F3State free-ship threshold & COD fee; add a top-of-page summary block.
N8Clinical-report proof page (/pages/surveys) only reachable via About "View reports" — not on HP/PDP/footer.Lowsupport F5Link the clinical-report page from the homepage clinical banner + PDPs.
N9Terms of Service "BLA BLI BLU" placeholder + duplicated paragraphs — visible professionalism defect on a legal page.Lowsupport F4Replace placeholder with brand name; de-duplicate paragraphs.
N10No "Buy it now" / express shortcut on PDP — if the drawer breaks there is no bypass.Lowcart-checkout C5Add Shopify-native "Buy it now" so a broken drawer can't fully block purchase.
N11No cart upsell / shipping-progress bar / trust badges in (populated) cart drawer.Medcart-checkout C6Add free-shipping threshold bar, payment/trust badges, and a "Pair it with" upsell to the populated cart.
N12Founder name-overlap (Naina/Prateek Ruhail) with the unrelated "Better Beauty" skincare brand unaddressed on HP/About.Lowhomepage F4, support F7Add one disambiguation line ("the lip-colour Better Beauty, AGAUE CONSULTING — unrelated to the skincare brand").

🔵 MINOR (polish; full list in sub-reports)

  • homepage F5/F6/F7/F8 (social "Launching soon" vs live store; footer/some image alt + unlabelled newsletter input; "More" mega-menu buries shades; no personalization).
  • plp F6/F7 (no bottom-of-page SEO/educational block; uniform pricing).
  • pdp F9/F10 (no visible cruelty-free/vegan badge; Argan/Macadamia nut-oil allergen nuance not flagged; no rating-distribution histogram).
  • support F6/F8 (Contact "Help & FAQs" dead ref + "we wil" typo + masked tel:; Privacy 50-paragraph wall no summary).
  • cart-checkout C7 (guest-checkout & payment methods unverified — confirm on real device).

5. Phased Prioritized Roadmap

P0 — Launch-blockers (do before spending a rupee on traffic)

  1. C2 — Delete/unpublish all ₹0 -1 ghost products. (Hours, eliminates free-item + SEO risk.)
  2. C1 — Real-device confirm add-to-cart; fix the 3 JS exceptions / GoKwik conflict; restore cart-drawer AJAX + /cart fallback. (Days, but gates all revenue.)
  3. 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)

  1. M2 — Build the FAQ (preempts shade/return/COD/delivery objections).
  2. M3 — Surface reviews on bundle PDPs (highest-AOV, currently zero).
  3. M8 / M7 — Add "what customers say" strip + restyle "Customize" as a button on homepage.
  4. M9 / N1 / N2 — Add PLP sort + URL-persistent tone filter + breadcrumbs.
  5. N7 / N9 — Fix Shipping free-ship/COD clarity + ToS "BLA BLI BLU" placeholder.

P2 — Conversion mechanics & recovery (weeks 4–8)

  1. M5 / M6 / N10 / N11 — Decide GoKwik fate; mirror /cart recovery into drawer; add "Buy it now"; add cart upsell + shipping bar.
  2. M4 — Convert shades to true variants (removes same-tab reload friction; big but high-impact).
  3. 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)

  1. Marketplace (Nykaa/Amazon/Flipkart) — the distribution gap vs rivals (competitive).
  2. First paid burst + regional-language/creator content (currently ₹0 paid; ad-intel).
  3. Brand-name disambiguation from the skincare "Better Beauty" in SERP/AI-SEO (ai-seo-audit).
  4. 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.txt assets.
  • 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.