The Analytics Stack for Laravel: Traffic, Revenue and Attribution in One Place
Laravel Composer Pacakge #Laravel #Analytics #SaaS Metrics #UTM Attribution #Server-Side Tracking

The Analytics Stack for Laravel: Traffic, Revenue and Attribution in One Place

4 min read Mohamed Said Mohamed Said

The Three-Tool Problem Every Laravel SaaS Knows

Most Laravel SaaS applications end up with the same analytics setup: a traffic tool (Google Analytics, Plausible, or Fathom), a subscription-analytics tool (ChartMogul, Baremetrics, or ProfitWell), and an ad pixel (Meta or Google tag). Each does its job in isolation. None of them talk to each other.

The result is three dashboards, three definitions of a "customer", and a quarterly spreadsheet where someone manually tries to join them. The numbers that actually drive budget decisions — which campaign brings customers who stay, what a newsletter subscriber is worth over 12 months, whether a campaign was profitable after churn — live in the gaps between the tools, not inside any one of them.

Why the Join Never Works

Each tool identifies users differently:

  • The traffic layer uses a client-side cookie
  • The revenue layer uses a Stripe customer ID
  • The ad pixel uses its own anonymous ID

Reconciling those three identifiers is manual, lossy, and stale the moment it's done. Add the fact that 30–50% of client-side events are swallowed by ad blockers, and you're making budget decisions on incomplete data.

A Single Server-Side Chain Instead

SimpleStats takes a different approach. Rather than watching one slice from the outside, it tracks the entire customer journey as one connected chain, server-side, from inside your Laravel app:

visitor → registration → login → payment

Because all four events are captured in the same place and linked to the same visitor ID, every downstream metric inherits the acquisition context automatically. A payment isn't just a payment — it's a payment from the visitor who arrived via utm_campaign=spring-sale from Germany six weeks ago. Nothing needs reconciling after the fact.

Running server-side also means no cookie banner for analytics, no ad-blocker blind spots, and GDPR compliance out of the box.

What the Unified Stack Covers

Traffic Analytics

Unique visitors, sources, campaigns, countries, devices, and conversion rate — the privacy-first web analytics layer you'd expect from Fathom or Plausible, but filterable by every revenue dimension below it.

Subscription Metrics

MRR and ARR, MRR movements (new, expansion, contraction, churn, reactivation), Net and Gross Revenue Retention, Quick Ratio, and LTV — the full ChartMogul-style dashboard, with every metric filterable by acquisition channel.

Campaign Profit

Enter ad spend per campaign and get ROAS, CAC, net profit, LTV:CAC, and CAC payback per channel — computed from revenue that is already attributed to the campaign that earned it.

Retention by Channel

Cohort retention filtered by channel, so the question shifts from "do users come back?" to "which channel brings the users who come back?"

AI Assistant and MCP Server

SimpleStats ships a built-in AI assistant that runs real queries against your connected dataset. You can ask natural-language questions like:

  • "Which channel brought the customers still active after 90 days?"
  • "What's the MRR of everyone who came in through the newsletter?"

Because the underlying data is already joined, the assistant can answer questions that would be unanswerable on a fragmented three-tool stack. It also ships a hosted MCP server for use inside Claude Code, Cursor, or Claude Desktop:

claude mcp add --transport http simplestats https://simplestats.io/mcp \
  --header "Authorization: Bearer API_TOKEN_HERE"

Installation

There is no three-way integration to wire up. Install one Composer package:

composer require simplestats-io/laravel-client

Point it at your existing User and payment models, and the full stack — traffic, subscriptions, campaign profit, retention, and the AI assistant — fills in from the same server-side data. Stripe, Paddle, and Lemon Squeezy are all supported.

Key Takeaways

  • Three separate analytics tools create unbridgeable identity gaps that make channel-level ROI impossible to calculate reliably.
  • Server-side tracking eliminates ad-blocker data loss and removes the need for a cookie consent banner on the analytics layer.
  • Linking visitor, registration, login, and payment events under one ID means every revenue metric is automatically attributed to its acquisition channel.
  • A single Composer package replaces the traffic tool, the subscription dashboard, and the ad-pixel attribution layer.
  • An AI assistant and MCP server integration are only as useful as the dataset underneath — a joined dataset is the prerequisite.

Source: The Analytics Stack for Laravel: Traffic, Revenue and Attribution in One Place — Laravel News, July 15, 2026

Found this useful?

Frequently Asked Questions

3 questions
Q01 Why can't I just join data from Plausible, ChartMogul, and my ad pixel manually?
Each tool uses a different identifier — a client-side cookie, a Stripe customer ID, and the pixel's own anonymous ID. Reconciling them is manual and lossy, and 30–50% of client-side events are blocked by ad blockers before they even arrive, making the resulting data incomplete and unreliable for budget decisions.
Q02 How does server-side analytics in Laravel avoid ad-blocker data loss?
Server-side tracking fires from within your Laravel application on incoming requests rather than from a browser script, so ad blockers have no opportunity to intercept the events. This means visitor and conversion data is complete, which is the prerequisite for every downstream metric being trustworthy.
Q03 What does the SimpleStats Laravel package actually track?
After running `composer require simplestats-io/laravel-client` and pointing the package at your User and payment models, it tracks visitors, registrations, logins, and payments as one connected chain. This single dataset powers traffic analytics, subscription metrics (MRR, churn, LTV), campaign profit (ROAS, CAC), and cohort retention — all filterable by acquisition channel.

Continue reading

More Articles

View all