Join our community of websites already using SEOJuice to automate the boring SEO work.
See what our customers say and learn about sustainable SEO that drives long-term growth.
Explore the blog →TL;DR: Most SaaS expansion revenue is lost before anyone writes an upsell email. The customer never activated, the value metric was wrong, or the add-on solved a problem the account did not have yet. The fix is almost never a better script. It is upstream, in pricing and onboarding, where nobody calls it expansion work.
I want to make an argument before I make a list, because the list is the part everyone already has. Here it is: if your expansion motion needs a clever rep and a quarter-end discount to work, the motion was already broken three steps earlier. The rep is just where it became visible.
Through mindnow I have watched a dozen SaaS teams try to fix weak activation with sales pressure. It always looks like a pipeline problem on the dashboard. It is almost always a sequencing problem in the product. On seojuice.com the question we keep returning to is not “what can we sell this account next?” but “what signal proves the customer is ready?” I learned the same thing the expensive way on vadimkravcenko.com: buying more tools never once made me get more value from the ones I already had. (The graveyard of half-onboarded annual plans in my own bank statements is evidence enough.)
This is the whole article, so I will spend the most time here and rush the rest. When an upsell fails, it feels like the failure happened at the offer. It did not. It happened at one of three earlier moments, and by the time the offer arrives the outcome is mostly decided.
The first moment is activation. A customer who has not reached the first promised outcome should never be pitched into a bigger contract. That is not expansion. It is impatience wearing a revenue hat. Asking for more money before the first promise is kept reads exactly like what it is.
The second moment is the value metric. If a customer pays more because they are sending more emails, storing more data, or saving more hours, the upsell feels fair when it arrives. If they pay more because a pricing page invented a wall, it feels like a tax. The metric was chosen long before any rep got involved, which is why sales inherits the pain of a bad one.
The third moment is the trigger: behavior, not the calendar. The best time to expand is when behavior proves the current package has become the constraint. Not day 30. Not day 90. Not three weeks before renewal because the forecast needs it.
Lincoln Murphy has been arguing the customer-success-driven version of this for years, and his line is the cleanest statement of the whole sequence:
“When your customers achieve their Desired Outcome through their interactions with your company, that is customer success.” — Lincoln Murphy, Sixteen Ventures
Desired outcome first. Commercial motion later. Murphy is not making the soft point that customers should feel appreciated; he is explicit that customer success is a growth engine, not a hug delivery service:
“Customer Success-driven Growth – seeing Customer Success not as a way to make customers 'happy,' but as a true Growth Engine – is all about expansion.” — Lincoln Murphy, Sixteen Ventures
Set against Murphy is the pricing camp. Patrick Campbell, through the ProfitWell research, hammers the same upstream point from the money side: the value metric you pick decides how much expansion you can ever earn, and that choice is made before sales touches anything.
“If you're feature-differentiated, your expansion revenue (money coming from your existing user base) is actually much lower than those folks using a function value metric (such as cost per user) versus folks using an outcome value metric (cost per dollar I save you, or 100 dollars I bring you).” — Patrick Campbell / ProfitWell, ProfitWell research
These two are not in conflict. Murphy says expansion is a customer-success sequencing problem; Campbell says it is a pricing-architecture problem. Both are saying the same thing in different vocabulary: the upsell email is the last 5% of the work, and by the time you reach it you are mostly collecting on decisions made far upstream.
You can watch a healthy version in public. Slack’s Fair Billing Policy is the cleanest example I can point to of tying the meter to delivered value instead of to a wall: they automatically credit accounts for inactive users rather than billing for seats that sit idle. That is an upstream design choice, not a sales tactic, and it is what makes the eventual seat expansion feel earned rather than extracted. The PLG crowd, Wes Bush and the product-led growth camp, make the matching argument from onboarding: if the product does not surface the constraint and route the customer to the obvious next step, you are paying humans to do work the product should have done for free.
So here is the sequence the rest of this article assumes. I am writing it down once and then not repeating it as a framework graphic, because the point is that you internalize it, not that you laminate it:
The guardrail is the step everyone skips, and it saves the account from your own ambition. If activation is weak, if usage is falling, if the champion has gone quiet, or if support tickets show unresolved confusion about the basics, the pitch waits. (Side note: the tell is always the same. A fat discount on a bigger plan, offered to a customer who has not finished onboarding. It buys 30 days of silence and costs you the account in Q2. I have signed off on this exact move and regretted it both times.)
Quick, because the definitions are not the interesting part. Upselling asks the customer to buy a bigger version of what they already use: a higher tier, more seats, more usage, advanced controls. Cross-selling asks them to buy an adjacent product: a CRM customer buying marketing automation, an SEO customer buying content-refresh automation after pages start to decay. The definitions matter less than the signal. If the customer is bumping into a real ceiling, upsell. If a neighboring workflow has shown up in the product data, cross-sell. The motion works when the ask matches the customer’s next job, not when the account happens to be on a campaign list.
| Motion | What changes | Good trigger | Bad trigger |
|---|---|---|---|
| Upsell | Same product, more value | Limit reached or new team need | End-of-quarter quota |
| Cross-sell | Adjacent product or add-on | Related workflow appears | “They bought one thing, pitch another” |
There are five upsell motions people like to name: seat, usage, feature-tier, support, and outcome. I am going to spend almost all of my space on one of them, because it is where I have personally done the most damage, and because the failure mode is the most seductive.
Feature-tier expansion is the maturity jump: SSO, audit logs, custom permissions, multi-workspace controls, advanced reporting, approval flows, compliance exports. The legitimate trigger is a customer trying to do mature work with immature tools. They have outgrown the simple version and are now doing real organizational work manually, in spreadsheets, around your product instead of inside it.
Here is where it goes wrong, and where I went wrong. Feature gating only creates an upsell path if the lower tier already delivers the core promised outcome. The moment you gate something the customer needs to reach that first outcome, you have not built an upgrade path. You have sabotaged your own activation so the upgrade looks necessary. The customer cannot tell the difference between “advanced feature for mature teams” and “they crippled the thing I actually need so I would pay more.” Honestly, neither could I, staring at our own pricing page later.
I have watched this exact failure on SEOJuice. We once gated a genuinely useful report behind the higher tier before the lower tier was useful enough to justify the account at all. The gating did not create an upsell path. It made people leave, and they churned quietly rather than angry, which is worse, because you never get the exit-survey signal that tells you why. We had confused “make the upgrade attractive” with “make the base plan worse,” and those are opposite strategies that look identical on a pricing matrix.
The fix was upstream, not in the offer. We moved the report back, fixed the base plan until it actually delivered the first outcome, then let the genuinely-mature features sit behind the wall. Expansion on that feature went up once we stopped using it as bait. That is the whole thesis in one product decision: the lever was three steps before the upsell, in what the base plan was allowed to deliver.
The other four motions, since I promised five:
Campbell’s number on value metrics is the reason the usage and outcome paths are worth getting right rather than defaulting to per-seat:
“Companies using value metrics typically grow at double the rate with half the churn and 2x the expansion revenue when compared to companies that charge a flat fee.” — Patrick Campbell / ProfitWell, ProfitWell research
One rule covers almost all of it: cross-sell should mean the product now sees enough context to recommend the next workflow, not “show every customer every add-on.” When a support tool watches the same five issues generate tickets and then offers a knowledge-base add-on with draft articles, that does not feel like a pitch. The product is naming a friction the customer already feels every day.
The same logic covers role expansion (one team’s exports flow to another department every week, so widen the seats) and integration cross-sell (requests for warehouse sync, CRM sync, or compliance logging mean the product moved from “tool” to “system of record,” so the add-on solves coordination risk, not convenience). The multi-product suite is this idea at larger scale, and it only works when each product solves a genuine adjacent job rather than previewing churn behind a pricing page.
Behavior beats the calendar. The triggers worth wiring up are the ones below; the rest is sales pressure with a timestamp.
| Trigger | Likely motion | Why it works |
|---|---|---|
| Repeated limit hits | Upsell | Customer has outgrown the current package |
| More users invited | Seat expansion | Value is spreading inside the account |
| Advanced feature workaround | Tier upgrade | Customer is doing mature work manually |
| New department activity | Cross-sell | The account’s job set is expanding |
| Integration requests | Add-on or tier | Product is becoming part of the operating system |
| Strong health score plus renewal window | Expansion | Trust exists before the commercial ask |
Bad triggers are easy to spot: arbitrary lifecycle emails, quarter-end pressure, renewal hostage-taking, discount-led upgrades aimed at unhealthy accounts. The account may buy once. The downgrade arrives later, on a quarter where you have stopped watching. Campbell is blunt about the discount version:
“Discounts are pretty terrible for your unit economics. As the discount goes up, the churn rate goes up as well.” — Patrick Campbell, Turing Fest 2018
A discount closes the conversation by changing the price, not by proving the next package fits the next job. It is the upstream failure showing up at the worst possible moment, with a coupon attached.
Short version, because ownership is logistics, not strategy. Low-touch SaaS lets product and lifecycle marketing own most expansion: the UI detects the signal, explains the constraint, routes to a self-serve upgrade. Mid-market needs customer success to spot the milestone and sales to package the ask. Enterprise often needs account management on the commercial process, but customer success must keep veto power over timing. The risk is the one Murphy warns about: when expansion becomes quota-only, account managers start shoving products down customers’ throats, and expansion quietly becomes erosion.
| ACV / motion | Product | Lifecycle | CS | Sales / AM |
|---|---|---|---|---|
| Low ACV usage upgrade | High | High | Low | Low |
| Seat expansion | Medium | Medium | Medium | Medium |
| Enterprise tier upgrade | Low | Low | High | High |
| Cross-sell suite | Medium | Medium | High | High |
Expansion bookings will lie to you. They look great in the quarter you book them and tell you nothing about whether they survive. Two numbers actually report what happened after the upgrade.
NRR = (Starting MRR + Expansion MRR - Contraction MRR - Churned MRR) / Starting MRR. Below 100% and your expansion is not outrunning the leaks, no matter how good the bookings looked.For seojuice.com the expansion metric I care about is not “who clicked upgrade,” it is whether upgraded customers keep publishing, refreshing, and ranking more pages after the upgrade. If they upgrade and go quiet, the upgrade was a mistake we got paid for once.
| SaaS type | Upsell example | Cross-sell example | Readiness signal |
|---|---|---|---|
| CRM | More seats, advanced reporting | Sales engagement add-on | More reps and pipeline reports |
| Project management | Portfolio tier | Time tracking | Multiple teams sharing workspaces |
| SEO software | More tracked pages or AI refreshes | Content planning or link monitoring | Pages ranking but decaying |
| Support desk | Automation tier | Knowledge base | Repeated tickets and SLA pressure |
| Data warehouse | More compute | Governance add-on | Usage spikes and compliance needs |
| HR software | Higher employee band | Payroll add-on | Headcount growth |
| Dev tool | More usage or private repos | Security scanning | Team adoption and release volume |
| Email platform | More contacts | SMS or deliverability tools | List growth and campaign frequency |
Good: a support desk notices 40 percent of an account’s tickets are about the same five issues, offers a knowledge-base add-on with draft articles, and shows the expected ticket reduction. The offer names the friction. Bad: a CRM sees a customer bought the starter plan yesterday and pitches enterprise forecasting before the first pipeline is imported. That is not timing. It is automation with no manners.
Write it around the customer’s current friction, not your feature list. Bad: “Upgrade now to unlock premium features.” Good: “You’ve hit the reporting limit three times this month. The next tier gives your team unlimited dashboards and scheduled exports, so finance does not have to ask marketing for manual CSVs every Friday.” (The Friday CSVs detail came straight out of a real support ticket. If it sounds oddly specific, that is because it is.) The good message does not beg. It explains why the next package removes a constraint the customer already feels.
The reason any of this is worth the effort is leverage. Campbell’s framing is that small monetization and retention gains compound harder than acquisition:
“With that same 1% improvement in your monetisation or retention, all of a sudden we're looking at a world with 4-8x the impact.” — Patrick Campbell, Business of Software
That upside only exists if expansion is healthy. Bad expansion is not growth. It is delayed churn you booked early and will pay back with interest.
This is the framework I would build for SEOJuice’s own expansion if we get there. We are not running a formal motion yet at our scale, two people and a $29 starting price, but the principle holds even for tiny SaaS: earn the right before you make the ask. And here is the harder question that sits underneath everything above, the one most SaaS teams cannot answer cleanly: do you actually know whether this customer reached the first outcome yet? Until that is measurable, the whole motion is theater, and the upsell email is just where the theater becomes obvious.
| Before you pitch, ask | Good answer |
|---|---|
| Has the customer reached the first promised outcome? | Yes |
| What signal proves they need more? | Usage, seats, workflow, integration, or maturity |
| Does the offer remove a real constraint? | Yes |
| Who should own the ask? | Product, lifecycle, CS, sales, or AM |
| Will we track retention after expansion? | Yes |
Upselling moves an existing customer into a bigger version of the same product: more seats, more usage, higher tiers, better controls, or more support. Cross-selling adds a related product, add-on, or workflow beside the original purchase.
The best SaaS upsell strategy starts with a success milestone, then waits for a readiness signal. A customer who has reached value and keeps hitting a limit is a good candidate. A customer who is still confused is not.
Start with adjacent workflows. Find the moments where product data shows a related job: repeated tickets, manual exports, new departments, integration requests, or compliance risk. Then offer the add-on that removes that friction.
Net revenue retention is the headline metric because it includes expansion, contraction, and churn across the current revenue base. Pair it with post-expansion churn and downgrade rate, or you may mistake short-term bookings for real growth.
Customer success should protect timing. Sales can own the commercial process, but CS should confirm the account is healthy, the outcome has been reached, and the offer fits the customer’s next job.
Related reading:
If your SaaS expansion motion depends on pressure, the system is already weak. Build the signal first, make the offer useful, and let the customer’s progress create the next sale. If you’re running SEO for a SaaS product and want to see which pages your customers actually return to, the free SEOJuice audit surfaces the engagement and decay signals that map to the readiness patterns above in the first scan.
The article’s framing of upselling as “showing better value” (not pushing) is spot on — in my experience running growth for B2B SaaS we used contextual in-app offers and a post-checkout micro-upgrade on Shopify to lift AOV without increasing churn. When you test this, prioritize timing (post-purchase vs. pre-checkout), segment by LTV, and measure ARPU + net retention; happy to connect and share our A/B test setup and results.
no credit card required