Worked Example: Throughout this guide, we’ll follow TeamFlow, a collaborative project management tool with tiered pricing (Starter, Professional, Business, Enterprise). TeamFlow has identified that their most efficient revenue growth comes from existing customers expanding—but their small sales team can’t monitor every customer for expansion signals.
Why expansion matters
The economics of expansion
| Metric | New Customer Acquisition | Customer Expansion |
|---|---|---|
| Sales cycle | 30-90 days typical | Days to weeks |
| Win rate | 15-25% typical | 40-60% typical |
| CAC payback | 12-18 months | Often immediate |
| Relationship | Building trust | Trust already established |
| Product knowledge | Starting from zero | Already using and loving |
The timing problem
The challenge isn’t identifying that expansion opportunities exist—it’s identifying them at the right moment:- Too early: “Want to upgrade?” feels like a sales ambush
- Too late: They’ve already worked around the limitation or found an alternative
- Just right: “I noticed you’re running low on seats…” feels helpful
Step 1: Define your expansion stage
How to think about expansion stage boundaries
Entry considerations:- Has the customer completed onboarding?
- Are they healthy (not at-risk)?
- Have they been a customer long enough to form an opinion?
- They expanded (success!)
- They declined and shouldn’t be asked again for X months
- They churned (no longer relevant)
Example configuration
Step 2: Identify your expansion signals
Types of expansion signals
| Signal Category | What It Indicates | Examples |
|---|---|---|
| Limit-based | Customer hitting constraints | Approaching seat limit, storage full |
| Usage-based | Growing engagement | Active users increasing, feature adoption expanding |
| Behaviour-based | Exploring upgrade | Viewing pricing page, clicking upgrade buttons |
| Milestone-based | Business growth | Team size increased, new department added |
| Time-based | Natural expansion moments | Anniversary, renewal approaching (healthy customer) |
Example: TeamFlow’s expansion signals
| Signal | How We Detect It | Expansion Opportunity | Conversion Rate |
|---|---|---|---|
| Admin invite blocked | invite_blocked_seat_limit event | Add seats (urgent) | 72% 🔴 |
| Seat utilisation >85% | active_users/licensed_seats > 85% | Add seats or upgrade tier | 58% 🔴 |
| Integration interest | >3 integration page views/30 days | Upgrade to Business | 34% 🟡 |
| Power users emerging | 3+ users with >20hrs/week usage | Upgrade tier | 28% 🟡 |
| Company growing | CRM headcount up >20% | Proactive expansion | 19% 🟢 |
Step 3: Define expansion ownership
Ownership models
| Model | How It Works | Best For |
|---|---|---|
| Self-serve first | Automated email → in-app upgrade flow | SMB, low ACV, high volume |
| Sales-assisted | Signal triggers sales outreach | Mid-market, complex pricing |
| CSM-led | CSM owns relationship + expansion | Enterprise, strategic accounts |
| Tiered hybrid | Route based on signal type or customer value | Mixed customer base |
Example: TeamFlow’s tiered routing
| Signal Type | Owner | Motion |
|---|---|---|
| Seat limit (Starter/Pro) | Self-serve | Automated email → in-app upgrade |
| Seat limit (Business+) | CSM | Personal outreach |
| Tier upgrade interest | Self-serve | Automated email → in-app upgrade |
| Integration interest | CSM | Discovery call, Business tier pitch |
| Power users (SMB) | Automated | Email nurture toward tier upgrade |
| Power users (Mid-market) | CSM | Business review, expansion discussion |
| Enterprise signals ($25K+) | AE + CSM | Joint outreach, custom pricing |
Step 4: Configure expansion triggers
Trigger design principles
- Specificity: One trigger per expansion type (don’t bundle seat expansion with tier upgrade)
- Confidence threshold: Multiple signal instances or combined signals for higher confidence
- Cooldown logic: Don’t re-trigger if already in an expansion conversation
- Timing sensitivity: Some signals are time-sensitive (blocked invite), others aren’t
Example trigger configurations
Trigger A: Seat Expansion (Urgent)
Trigger A: Seat Expansion (Urgent)
Condition:
invite_blocked_seat_limit event firedTiming: Immediate (within 25 minutes)Cooldown: None (always trigger—this is urgent)Owner: Self-serve email + in-app promptTrigger B: Seat Expansion (Proactive)
Trigger B: Seat Expansion (Proactive)
Condition:
seat_utilisation > 85% for 7+ consecutive daysTiming: Next business day, 10 AM customer timezoneCooldown: 30 days since last seat expansion messageOwner: Self-serve emailTrigger C: Tier Upgrade (Feature Interest)
Trigger C: Tier Upgrade (Feature Interest)
Condition:
integration_page_views > 3 in last 30 days AND tier ∈ [Starter, Professional]Timing: 48 hours after threshold crossed (let them explore)Cooldown: 60 days since last tier upgrade messageOwner: CSM (mid-market) / Self-serve (SMB)Trigger D: Tier Upgrade (Usage-driven)
Trigger D: Tier Upgrade (Usage-driven)
Condition:
power_users >= 3 for 14+ consecutive days AND tier ∈ [Starter, Professional]Timing: Next business dayCooldown: 60 days since last tier upgrade messageOwner: CSM outreachTrigger E: Enterprise Expansion
Trigger E: Enterprise Expansion
Condition: tier = Business AND
seat_utilisation > 80% AND contract_value > $25,000Timing: Route to AE within 24 hoursCooldown: 90 daysOwner: AE + CSM joint outreachStep 5: Write your expansion messages
Message philosophy
Expansion messages should feel like service, not sales.| Feels Like Sales | Feels Like Service |
|---|---|
| ”Your account is ready for an upgrade!" | "I noticed you’re almost out of seats…" |
| "Unlock premium features today!" | "I saw your team trying to connect Slack…" |
| "Contact us to discuss pricing" | "Here’s a quick link to add more seats” |
Example messages
- Seat Expansion (Urgent)
- Seat Expansion (Proactive)
- Feature Interest (Integrations)
- Usage-Driven Upgrade
- Enterprise (AE Intro)
This is TeamFlow’s highest-converting message because it arrives at the exact moment of need.
Step 6: Configure internal notifications
Routing alerts
| Signal | Routing | SLA |
|---|---|---|
| Urgent seat expansion | Self-serve (automated) | Immediate |
| High-value ($25K+) any signal | CSM Slack DM + AE alert | 4 hours |
| Enterprise expansion signals | AE + CSM + Manager | 24 hours |
| Declined expansion | Log for analysis | N/A |
Sample alert
Step 7: Define success metrics
Metrics to track
| Metric | What It Measures |
|---|---|
| Signal-to-opportunity rate | % of signals that become conversations |
| Opportunity-to-close rate | % of conversations that expand |
| Time from signal to expansion | How quickly do they expand? |
| Expansion revenue | Total revenue from expansion jobs |
| Signal accuracy | Do signals actually predict expansion? |
Benchmarking
| Signal Type | Expected Conversion |
|---|---|
| Invite blocked (urgent) | 60-80% |
| Seat utilisation >85% | 40-60% |
| Feature interest | 25-40% |
| Usage-driven upgrade | 20-35% |
| Proactive (company growth) | 15-25% |
Summary checklist
Expansion stage defined (entry after onboarding + healthy)
Expansion signals identified with conversion data
Ownership model defined (self-serve, CSM, hybrid)
Triggers configured with appropriate thresholds and cooldowns
Service-oriented messages written for each signal
Internal routing configured for high-value opportunities
Success metrics defined
Next steps
Configure Renewal Jobs
Proactive renewal management that prevents churn
Building Jobs Guide
Detailed guide on job configuration