Freemius Sales Analytics Dashboard for WordPress: Real-Time MRR, Revenue & AOV Tracking

Sales Analytics
✓ Real-Time Data
Lemon Squeezy Alternative

For independent WordPress plugin and theme developers, understanding the financial health of your business requires checking at least four separate data points: total revenue (to understand overall traction), MRR (to understand recurring revenue momentum), average order value (to evaluate pricing effectiveness), and per-product performance (to identify which plugins deserve more investment). In Freemius’ native developer dashboard, these data points are spread across multiple pages and require manual aggregation if you have more than one product.

The Sales Analytics Dashboard in Freemius Checkout for WooCommerce consolidates all four data points — plus refund tracking, purchase counts, and per-plugin comparative analysis — into a single React-powered screen inside your WordPress admin. The data is fetched live from the Freemius PHP SDK on every dashboard load, ensuring you always see current numbers without stale cache artifacts.

Why Freemius Developers Need a WordPress Analytics Dashboard

If you run your plugin marketing site on WordPress — as most independent developers do — your workflow lives in the WordPress admin. Switching to freemius.com to check revenue numbers, then back to WordPress to write a blog post, then back to freemius.com to create a coupon for a promotion, creates constant context-switching overhead that interrupts creative and business work.

More practically: having revenue metrics visible inside WordPress encourages more frequent monitoring. Developers who check their numbers daily in the same environment where they manage content and marketing make faster, better-informed decisions about pricing adjustments, promotion timing, and product prioritization.

Key advantage over freemius.com: The WordPress dashboard aggregates data across all your products simultaneously in a single view. The native Freemius dashboard shows analytics per-product — you have to navigate to each plugin separately to see its numbers, then manually sum them for a total business view.

Core Dashboard Metrics Explained

📈

Gross Revenue

Total lifetime gross sales across all products before deducting refunds. Calculated by summing all non-sandbox, non-refund payment gross amounts.

📄

Monthly Recurring Revenue

Normalized MRR from all active subscriptions — monthly subs at face value, annual subs divided by 12. The clearest indicator of recurring business momentum.

💰

Net Revenue

Gross Revenue minus total refunds. The “real” revenue figure — what you actually retained after honoring refund requests.

🎯

Total Purchases

Count of unique new purchases (initial orders only — auto-renewals excluded). The actual customer acquisition count.

👑

Average Order Value

Gross Revenue ÷ Total Purchases. A direct readout of whether your pricing tiers are achieving the revenue per customer you’ve targeted.

😕

Total Refunds

Total refunded amounts across all products. High refund rates signal product-market fit problems, misleading marketing, or support issues.

How MRR Is Calculated from Freemius Subscription Data

MRR calculation requires careful handling of mixed billing cycles. The plugin fetches all subscriptions via /plugins/{id}/subscriptions.json and applies this normalization logic:

// For each active, non-cancelled subscription:
if (billing_cycle == 1) // Monthly subscription
mrr += amount_per_cycle;
if (billing_cycle == 12) // Annual subscription
mrr += (amount_per_cycle / 12);

Only subscriptions meeting all three criteria are included in MRR:

  • Not cancelled (canceled_at field is empty)
  • Not expired (is_expired is false)
  • Not in sandbox/test mode (environment field is 0)
  • Both amount_per_cycle and renewal_amount are greater than zero (subscriptions with $0 renewal amounts are excluded)

This produces a conservative, accurate MRR figure that reflects only currently active, paying subscriptions — not trial users, not cancelled subscribers still within their paid period, and not test accounts. The resulting MRR is the “live” recurring revenue number you’d use when evaluating business health or discussing your business with investors or acquirers.

Gross Revenue vs Net Revenue: Refund Tracking

Freemius payment records include both positive gross amounts (sales) and negative gross amounts (refunds). The analytics engine handles both:

  • Positive gross amounts: Added to plugin gross revenue and purchase count (renewal payments are excluded from purchase count to avoid inflating the orders metric)
  • Negative gross amounts or payments of type ‘refund’: Added to the refunds total and excluded from gross revenue
  • Net Revenue = Gross − Refunds: The “real” revenue figure after honoring refund obligations

Displaying refund data separately (rather than just showing net revenue) is a deliberate design choice — it allows you to see your refund rate clearly and act on it. A rising refund trend that’s invisible in a net revenue-only view could indicate a product quality issue or misleading feature claims that warrant immediate attention.

Average Order Value: The Pricing Health Signal

Average Order Value (AOV) is calculated as Gross Revenue ÷ Total New Purchases. It is one of the most actionable metrics for a WordPress plugin developer because it directly reflects your pricing architecture’s effectiveness:

High AOV Signal

Customers are primarily buying your highest-tier plans or lifetime deals. May indicate your lower tiers are undervalued or that your audience has high buying intent.

Low AOV Signal

Most purchases are at your entry-level tier. May indicate price-sensitive buyers, unclear differentiation between tiers, or insufficient upsell to higher plans.

