The "Trojan Horse" Chrome Extension Engine

Turn a free browser tool into a lead-gen machine that captures emails while solving tiny daily annoyances.

The Play: Build a dead-simple Chrome extension that solves one micro-problem for your target user—like a "one-click LinkedIn email finder" or "instant meeting summarizer." Give it away free. Use it to capture emails and subtly surface your main SaaS platform inside the extension interface.

Why This Works:

Chrome extensions live in the browser—the place where your users spend 6+ hours daily. By solving a specific pain point for free, you create habitual usage. Every interaction is a touchpoint. The extension isn't your product; it's your distribution channel. The email capture happens naturally (users expect accounts for synced features), and your upsell surfaces contextually when users hit limitations.

The Implementation Stack:

Category

Tool

Notes

Extension Framework

Plasmo

Free, React-based, hot reload

Email Capture

Supabase Auth

Free tier: 50K MAUs

Analytics

PostHog

Free tier: 1M events/month

CRM Sync

Pipedrive API

Push leads automatically

Upsell UI

React Modal

In-extension upgrade prompts

Step 1: Plasmo (The Framework)

Plasmo handles all Chrome extension boilerplate. Initialize with:

pnpm create plasmo --with-tailwindcss
cd my-extension && pnpm dev

Your extension hot-reloads during development. No webpack config nightmares.

Step 2: Supabase (Email Capture)

Add Google OAuth for frictionless signup:

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY)

const signIn = async () => {
  const { data, error } = await supabase.auth.signInWithOAuth({
    provider: 'google',
    options: { redirectTo: chrome.identity.getRedirectURL() }
  })
}

Step 3: PostHog (Usage Analytics)

Track which features users love (and where they bounce):

posthog.capture('feature_used', {
  feature: 'email_finder',
  linkedin_url: url,
  user_tier: 'free'
})

Step 4: The Upsell Trigger

When users hit the free limit, show a contextual modal:

if (dailySearches >= 5) {
  showModal({
    title: "You're on fire today 🔥",
    body: "Upgrade to Pro for unlimited searches + CRM sync",
    cta: "See Plans",
    link: "https://yourapp.com/pricing?ref=extension"
  })
}

Step 5: CRM Sync

Push captured leads to Pipedrive automatically:

await fetch('https://api.pipedrive.com/v1/persons', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${PIPEDRIVE_TOKEN}` },
  body: JSON.stringify({
    name: user.name,
    email: user.email,
    label: 'extension_signup'
  })
})

The Result:

  • CAC: $0 (organic installs via Chrome Web Store)

  • Email capture rate: 35-50% of active users

  • Upsell conversion: 3-7% (contextual > cold)

You're not building a side project—you're building a lead pipeline that lives where your users already work.

Comments

Avatar

or to participate