Acquisition Channels

Build and optimize customer acquisition channels including product-led growth, content marketing, paid acquisition, and partnerships

The Acquisition Channels workflow helps you identify, test, and scale the customer acquisition strategies that work for your product. From product-led growth to paid advertising, this guide provides frameworks for prioritizing and optimizing your growth channels.

Overview#

PropertyValue
Channels4 main categories
TierFree
Typical DurationOngoing optimization
Best ForPost-PMF startups ready to scale

Outcomes#

A successful acquisition workflow delivers:

  • Prioritized list of channels to test
  • Frameworks for evaluating channel performance
  • Implementation guides for each channel
  • CAC and payback benchmarks
  • Scalable growth playbook

Channel Categories#

┌─────────────────────────────────────────────────────────────────┐ │ ACQUISITION CHANNELS │ ├─────────────────┬─────────────────┬─────────────────┬───────────┤ │ PRODUCT-LED │ CONTENT │ PAID │ PARTNER │ ├─────────────────┼─────────────────┼─────────────────┼───────────┤ │ • Freemium │ • SEO/Blog │ • Search Ads │ • API │ │ • Free trial │ • Social │ • Social Ads │ • Resell │ │ • Viral loops │ • Video │ • Retargeting │ • Referral│ │ • Open source │ • Community │ • Sponsorships │ • Affiliate│ └─────────────────┴─────────────────┴─────────────────┴───────────┘ │ │ │ │ ▼ ▼ ▼ ▼ Low CAC Medium CAC High CAC Variable CAC Long setup Long setup Fast setup Medium setup

Channel 1: Product-Led Growth (PLG)#

PLG Models#

Freemium:

  • Free forever tier with limited features
  • Conversion to paid for advanced features
  • Examples: Slack, Notion, Figma

Free Trial:

  • Full access for limited time
  • Requires payment to continue
  • Examples: Netflix, Salesforce

Viral Loops:

  • Users invite others as part of product use
  • Built-in growth mechanism
  • Examples: Dropbox, Calendly

Implementing Freemium#

1// lib/plans.ts 2export const plans = { 3 free: { 4 name: 'Free', 5 price: 0, 6 limits: { 7 projects: 3, 8 members: 1, 9 storage: '100MB', 10 features: ['basic_analytics', 'email_support'], 11 }, 12 }, 13 pro: { 14 name: 'Pro', 15 price: 29, 16 limits: { 17 projects: Infinity, 18 members: 10, 19 storage: '10GB', 20 features: ['advanced_analytics', 'priority_support', 'api_access'], 21 }, 22 }, 23 team: { 24 name: 'Team', 25 price: 99, 26 limits: { 27 projects: Infinity, 28 members: Infinity, 29 storage: '100GB', 30 features: ['all', 'sso', 'audit_logs', 'dedicated_support'], 31 }, 32 }, 33};

Upgrade Triggers:

1// components/UpgradeTrigger.tsx 2export function checkUpgradeTrigger(usage: Usage, plan: Plan) { 3 const triggers = []; 4 5 // Approaching limits 6 if (usage.projects >= plan.limits.projects * 0.8) { 7 triggers.push({ 8 type: 'limit_approaching', 9 message: `You've used ${usage.projects} of ${plan.limits.projects} projects`, 10 }); 11 } 12 13 // Feature gate 14 if (usage.wantedFeature && !plan.limits.features.includes(usage.wantedFeature)) { 15 triggers.push({ 16 type: 'feature_gate', 17 message: `Upgrade to unlock ${usage.wantedFeature}`, 18 }); 19 } 20 21 // Value realization 22 if (usage.daysActive > 7 && usage.actionsCompleted > 50) { 23 triggers.push({ 24 type: 'value_realized', 25 message: 'You're getting great value - upgrade for even more', 26 }); 27 } 28 29 return triggers; 30}

Viral Mechanics#

Referral Program:

