GA Insights Revenue Plateau — UX and Pricing Deep Dive
Focused analysis of every UX, pricing, trial, and plan change between March-October 2021. After reading the actual code diffs, a clear pattern emerges: a series of well-intentioned changes systematically removed the conversion pressure and value perception that was driving paid subscriptions.
The most damaging changes were made in a concentrated 6-week period from April 3 through May 31, 2021 — right before the revenue peak. Additional destructive changes continued through November 2021.
The Pricing Table
Before understanding the changes, here's what users saw:
| Free | Starter ($7/mo) | Reports ($21/mo) | Alerting ($74/mo) | Alerts+ ($186/mo) | |
|---|---|---|---|---|---|
| Reports | 3 (basic) | 10 | Unlimited | Unlimited | Unlimited |
| Alerts | 0 | 0 | 3 then 0 | 20 | Unlimited |
| Websites | 1 | 1 | 3 | 3 | 3 |
| Custom reports | No | Yes | Yes | Yes | Yes |
| Data sources | GA only | GA only | GA+FB+Console | GA+FB+Console | All |
Note the massive price jumps: $7 to $21 to $74 to $186. No middle ground between $21 and $74 — a 252% jump.
The Conversion Funnel: Before vs After
graph TD
subgraph before["BEFORE (Mar 2021 - Growth Phase)"]
B1["New user signs up"] --> B2["10-day trial at<br/>usage-matched plan"]
B2 --> B3["Frequent reminders<br/>every 8 days per report"]
B3 --> B4["Trial expires"]
B4 --> B5{"Sees pricing page"}
B5 -->|"Free visible"| B6["Stays on Free<br/>(safety net)"]
B5 -->|"$21/mo Reports"| B7["Converts to Reports<br/>with 3 alerts included"]
B5 -->|"$74/mo"| B8["Converts to Alerting"]
B6 --> B9["Free blocks premium<br/>report access"]
B9 -->|"Upgrades later"| B7
end
style before fill:#e8f5e9
style B7 fill:#e8f5e9
style B8 fill:#e8f5e9
style B9 fill:#fff9c4graph TD
subgraph after["AFTER (Jun 2021 - Decline Phase)"]
A1["New user signs up"] --> A2["15-day trial at<br/>$186/mo Alerts Plus"]
A2 --> A3["Infrequent reminders<br/>every 14 days, owner only"]
A3 --> A4["Trial expires"]
A4 --> A5{"Sees pricing page"}
A5 -->|"Free HIDDEN"| A6["Can't find free tier"]
A5 -->|"$21/mo Reports"| A7["Reports plan has<br/>ZERO alerts now"]
A5 -->|"$74/mo for alerts"| A8["252% price jump<br/>from $21"]
A6 --> A9["User LEAVES entirely"]
A7 --> A10["Was using alerts<br/>on trial — disappointed"]
A10 --> A9
A8 --> A11["Too expensive vs trial"]
A11 --> A9
end
style after fill:#fce4ec
style A9 fill:#fce4ec
style A6 fill:#fce4ec
style A7 fill:#fff3e0
style A10 fill:#fce4ecChange 1: Alerts Removed from Reports Tier
April 26, 2021 | Commit
a9286be92| HIGHEST IMPACT
The $21/mo Reports plan lost all alert functionality:
Reports plan alert limit: 3 -> 0
Downgrade trigger: alerts > 3 -> alerts > 0
Pricing table display: "3" -> "0"To get ANY alerts, users now jump from $21/mo to $74/mo — a 252% increase. Existing Reports users with alerts were flagged for forced downgrade.
This gutted the mid-tier plan that was likely the conversion sweet spot.
Change 2: All Trials Start on $186/mo Tier
April 8, 2021 | Commit
43eb6b22d| HIGHEST IMPACT
// BEFORE: Trial matched to user's actual usage level
MoveToPlan(user, GetPlanIdFromUserCount(user, ..., forcePlan:3))
// AFTER: Everyone starts on the most expensive tier
MoveToPlan(user, SubscriptionHelper.V5_AlertPlusTier) // $186/moTrial users get 50 alerts and unlimited everything. When trial ends, the affordable $21/mo plan has zero alerts. This creates a massive cliff-edge conversion problem.
graph LR
subgraph trial["Trial Experience ($186/mo)"]
T1["Unlimited reports"]
T2["50 alerts"]
T3["3 websites"]
T4["All data sources"]
end
subgraph affordable["Affordable Plan ($21/mo)"]
P1["Unlimited reports"]
P2["ZERO alerts"]
P3["3 websites"]
P4["GA + FB + Console"]
end
subgraph next["Next Plan with Alerts ($74/mo)"]
N1["Unlimited reports"]
N2["20 alerts"]
N3["3 websites"]
N4["All data sources"]
end
trial -->|"Trial ends"| affordable
affordable -->|"252% price jump"| next
style trial fill:#e8f5e9
style affordable fill:#fce4ec
style next fill:#fff3e0
style P2 fill:#fce4ecChange 3: Free Plan Hidden from Pricing
April 22 + May 22, 2021 | Commits
6fda18683,9b85dc913
CSS class freeHide added to every free plan element across three modals:
<td class="freeHide">Free</td>
<td class="freeHide"><h2>Free</h2></td>
<script>$(document).ready(function() { $('.freeHide').hide(); });<\/script>Trial users and external pricing page visitors cannot see the free tier. Users who don't want to pay see no escape route — they leave entirely instead of staying on free and potentially upgrading later.
This eliminates the free-to-paid conversion funnel. Users who would have stayed on free (some of whom convert later) now just churn.
Change 4: Free Users Given Premium Report Access
May 20, 2021 | Commit
cf2544b23
Before: Free users redirected to upgrade page:
if (isFreeSubscription && !force) {
return RedirectToAction("Index", "MyAccount",
new { planUpgrade = 1, planText = "Please upgrade your plan to edit this report." });
}After: Free users can view all premium reports. Only get a soft modal when they try to edit.
Impact: The hard gate that drove free-to-paid upgrades was replaced with a soft suggestion. Free users can now see all the value without paying.
Change 5: Trial Messaging Reduced 75-90%
May 31, 2021 | Commit
9865d2cac
BEFORE: Expiry reminder every 8 days, per report
AFTER: Expiry reminder every 14 days, per owner onlyA user with 5 reports previously got up to 5 reminders every 8 days. Now they get 1 reminder every 14 days. This is a 75-90% reduction in trial conversion nudges.
Change 6: Free Report Made Less Impressive
May 12, 2021 | Commit
e0c013ea2
// FreeMetrics.cs — Marketing & Social tabs
BEFORE: if (true) // Included in free report
AFTER: if (false) // Removed from free reportThe free report is the product's primary marketing tool. Making it less comprehensive makes the product look less capable at first impression.
Change 7: Trial Extended 10 to 15 Days
May 5, 2021 | Commit
e316140f9
50% longer free period. Combined with reduced messaging (Change 5), this reduces conversion urgency rather than helping it.
Change 8: Enterprise Threshold and Contact-Us Friction
May 30, 2021 | Commit
461913f8c
BEFORE: visitorCount > 900000 // Auto-upgrade to enterprise
AFTER: visitorCount > 1000000 // Higher threshold
// Added manual friction:
"One of your website/apps is over 1 million monthly visitors.
Please reach out to us for custom pricing."Users between 900K-1M visitors who were previously auto-upgraded now hit a "contact us" wall.
Change 9: Agency Downgrade Protection Removed
June 2 + July 22, 2021 | Commits
9532e121f,1ded0154b
Agency customers could now be automatically downgraded to cheaper plans based purely on visitor count. Removed the "sticky" pricing that kept agencies on higher tiers.
NEW FINDINGS: Additional Damaging Changes
The following changes were discovered through deeper investigation and compound the damage from the core 9 changes above.
Change 10: Negative Churn Email Introduced
July 6, 2021 | Commits
4160cbe32,e14b816ee
A new automated email was added for trial users around Day 10-14 asking "What could we do better?" with negative framing:
"Was there a bug that prevented you from using the product?"Instead of reinforcing value, this email planted doubt about the product's reliability during the critical conversion window. Users who hadn't experienced issues were now primed to look for them.
Change 11: Cascading Deletion of Reports on Disconnect
June 14, 2021 | Commit
10dedbe66
When a user deleted a data source connection, the system now automatically deleted ALL reports and alerts associated with that connection:
Old warning: "This will delete client"
New warning: "This will delete all reports and alerts associated with this connection"No undo capability. Users who disconnected and reconnected a data source lost everything they had built.
Change 12: Facebook & Search Console Auto-Removal
June 17, 2021 | Commit
0e0fd22be
A new ReportService was introduced that automatically scanned reports for Facebook or Search Console metrics and:
- Found ALL reports containing FB/Search Console graphs
- Removed those graphs from reports
- If a report had no graphs left — deleted the entire report
- If a tab had no graphs left — deleted the entire tab
- Cleared the user's dashboard cache
Users lost entire dashboards if they had mixed Facebook + other platform data on the same report — with no warning about the cascade.
Change 13: "Book a Call" Removed from Onboarding
April 22, 2021 | Commit
24f9efb3a
The "Book a Call" button was removed from all navigation (header, footer, nav menus) and the personalized onboarding email was stripped down:
BEFORE: "book a personalized demo" + "getting started guide"
AFTER: "getting started guide" onlyUsers who felt overwhelmed had no escape hatch to talk to a person. The support model shifted from "we'll help you" to "figure it out yourself."
Change 14: Batch Subscription Jobs Disabled
September 30, 2021 | Commit
9e1193be3
The CheckPlans and CheckSubs Azure Functions were disabled with the [Disable()] attribute. These batch jobs validated and corrected subscription states. Without them, users could drift into incorrect plan states without anyone noticing.
The Complete Destruction Timeline
timeline
title Conversion Funnel Changes (Apr 3 - Nov 16, 2021)
section Week 1-2 (April)
Apr 3 : Pricing table restructured
Apr 8 : All trials start at $186/mo tier
Apr 22 : Free plan HIDDEN (freeHide CSS)
Apr 22 : Book a Call removed from all pages
Apr 26 : Reports plan loses alerts (3 to 0)
section Week 5-8 (May)
May 5 : Trial extended 10 to 15 days
May 12 : Free report simplified
May 20 : Free users view premium reports
May 22 : Free hidden for trial users too
May 26 : Downgrade modal redesigned
May 30 : Enterprise threshold raised
May 31 : Trial messaging reduced 75-90%
section June-July
Jun 2 : Agency protections removed
Jun 14 : Cascading report deletion on disconnect
Jun 17 : Facebook/Search Console auto-removal
Jul 6 : Negative churn email introduced
Jul 22 : Further agency downgrades
section September-November
Sep 30 : CheckPlans and CheckSubs DISABLED
Nov 16 : Onboarding wizard gutted to 1 stepThe Compounding Effect
flowchart TD
TrialPlan["All trials on $186/mo<br/>(Apr 8)"] --> Cliff["Massive feature cliff<br/>when trial ends"]
AlertsRemoved["$21/mo plan loses alerts<br/>(Apr 26)"] --> NoMidTier["No affordable plan<br/>with alerts"]
NoMidTier --> Cliff
Cliff --> Decision{"Trial user decides"}
FreeHidden["Free plan hidden<br/>(Apr 22)"] --> NoSafetyNet["No safety net"]
FreeAccess["Free users see<br/>premium reports<br/>(May 20)"] --> NoUpgradeMotivation["No reason to<br/>upgrade from free"]
LessMessaging["75-90% less trial<br/>reminders (May 31)"] --> ForgotToConvert["Forget to convert"]
NegativeEmail["Negative churn email<br/>(Jul 6)"] --> PlantedDoubt["Doubt planted<br/>about product"]
CascadeDelete["Cascade deletion<br/>(Jun 14-17)"] --> DataLoss["Users lose<br/>reports/dashboards"]
NoCallOption["Book a Call<br/>removed (Apr 22)"] --> NoHumanHelp["No human help<br/>for stuck users"]
Decision -->|"Can't find free"| NoSafetyNet
Decision -->|"$21 has no alerts"| Disappointed["Disappointed"]
Decision -->|"$74 too expensive"| TooExpensive["Sticker shock"]
NoSafetyNet --> Churn["USER CHURNS"]
Disappointed --> Churn
TooExpensive --> Churn
ForgotToConvert --> Churn
PlantedDoubt --> Churn
DataLoss --> Churn
NoHumanHelp --> Churn
NoUpgradeMotivation --> StaysOnFree["Stays on Free<br/>forever"]
style TrialPlan fill:#fff3e0
style AlertsRemoved fill:#fce4ec
style FreeHidden fill:#fce4ec
style FreeAccess fill:#fff3e0
style LessMessaging fill:#fff3e0
style NegativeEmail fill:#fce4ec
style CascadeDelete fill:#fce4ec
style NoCallOption fill:#fff3e0
style Cliff fill:#fce4ec
style Churn fill:#fce4ec
style NoMidTier fill:#fce4ec
style NoSafetyNet fill:#fce4ec
style Disappointed fill:#fce4ec
style TooExpensive fill:#fce4ec
style DataLoss fill:#fce4ec
style PlantedDoubt fill:#fce4ec
style StaysOnFree fill:#fff9c4The Top Three Smoking Guns
1. Trial at $186/mo + Reports Plan Gutted (Apr 8 + Apr 26)
New users experience the $186/mo tier for 15 days. When trial ends, the $21/mo plan has zero alerts. The next plan with alerts is $74/mo. This pricing cliff kills trial-to-paid conversion.
Validate: Check trial-to-paid conversion rate and which plan users converted to, before vs after April 26.
2. Free Plan Hidden + Free Gets Premium Access (Apr 22 + May 20)
Users who can't pay leave entirely (free is hidden), while users on free have no reason to upgrade (they can view everything).
Validate: Check free-to-paid conversion rate before vs after. Check if trial users who didn't convert went to free or just left.
3. Trial Messaging Cut 75-90% + Negative Churn Email (May 31 + Jul 6)
The primary trial conversion mechanism — expiry reminders — was nearly eliminated. Then the replacement touchpoint (churn email) actually planted doubt instead of reinforcing value.
Validate: Check trial-to-paid conversion rate before vs after May 31.
Additional Smoking Guns from Deep Investigation
4. Cascading Report Deletion (Jun 14 + Jun 17)
Users who disconnected a data source or had Facebook/Search Console connections lost entire dashboards without warning. This destroyed the value users had already built, giving them nothing to convert for.
5. "Book a Call" Removal (Apr 22)
Removing human support from the onboarding flow forced all users into self-serve. Non-technical users who would have converted after a demo call now had no path to get help.
6. Onboarding Wizard Gutted (Nov 16)
While this came later (November 2021), the removal of website selection, template browsing, and lifetime deal key entry from the wizard left new users landing in a completely empty account with no guidance. HasCompletedWizard() was hardcoded to always return true.
Validation Checklist
- Pull ChargeBee trial-to-paid conversion rates by week, March through October 2021
- Check which plan trial users converted to before vs after April 26
- Check if $21/mo Reports plan lost subscribers after alerts were removed
- Check what percentage of users were on free plan before April 22 vs after
- Check if "contact us" enterprise flow resulted in any deals or just lost auto-upgrades
- Check total active user counts — were people leaving or just downgrading?
- Check if users who disconnected data sources (June 14+) came back or churned permanently
- Check onboarding completion rates before vs after November 16 wizard changes
Investigation based on forensic git diff analysis of every pricing, trial, onboarding, and plan restriction change from March through November 2021. All findings reference specific commits with verified code changes.