All projects

Client Reporter

Open-source, self-hosted Laravel app that pulls data from a client's CMS, analytics and shop into white-label reports.

Year
2026
Status
In progress
Stack
  • PHP
  • Laravel
  • Livewire
  • Tailwind CSS
The Client Reporter dashboard for a fictional agency, with client and site counts, integrations and recent report activity.

What it is

Client Reporter is free, self-hosted client reporting for web agencies and freelancers. It plugs into the services your clients’ sites already run on, such as their CMS, analytics, shop and uptime monitor. It pulls the numbers in on a schedule and turns them into a clean, branded report you can hand over with your name on it.

It comes with read-only connector plugins for WordPress and Craft CMS. It’s early: the current release is v0.1.0.

Why I built it

I got tired of paying a monthly fee, per client, to a SaaS just to send people a tidy monthly report – and of the data living on someone else’s server. So I built the thing I wanted: you host it, you own the data, and it’s free. No seats, no per-client pricing, no licence keys, nothing to phone home.

Technical notes

  • Integrations are Composer packages, discovered through the extra.client-reporter.integrations key, and a generator command scaffolds new ones.
  • Requests to the WordPress and Craft connectors are signed with HMAC-SHA256 over the method, path, timestamp, nonce and body hash. The plugins reject anything more than five minutes out and any nonce they’ve already seen.
  • It has a built-in, read-only MCP server.
  • Monthly reports can include an optional AI summary, off by default, from OpenAI, Anthropic or Ollama.
  • Branding cascades from the agency to each client and site, and clients get their own portal.
  • It runs on shared hosting from a single cron line with no Redis, and can bulk-import sites from MainWP, ManageWP or WPMgr.