--- name: conversion-patterns description: Conversion rate optimization (CRO) patterns for Next.js applications including CTA design, landing page layouts, trust signals, form optimization, pricing tables, and A/B testing. Use when building landing pages, optimizing CTAs, adding social proof, or improving conversion funnels. allowed-tools: Read, Write, Edit, Grep, Glob, Bash --- # Conversion Patterns **Purpose:** Implement proven conversion rate optimization patterns for Next.js applications to maximize signups, sales, and engagement. **Activation Triggers:** - Building landing pages - Optimizing call-to-action buttons - Adding social proof elements - Creating pricing tables - Implementing lead capture forms - A/B testing setup - Conversion tracking implementation **Key Resources:** - `templates/hero-section.tsx` - High-converting hero patterns - `templates/cta-components.tsx` - CTA button variants - `templates/pricing-table.tsx` - Pricing comparison table - `templates/testimonials.tsx` - Social proof components - `examples/landing-page-structure.md` - Complete landing page example ## Conversion Psychology ### Core Principles 1. **Clarity Over Cleverness** - Clear value proposition in 5 seconds 2. **Reduce Anxiety** - Trust signals, guarantees, social proof 3. **Create Urgency** - Time-limited offers, scarcity (ethical) 4. **Remove Friction** - Minimal form fields, clear CTAs ### Conversion Hierarchy ``` Attention → Interest → Desire → Action (AIDA) ↓ ↓ ↓ ↓ Hero Features Proof CTA ``` ## Hero Section Patterns ### Pattern 1: Benefit-Focused Hero ```typescript // components/marketing/HeroSection.tsx import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { ArrowRight, Star } from 'lucide-react' export function HeroSection() { return (
{/* Background gradient */}
{/* Social Proof Badge */} Rated #1 by 50,000+ users {/* Main Headline - Benefit Focused */}

Build Websites That{' '} Convert

{/* Subheadline - How It Works */}

AI-powered tools that help you create high-converting landing pages in minutes, not days. No coding required.

{/* CTA Buttons */}
{/* Trust Signals */}

✓ No credit card required ✓ 14-day free trial ✓ Cancel anytime

) } ``` ### Pattern 2: Problem-Agitation Hero ```typescript export function ProblemAgitationHero() { return (
{/* Problem Statement */}

Tired of landing pages that don't convert?

{/* Agitation */}

Stop Losing Customers to{' '} Bad Design

{/* Solution */}

Our AI analyzes 100,000+ high-converting pages to build landing pages that actually work.

) } ``` ## CTA Component Patterns ### Primary CTA with Social Proof ```typescript // components/marketing/CTAWithProof.tsx interface CTAProps { text: string userCount: number avatars: string[] } export function CTAWithProof({ text, userCount, avatars }: CTAProps) { return (
{/* Social Proof */}
{avatars.slice(0, 4).map((src, i) => ( ))}
Join {userCount.toLocaleString()}+ users
) } ``` ### Sticky Mobile CTA ```typescript // components/marketing/StickyCTA.tsx 'use client' import { useState, useEffect } from 'react' import { Button } from '@/components/ui/button' export function StickyCTA({ text = 'Get Started' }) { const [show, setShow] = useState(false) useEffect(() => { const handleScroll = () => { setShow(window.scrollY > 500) } window.addEventListener('scroll', handleScroll) return () => window.removeEventListener('scroll', handleScroll) }, []) if (!show) return null return (
) } ``` ## Pricing Table Patterns ### Three-Tier Pricing ```typescript // components/marketing/PricingTable.tsx const plans = [ { name: 'Starter', price: { monthly: 29, yearly: 24 }, description: 'Perfect for individuals', features: ['5 projects', '10GB storage', 'Email support'], cta: 'Start Free Trial', popular: false, }, { name: 'Pro', price: { monthly: 79, yearly: 66 }, description: 'For growing teams', features: [ 'Unlimited projects', '100GB storage', 'Priority support', 'Advanced analytics', 'Custom domains', ], cta: 'Start Free Trial', popular: true, }, { name: 'Enterprise', price: { monthly: 199, yearly: 166 }, description: 'For large organizations', features: [ 'Everything in Pro', 'Unlimited storage', 'Dedicated support', 'Custom integrations', 'SLA guarantee', 'SSO & SAML', ], cta: 'Contact Sales', popular: false, }, ] export function PricingTable() { const [yearly, setYearly] = useState(false) return (
{/* Header */}

Simple, Transparent Pricing

Start free. Upgrade when you need more.