1// app/api/referrals/route.ts 2export async function POST(request: NextRequest) { 3 const session = await auth(); 4 const { referredEmail } = await request.json(); 5 6 // Create referral 7 const referral = await prisma.referral.create({ 8 data: { 9 referrerId: session.user.id, 10 referredEmail, 11 code: generateCode(), 12 status: 'PENDING', 13 }, 14 }); 15 16 // Send invite email 17 await sendReferralEmail(referredEmail, referral.code, session.user.name); 18 19 return NextResponse.json({ success: true, code: referral.code }); 20} 21 22// When referred user signs up 23export async function claimReferral(userId: string, code: string) { 24 const referral = await prisma.referral.update({ 25 where: { code, status: 'PENDING' }, 26 data: { 27 referredId: userId, 28 status: 'COMPLETED', 29 completedAt: new Date(), 30 }, 31 }); 32 33 // Reward both parties 34 await Promise.all([ 35 addCredits(referral.referrerId, 100), // Referrer gets credits 36 addCredits(userId, 50), // Referred gets credits 37 ]); 38}

PLG Metrics#

MetricDefinitionTarget
Free to Paid Conversion% of free users who convert2-5%
Time to ValueTime to first "aha" moment< 5 minutes
Viral CoefficientNew users per existing user> 1.0
Activation Rate% completing key action> 40%

Channel 2: Content Marketing#

Content Strategy Framework#

Content Pillars:

  1. Educational - How to solve problems (SEO)
  2. Thought Leadership - Industry perspectives
  3. Product - Feature announcements, tutorials
  4. Social Proof - Case studies, testimonials

SEO Implementation#

Blog Post Schema:

1// types/content.ts 2interface BlogPost { 3 slug: string; 4 title: string; 5 description: string; 6 content: string; 7 keywords: string[]; 8 publishedAt: Date; 9 author: Author; 10 category: string; 11 readingTime: number; 12} 13 14// Generate SEO metadata 15export function generateSEOMetadata(post: BlogPost) { 16 return { 17 title: `${post.title} | Your Company Blog`, 18 description: post.description, 19 openGraph: { 20 title: post.title, 21 description: post.description, 22 type: 'article', 23 publishedTime: post.publishedAt.toISOString(), 24 authors: [post.author.name], 25 }, 26 keywords: post.keywords.join(', '), 27 }; 28}

Content Calendar:

WeekEducationalProductSocial Proof
1How-to guideFeature spotlight
2Industry trendsCustomer story
3TutorialIntegration guide
4Best practicesCase study

Social Media Strategy#

Platform Selection:

PlatformBest ForContent Type
LinkedInB2B, professionalThought leadership
Twitter/XTech, real-timeProduct updates, engagement
YouTubeTutorials, demosEducational video
TikTokB2C, younger audienceShort-form, trending

Content Metrics#

MetricDefinitionTarget
Organic TrafficVisitors from search10%+ MoM growth
Time on PageEngagement indicator> 3 minutes
Conversion RateVisitors to signups2-5%
BacklinksExternal links to contentGrowing

Channel 3: Paid Acquisition#

Channel Selection#

Search Ads (Google, Bing):

  • High intent traffic
  • Best for known problem/solution
  • Competitive keywords can be expensive

Social Ads (Meta, LinkedIn, Twitter):

  • Awareness and consideration
  • Good targeting options
  • Works for creating demand

Retargeting:

  • Re-engage website visitors
  • High conversion rates
  • Lower cost per acquisition

Campaign Structure#

1// Campaign organization 2const campaignStructure = { 3 awareness: { 4 objective: 'reach', 5 audiences: ['lookalike', 'interest_based'], 6 content: ['educational_videos', 'blog_posts'], 7 budget: '20%', 8 }, 9 consideration: { 10 objective: 'traffic', 11 audiences: ['website_visitors', 'engaged_social'], 12 content: ['feature_highlights', 'comparisons'], 13 budget: '30%', 14 }, 15 conversion: { 16 objective: 'conversions', 17 audiences: ['high_intent', 'trial_users', 'cart_abandoners'], 18 content: ['testimonials', 'offers', 'demos'], 19 budget: '50%', 20 }, 21};

Landing Page Optimization#

Test these elements:

  • Headline variations
  • CTA button text and color
  • Social proof placement
  • Form length
  • Page length
1// A/B test implementation 2export function LandingPage({ variant }: { variant: 'A' | 'B' }) { 3 const headlines = { 4 A: 'Build faster with AI-powered development', 5 B: 'Ship 10x faster than your competition', 6 }; 7 8 // Track which variant user sees 9 useEffect(() => { 10 analytics.track('landing_page_view', { variant }); 11 }, [variant]); 12 13 return ( 14 <h1>{headlines[variant]}</h1> 15 ); 16}
MetricDefinitionTarget
CACCost to acquire customer< 1/3 of LTV
ROASReturn on ad spend> 3x
CTRClick-through rate> 2%
CVRConversion rate> 5%
PaybackTime to recover CAC< 12 months

