By rachel davey

GA Insights Revenue Plateau — UX and Pricing Deep Dive

By rachel davey · Created Mar 5, 2026 public

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:#fff9c4
graph 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:#fce4ec

Change 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/mo

Trial 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:#fce4ec

Change 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 only

A 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 report

The 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:

  1. Found ALL reports containing FB/Search Console graphs
  2. Removed those graphs from reports
  3. If a report had no graphs left — deleted the entire report
  4. If a tab had no graphs left — deleted the entire tab
  5. 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" only

Users 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 step

The 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:#fff9c4

The 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

  1. Pull ChargeBee trial-to-paid conversion rates by week, March through October 2021
  2. Check which plan trial users converted to before vs after April 26
  3. Check if $21/mo Reports plan lost subscribers after alerts were removed
  4. Check what percentage of users were on free plan before April 22 vs after
  5. Check if "contact us" enterprise flow resulted in any deals or just lost auto-upgrades
  6. Check total active user counts — were people leaving or just downgrading?
  7. Check if users who disconnected data sources (June 14+) came back or churned permanently
  8. 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.