{/* Billing Toggle */}
Monthly Yearly Save 20%
{/* Pricing Cards */}
{plans.map((plan) => ( {plan.popular && ( Most Popular )} {plan.name} {plan.description}
${yearly ? plan.price.yearly : plan.price.monthly} /month {yearly && (

billed annually

)}
    {plan.features.map((feature) => (
  • {feature}
  • ))}
))}
{/* Guarantee */}

30-day money-back guarantee. No questions asked.

) } ``` ## Social Proof Patterns ### Logo Cloud ```typescript // components/marketing/LogoCloud.tsx export function LogoCloud() { const logos = [ { name: 'Google', src: '/logos/google.svg' }, { name: 'Microsoft', src: '/logos/microsoft.svg' }, { name: 'Amazon', src: '/logos/amazon.svg' }, { name: 'Meta', src: '/logos/meta.svg' }, { name: 'Netflix', src: '/logos/netflix.svg' }, ] return (

Trusted by teams at the world's best companies

{logos.map((logo) => ( {logo.name} ))}
) } ``` ### Testimonial Cards ```typescript // components/marketing/Testimonials.tsx interface Testimonial { quote: string author: string title: string company: string avatar: string rating: number } export function TestimonialCard({ testimonial }: { testimonial: Testimonial }) { return ( {/* Rating */}
{[...Array(5)].map((_, i) => ( ))}
{/* Quote */}

"{testimonial.quote}"

{/* Author */}
{testimonial.author}

{testimonial.author}

{testimonial.title}, {testimonial.company}

) } ``` ## Form Optimization ### Multi-Step Lead Form ```typescript // components/marketing/MultiStepForm.tsx 'use client' import { useState } from 'react' export function MultiStepForm() { const [step, setStep] = useState(1) const totalSteps = 3 return ( Get Started {/* Progress Bar */}
{[...Array(totalSteps)].map((_, i) => (
))}

Step {step} of {totalSteps}

{step === 1 && (
)} {step === 2 && (
)} {step === 3 && (
)}

By continuing, you agree to our Terms and Privacy Policy

Your data is secure
) } ``` ## Urgency Patterns ### Countdown Timer ```typescript // components/marketing/CountdownTimer.tsx 'use client' import { useState, useEffect } from 'react' interface CountdownProps { endDate: Date label?: string } export function CountdownTimer({ endDate, label = 'Offer ends in' }: CountdownProps) { const [timeLeft, setTimeLeft] = useState(calculateTimeLeft()) function calculateTimeLeft() { const difference = +endDate - +new Date() if (difference <= 0) return null return { days: Math.floor(difference / (1000 * 60 * 60 * 24)), hours: Math.floor((difference / (1000 * 60 * 60)) % 24), minutes: Math.floor((difference / 1000 / 60) % 60), seconds: Math.floor((difference / 1000) % 60), } } useEffect(() => { const timer = setInterval(() => { setTimeLeft(calculateTimeLeft()) }, 1000) return () => clearInterval(timer) }, [endDate]) if (!timeLeft) return null return (

{label}

{Object.entries(timeLeft).map(([unit, value]) => (
{String(value).padStart(2, '0')}
{unit}
))}
) } ``` ## A/B Testing ### Simple A/B Hook ```typescript // hooks/useABTest.ts 'use client' import { useEffect, useState } from 'react' export function useABTest(testName: string): 'A' | 'B' { const [variant, setVariant] = useState<'A' | 'B'>('A') useEffect(() => { // Check localStorage for existing assignment const stored = localStorage.getItem(`ab_${testName}`) if (stored === 'A' || stored === 'B') { setVariant(stored) return } // Assign randomly const assigned = Math.random() < 0.5 ? 'A' : 'B' localStorage.setItem(`ab_${testName}`, assigned) setVariant(assigned) // Track assignment (GA4, etc.) if (typeof window.gtag !== 'undefined') { window.gtag('event', 'experiment_assignment', { experiment_name: testName, variant: assigned, }) } }, [testName]) return variant } // Usage function CTASection() { const variant = useABTest('cta_text_2024') return ( ) } ``` ## Conversion Checklist ```bash # Run conversion audit ./scripts/conversion-audit.sh # Checks: # ✓ Primary CTA above fold # ✓ CTA text is action-oriented # ✓ Trust signals present (logos, testimonials) # ✓ Social proof with numbers # ✓ Form has minimal fields # ✓ Mobile CTA visible # ✓ Pricing has "Most Popular" # ✓ Money-back guarantee visible # ✓ FAQ addresses objections ```