The per-plugin AOV in the Plugin Breakdown Table is particularly useful — comparing AOV across products tells you which products have pricing architectures that successfully guide customers to higher tiers vs. which are leaving revenue on the table at the entry-level.

Plugin-by-Plugin Breakdown Table

Below the aggregate metric cards, the dashboard renders a detailed Plugin Breakdown Table that shows every product in your Freemius developer account with its individual financial metrics side-by-side. Columns displayed for each product:

Product Gross MRR Refunds Net Purchases AOV
Plugin A $8,421 $612 $84 $8,337 103 $81.75
Plugin B $3,204 $289 $120 $3,084 52 $61.62
Total $11,625 $901 $204 $11,421 155 $75.00

This comparative view is the most actionable analytical output for multi-product plugin developers. It immediately answers the question: “Which product should I focus my next marketing effort on?” — usually the one with the highest MRR (most traction to build on) or the one with the highest purchase count but lowest AOV (pricing optimization opportunity).

Sandbox Transaction Filtering

During plugin development and testing, Freemius allows sandbox/test transactions that generate payment records in the API but don’t represent real revenue. Including these in analytics produces misleadingly inflated numbers.

The analytics engine explicitly checks the environment field on each payment and subscription record and skips any record where environment !== 0. Environment 0 indicates a live production transaction. Environment 1 indicates a sandbox test transaction. This filtering happens at the data ingestion layer before any metric calculation — ensuring that your dashboard always reflects only real customer revenue, regardless of how much test purchasing you’ve done during development.

WordPress Plugin Dashboard vs. Freemius Native Dashboard

Capability Freemius.com Dashboard WordPress Plugin
All-products aggregate view ✗ ✔
MRR across all products Per-product Aggregated
Lives inside WordPress admin ✗ ✔
Plugin-by-plugin AOV comparison Manual calculation Automatic
Checkout button management ✗ ✔
Refund tracking alongside gross Separate view Unified dashboard

Vs. Lemon Squeezy & Paddle: Why WordPress-Native Analytics Wins

Both Lemon Squeezy and Paddle are increasingly considered as freemius alternatives for WordPress plugin monetization. One genuine advantage both have over Freemius is a more modern analytics dashboard on their own platforms — Lemon Squeezy in particular has excellent revenue charting and subscription metrics in its dashboard.

However, neither Lemon Squeezy nor Paddle offers a WordPress plugin that brings their analytics into the WordPress admin. For WordPress developers who spend most of their working hours inside WordPress, having your revenue data in the same environment where you write content, manage plugins, and build marketing pages is a significant productivity advantage that no external dashboard can replicate.

Additionally, Freemius’ deeper WordPress integration — native update API, in-plugin freemium flows, per-site license enforcement — gives it structural advantages over both Lemon Squeezy and Paddle for WordPress-specific products that this analytics dashboard builds upon rather than replaces.

API Architecture: How Data Is Fetched

The analytics data flow works as follows:

  1. The React dashboard makes a GET request to the WordPress REST API endpoint: /wp-json/freemius-checkout/v1/stats
  2. The REST handler instantiates Freemius_API_Service using the stored credentials
  3. The service calls get_stats() which fetches /plugins.json to get all products
  4. For each product, it calls /plugins/{id}/payments.json?count=100 (payments) and /plugins/{id}/subscriptions.json?count=100 (for MRR)
  5. Metrics are calculated server-side in PHP and returned as a structured JSON response
  6. The React dashboard renders the metric cards and breakdown table from the JSON response

The current implementation fetches up to 100 payments and subscriptions per product per API call. For high-volume products with very large transaction histories, this represents the most recent 100 records. Future versions may implement pagination or date range filtering for larger catalogues.

Frequently Asked Questions

Is the analytics data real-time or cached?

The data is fetched live from the Freemius API on every dashboard load — there is no caching layer in the current implementation. This ensures you always see current numbers. The trade-off is that the initial dashboard load takes a few seconds while multiple API calls complete.

Does it work if I have only one Freemius product?

Yes. The Plugin Breakdown Table will show a single product row, and the aggregate metrics will equal that product’s metrics. The dashboard is designed to be as useful for single-product developers as for multi-product developers.

Are renewals counted as purchases?

No. The plugin checks the is_renewal flag on each payment record. Renewal payments contribute to gross revenue but are excluded from the purchase count — ensuring that the Purchases metric represents unique new customer acquisitions rather than a combined new+renewal figure.

Can I filter analytics by date range?

Date range filtering is not in the current v1.1.0 implementation — the dashboard shows cumulative lifetime metrics based on the most recent 100 API records per product. Date range analytics filtering is a logical next feature for a future version.

See Your Freemius Revenue in WordPress

Real-time MRR, gross revenue, AOV & plugin-by-plugin breakdown — without leaving your WordPress admin.

Get the Plugin →

Mark Henry's avatar
Written by

Mark Henry

Mark Henry is a lead content creator and WordPress expert at ShopCentral.