The PLG conversion problem
Product-led growth (PLG) is only as good as the conversion mechanism behind it. Most SaaS teams build a great free tier or trial, then rely on users to navigate to the pricing page on their own when they’re ready to upgrade. The result: free-to-paid conversion rates of 3–8% when behavioral benchmarks for well-converted PLG products are 15–25%.
The gap isn’t product quality. It’s prompting. Users need the upgrade case presented at the exact moment they’re experiencing the limitation or the value that motivates it. A generic “upgrade your plan” banner that’s always visible is background noise. An upgrade prompt that fires the moment the user hits their 80% usage ceiling — referencing their actual usage — converts at 3–5× the rate.
The Upgrade Prompt automation fires the right message, through the right channel, at the right behavioral trigger. Each trigger has its own sequence — not a one-size campaign.
How it works in GHL
Trigger 1: Usage ceiling approach (80%)
When a usage webhook fires with usage_percentage: 80:
- In-app banner (via webhook to Intercom/Pendo): usage gauge showing 80% + “See what’s included on the next plan.”
- Email (same hour): “[Name], you’re at 80% of your [Starter] limit this month. Here’s what happens at 100% — and the cost difference per [unit] on Growth plan.” Includes the upgrade math in concrete terms (e.g., “You’re paying $12.50 per report on Starter. On Growth, it’s $4.17. At your current usage rate, Growth pays for itself in week 1.”).
Trigger 2: Usage ceiling hit (100%)
When the limit is hit:
- Immediate in-app gate or warning (depending on your product’s behavior at limit).
- Email within 5 minutes: Urgent, specific. “Your account has hit its [report/seat/API call] ceiling. Here’s the one-click upgrade path.”
- SMS if the email hasn’t been opened within 1 hour (highest-urgency channel for highest-urgency moment).
Trigger 3: Feature gate hit
When a user attempts to use a feature not on their current plan:
- In-app modal (via webhook): feature preview + upgrade CTA with plan comparison.
- Follow-up email (next day, if no upgrade): “You tried [Feature X] yesterday — it’s on the [Pro] plan. Here’s what else unlocks with it.”
Trigger 4: Activation completion (highest-converting moment)
When a user completes all activation milestones — they’ve proven the product works for their use case:
- Email within 1 hour: “You’ve set up [product] and hit your first 3 milestones. Teams at this usage level on Pro report [specific outcome]. Here’s the upgrade path — same setup, more runway.”
- This is consistently the highest-converting upgrade trigger because the user is at peak perceived value. Their mental model has shifted from “might work” to “does work.”
Trigger 5: Team growth signal (seat expansion)
When a user invites a teammate (seat expansion signal detected):
- Email to account admin: “Your team is growing — here’s how [product] scales with you.”
- If near seat limit: upgrade prompt with seat math: “You have 4 of 5 Starter seats filled. Adding a 6th triggers overage charges. Growth plan gives you 25 seats at $X/month total.”
Trigger 6: Pricing page visit (intent signal)
When a user visits the pricing page (tracked via GHL form/pixel or Segment event):
- In-app nudge on next login (via webhook): persistent “Ready to upgrade?” banner in product nav.
- Email same day (if not yet upgraded): “You were looking at pricing. Most common question: what’s the difference between [Pro] and [Scale]? Here’s the 60-second breakdown.”
The copy framework
All upgrade prompts in the snapshot follow the same four-part structure:
- The specific moment they’re in — reference their actual usage, the feature they tried, or the team event.
- What’s available on the next plan — specific capabilities, not “more power.”
- The math — exact cost of upgrading vs the outcome it unlocks, in concrete terms.
- A single CTA — upgrade now or book a call. Never both simultaneously.
ROI math: behavioral upgrade prompts vs passive discovery
Hooli — a B2B SaaS at $99/month, 500 free-tier users, $50 CAC.
Before behavioral upgrade prompts:
- Free-to-paid conversion: 5% (passive pricing page discovery only)
- New paid users/month: 500 × 5% = 25
- New MRR: 25 × $99 = $2,475/month
After behavioral upgrade prompts deployed (conservative 4-point lift to 9%):
- New paid users/month: 500 × 9% = 45
- New MRR: 45 × $99 = $4,455/month
- Delta: +$1,980/month, +$23,760/year — from the same free-tier base.
At $50 CAC, this is equivalent to acquiring 400 additional customers annually at zero acquisition cost.
For Vandelay Industries (a SaaS at $249/month, 200 free users), the same 4-point lift: 200 × 4% × $249 = +$1,992/month, +$23,904/year.
Context-aware upgrade prompts — part of the SaaS Snapshot, live in 24 hours
How do I prevent upgrade prompt fatigue?
The snapshot includes frequency capping — a contact receives at most one upgrade prompt per 7 days, regardless of how many triggers fire simultaneously. The highest-priority trigger wins. If a user hits a usage ceiling and a feature gate on the same day, the usage ceiling fires (higher urgency) and the feature gate prompt is suppressed for 7 days. Contacts on the top plan are automatically excluded from all upgrade sequences.
What if the user is already on the top plan?
Before any upgrade prompt fires, the workflow checks the contact's `plan_tier` custom field. Users on your top plan are excluded from upgrade sequences and routed to the expansion revenue sequences instead — seat additions, add-ons, and annual billing conversion prompts.
Can I A/B test upgrade prompt copy inside GHL?
Yes — GHL's workflow branching supports random split routing. Set up a 50/50 branch between two upgrade prompt email templates. Track conversion by tagging upgraded contacts with 'converted_from_prompt_A' or 'converted_from_prompt_B'. After 200+ upgrade events, you'll have statistical confidence in a winner. Most teams find that prompts referencing specific usage data outperform generic plan-comparison prompts by a significant margin.
Do the upgrade prompts integrate with Stripe Checkout?
The upgrade CTA in the email links directly to your Stripe Checkout page (or Chargebee self-serve upgrade URL). When the upgrade completes, Stripe fires a subscription upgrade event, which GHL receives via webhook — updating the contact's plan field, removing them from upgrade sequences, and starting the onboarding-to-new-plan sequence automatically.