Channel 4: Partnerships#

Partnership Types#

Integration Partners:

  • Build into other products' ecosystems
  • Examples: Slack apps, Shopify plugins

Referral Partners:

  • Other companies refer customers
  • Revenue share or flat fee

Reseller Partners:

  • Partners sell your product
  • Higher touch, enterprise focused

Affiliate Partners:

  • Individuals promote your product
  • Commission-based

Integration Partnership#

1// Building an integration partner program 2interface PartnerIntegration { 3 partnerId: string; 4 partnerName: string; 5 integrationType: 'oauth' | 'api_key' | 'webhook'; 6 apiVersion: string; 7 endpoints: string[]; 8 rateLimits: RateLimit; 9 documentation: string; 10} 11 12// Track partner-sourced users 13async function trackPartnerReferral(userId: string, partnerId: string) { 14 await prisma.userAttribution.create({ 15 data: { 16 userId, 17 source: 'partner', 18 partnerId, 19 createdAt: new Date(), 20 }, 21 }); 22 23 // Calculate and record partner revenue share 24 // when user converts to paid 25}

Affiliate Program Setup#

1// lib/affiliates.ts 2interface AffiliateConfig { 3 commissionRate: number; // Percentage of first payment 4 cookieDuration: number; // Days to track attribution 5 minimumPayout: number; // Minimum balance to withdraw 6 paymentSchedule: 'monthly' | 'weekly'; 7} 8 9const affiliateConfig: AffiliateConfig = { 10 commissionRate: 0.20, // 20% 11 cookieDuration: 30, 12 minimumPayout: 100, 13 paymentSchedule: 'monthly', 14}; 15 16// Track affiliate conversion 17async function trackAffiliateConversion( 18 userId: string, 19 affiliateId: string, 20 amount: number 21) { 22 const commission = amount * affiliateConfig.commissionRate; 23 24 await prisma.affiliateEarning.create({ 25 data: { 26 affiliateId, 27 referredUserId: userId, 28 amount, 29 commission, 30 status: 'PENDING', 31 }, 32 }); 33}

Channel Prioritization Framework#

ICE Scoring#

Rate each channel on:

  • Impact - Potential effect (1-10)
  • Confidence - Certainty it'll work (1-10)
  • Ease - Difficulty to implement (1-10)
ICE Score = (Impact + Confidence + Ease) / 3
ChannelImpactConfidenceEaseICE Score
SEO/Blog8656.3
Product viral loop9546.0
Google Ads7877.3
Integration partner7535.0

Testing Framework#

Minimum Viable Test:

  • Budget: $1,000-$5,000 or 2-4 weeks effort
  • Goal: Determine if channel can work
  • Metric: CAC within acceptable range

Scaling Decision:

  • Channel CAC < target CAC? Scale
  • Channel CAC > 2x target CAC? Abandon
  • Channel CAC between? Optimize or test variations
PhaseAgentPurpose
Strategystrategy-expertChannel prioritization
Contentcopywriting-expertBlog and social content
Adsmarketing-expertPaid campaign setup
Technicalfrontend-expertPLG implementation

Deliverables#

DeliverableDescription
Channel auditCurrent state assessment
Prioritization matrixICE-scored channel list
Implementation planRoadmap for top channels
Tracking setupAnalytics for attribution
CAC dashboardCost tracking by channel

Best Practices#

  1. Focus on 1-2 channels - Master before diversifying
  2. Measure everything - Can't optimize what you don't track
  3. Match channel to product - PLG for self-serve, sales for enterprise
  4. Iterate quickly - Test, learn, adjust
  5. Content compounds - SEO takes time but scales
  6. CAC discipline - Never scale unprofitable channels

Common Pitfalls#

  • Spreading too thin - Better to master one channel
  • Ignoring attribution - Know where customers come from
  • Premature scaling - Don't scale before channel is profitable
  • Short-term thinking - Some channels take time (SEO, community)
  • No testing - Always A/B test before scaling