elephant.md

Personalization Roadmap

@NickBrooks-ks3lspecs
arlem

Status: Infrastructure Complete, Frontend Not Started Updated: February 2026 Data Source: 2024 Arlem Analytics (122 cart adders, 3,044 total visitors)


Current Status

Infrastructure (Complete)

ComponentStatusLocation
useVisitorSegment() hookImplementedweb/lib/hooks/use-visitor-segment.ts
useIsAtLeastSegment() helperImplementedweb/lib/hooks/use-visitor-segment.ts
Backend segment computationImplementedBigQuery scheduled job (hourly)
Cosmos DB reverse syncImplementedanalytics/src/functions/scheduledBigQuerySync.ts
Tracking API segment responseImplementedanalytics/src/functions/httpLogEvent.ts
Frontend segment storageImplementedweb/lib/events/post-event-data.ts (localStorage _as key)

Frontend Usage (Not Started)

No components currently consume the useVisitorSegment() hook. The hook exists and works, but is unused.

Comparison: The useLocalizedText() hook (from lib/hooks/use-country.ts) demonstrates the intended pattern and is successfully used in 4 components.


Segment Model

Segments are computed hourly in BigQuery and synced to Cosmos DB. The frontend reads them via localStorage (_as key).

SegmentCodeCriteriaPsychology
Cold1< 2 sessions AND < 5 eventsKnows nothing, high bounce risk
Interested22+ sessions OR 5+ eventsCurious, actively exploring
Warm3Has AddToCart eventMentally engaged, researching
Hot4Has ProceedToCheckout eventCommitted but stuck
Customer5Has Purchase eventKnows and trusts brand

Match the Message to the Mindset

SegmentVisitor NeedsSite Should Provide
ColdTrust, education, value propBrand story, trust badges, social proof
InterestedGuidance, answers, comparisonSize guide, FAQ, product recommendations
WarmConfidence, validationReviews, UGC, guarantees, social proof
HotFriction removal, urgencyFree shipping progress, stock alerts, checkout simplification
CustomerRecognition, valueLoyalty perks, cross-sells, referral program

The Opportunity

Industry Benchmarks

MetricImprovementSource
Personalized CTAs202% better conversionHubSpot (330K CTAs analysed)
Product recommendationsUp to 320% conversion increaseVarious studies
Brands excelling at personalization40% more revenueEpsilon study
Exit-intent cart abandonment popups17.12% conversion rateOptiMonk

2024 Data: We’re Losing High-Intent Visitors

37% of cart adders needed multiple visits before adding to cart. We showed them the exact same experience every time.

CART ADDER DISTRIBUTION (122 real cart adders)
══════════════════════════════════════════════════════════════

Added to cart on first visit:   77 (63%)  → Decisive buyers
Needed 2 sessions:              23 (19%)  → Quick returners
Needed 3 sessions:               5 (4%)   → Considering
Needed 4+ sessions:             17 (14%)  → HIGH INTENT, STUCK

Of the 17 high-intent visitors (4+ sessions):
├── Average sessions: 7.8
├── Longest journey: 23 sessions over 126 days
├── Estimated value: ~$6,000+ in cart additions
└── Conversions from personalization: 0 (we didn't have any)

Case Study: The 23-Session Visitor

A Sydney iPhone user visited 23 times over 126 days (July - November 2024):

  • Session 1: Added Boucle Bedhead (~$350) + Neapolitan Cushion (~$100) to cart
  • Sessions 2-22: Returned repeatedly, viewed same products
  • Session 23: Final visit, then disappeared
  • Cart value: ~$450
  • Outcome: Abandoned

What we showed: Standard site, 23 times What we should have shown:

VisitPersonalization
2“Welcome back! Your Boucle Bedhead is still in your cart”
3“Still thinking about it? Here’s what customers say…” + testimonials
4“Questions about sizing? I’m Emily, happy to help” + chat prompt
5“Here’s 10% off to help you decide: COMEBACK10”
6+Persistent discount banner + urgency messaging

Implementation Touchpoints

35+ personalization opportunities identified across the site:

Priority 1: Quick Wins (High Impact, Low Effort)

Announcement Bar

File: components/layout/announcement-bar.tsx

SegmentMessage
Cold“We’re reopening March 2026. Get 10% off - Join the waitlist”
Interested“Welcome back! Join our waitlist for 10% off”
Warm“We saved your 10% discount. Add to cart to claim it”
Hot“Your cart is waiting - complete your order for 10% off”
Customer“Welcome back! Exclusive 15% loyalty discount: FAMILY15”

Add to Cart Button

File: components/cart/add-to-cart.tsx

SegmentButton Text
Cold/Interested“Add to Cart”
Warm“Add to Cart - 10% Off Today”
Hot“Complete Your Order”
Customer“Add Another”

Hero Section

File: app/pages/home/header-img.tsx

SegmentHeadlineCTA
Cold“The Bedhead Cushion That Changes Everything”“See How It Works”
Interested“Find Your Perfect Bedhead”“Compare Sizes”
Warm“Join 500+ Australian Homes”“Read Reviews”
Hot“Your Bedroom Transformation Awaits”“Complete Order”
Customer“Welcome Back”“Shop New Arrivals”

Trust Strip

File: app/pages/home/hero-trust-strip.tsx

SegmentEnhancement
ColdKeep as-is (all trust signals)
InterestedAdd “X people viewing now”
WarmEmphasize “30-Day Easy Returns”
HotShow “Your cart is saved”
CustomerShow “Thank you for being a customer”

Priority 2: Conversion Optimization (Medium Effort)

  • Free Shipping Progress Bar - Progress bars increase threshold conversion by 15-25%
  • Exit-Intent Popup - Cart abandonment popups convert at 17.12%
  • Review Section Repositioning - Move above fold for Warm+ segments
  • Product Card Badges - “You viewed this”, “10% off for you”, “In your cart”

Priority 3: Deep Personalization (Higher Effort)

  • Product Recommendations Reordering - Previously viewed first for returning visitors
  • Section Reordering/Condensing - Skip educational content for Warm+ visitors
  • “Find Your Bedhead” Quiz - Zero-party data collection for Cold/Interested

Technical Pattern

Based on the existing useCountry() pattern:

'use client';

import { useVisitorSegment, useIsAtLeastSegment } from 'lib/hooks/use-visitor-segment';

export function PersonalizedHero() {
  const segment = useVisitorSegment();
  const isWarmOrHigher = useIsAtLeastSegment('Warm');

  const content = {
    Cold: {
      headline: 'The Bedhead Cushion That Changes Everything',
      cta: 'See How It Works'
    },
    Interested: {
      headline: 'Find Your Perfect Bedhead',
      cta: 'Compare Sizes'
    },
    Warm: {
      headline: 'Join 500+ Australian Homes',
      cta: 'Read Reviews'
    },
    Hot: {
      headline: 'Your Bedroom Transformation Awaits',
      cta: 'Complete Order'
    },
    Customer: {
      headline: 'Welcome Back',
      cta: 'Shop New Arrivals'
    }
  };

  const { headline, cta } = content[segment];

  return (
    <section>
      <h1>{headline}</h1>
      {isWarmOrHigher && <UrgencyBanner />}
      <Button>{cta}</Button>
    </section>
  );
}

Implementation Phases

Phase 0: Infrastructure (Complete)

  • useVisitorSegment() hook implementation
  • BigQuery segment computation (hourly scheduled job)
  • Cosmos DB reverse sync (BigQuery -> Cosmos)
  • Tracking API segment response
  • Frontend localStorage storage

Phase 1: Quick Wins (Not Started)

  • Announcement bar personalization
  • Add-to-cart button text changes
  • Hero headline/CTA variations
  • Trust strip enhancements

Phase 2: Conversion Optimization (Not Started)

  • Free shipping progress bar
  • Exit-intent popup implementation
  • Review section repositioning
  • Product card badges

Phase 3: Deep Personalization (Not Started)

  • Prelaunch modal bypass logic
  • Product recommendations reordering
  • Section condensing for warm/hot visitors
  • Customer loyalty features

Phase 4: Zero-Party Data (Not Started)

  • “Find Your Bedhead” quiz design
  • Quiz implementation
  • Quiz data integration with segments
  • Email personalization based on quiz

Success Metrics

SegmentPrimary MetricTarget
ColdBounce rate, email capture<50% bounce, >5% capture
InterestedPages per session>4 pages
WarmAdd-to-cart rate>10% ATC
HotCheckout completion>60% complete
CustomerRepeat purchase rate>20% repeat

Estimated Impact (Based on 2024 Data)

ScenarioCalculationOutcome
Convert 30% more of 4+ session visitors17 × 30% × $350+$1,785
Convert 20% more of 2-3 session visitors28 × 20% × $350+$1,960
Capture emails from 10% of browsers3,044 × 10%+304 subscribers

Conservative estimate: $3,000-5,000 additional revenue from personalization alone.


Discount Timing Strategy

Based on 2024 cart adder behavior:

SessionActionRationale
1-2No discount63% convert without one
3Soft offer for cart abandoners only“10% off to complete your order”
4+Proactive discount for ALL returning visitorsThey’re clearly stuck
5+ with cart abandonAggressive discount + chat helpHighest value targets

Privacy Compliance

  1. First-party data only - Segments based on on-site behavior stored in localStorage
  2. No third-party cookies - Tracking via Arlem Analytics
  3. Server-side computation - BigQuery processes data server-side
  4. Zero-party data future - Quiz-based personalization is explicitly consented

Next Steps

  1. Approve Phase 1 implementation items
  2. Begin with announcement bar and hero personalization
  3. Set up A/B testing to measure impact by segment
  4. Review metrics weekly and iterate

Consolidated from CONDITIONAL-RENDERING-PROPOSAL-2026.md and VISITOR-JOURNEY-PERSONALIZATION.md