Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

clientreport

Open-source, self-hosted client reporting for marketing agencies.

One config file → a branded, print-ready report pulling from the tools you already use: Google Analytics 4 · Google Ads · Meta Ads · HubSpot · CallRail · any CSV.

A free, own-your-data alternative to AgencyAnalytics, DashThis and Whatagraph.

Automated marketing reports · SEO & PPC client reporting · GA4 report generator · white-label agency dashboards — self-hosted, in Python.

CI PyPI Python License: MIT Dependencies


Why

Agencies burn hours every month copy-pasting numbers from six dashboards into a slide deck, or pay $200–$600/month for a SaaS reporting tool that holds your clients' data hostage. clientreport does the boring part for you and keeps everything on your own machine:

  • 📊 One command, one file. Define a client in a tiny TOML file, get a polished HTML report you can email or print to PDF.
  • 🔌 The connectors agencies actually use. GA4, Google Ads, Meta Ads, HubSpot, CallRail, and a universal CSV escape hatch.
  • 🎨 White-label by default. Your brand colour, your logo, your footer. No "Powered by" you have to pay to remove.
  • 🔒 Self-hosted. Zero data leaves your box. No account, no vendor, no per-client pricing.
  • 🪶 Zero runtime dependencies. Pure standard library. Charts are hand-rolled inline SVG, so a report is a single portable HTML file.

See it in 10 seconds

pip install clientreport
clientreport demo

That builds a complete four-section sample report (GA4 + Google Ads + HubSpot + CallRail) and opens it in your browser — no API keys, no config.

Automated marketing agency client report generated by clientreport — GA4, Google Ads, HubSpot and CallRail KPIs with charts
Run clientreport demo to generate this yourself, or open examples/demo-report.html.

Real reports in three steps

# 1. Scaffold a client config
clientreport init acme

# 2. Add your credentials to the environment (never in the file)
export GA4_ACCESS_TOKEN=ya29....
export HUBSPOT_TOKEN=pat-na1-....

# 3. Build it
clientreport run acme.toml --open

A config is small enough for an account manager to edit:

[client]
name = "Acme Home Services"
period = "last_30_days"        # or explicit start/end dates
logo = "https://acme.com/logo.png"

[agency]
name = "Bright Digital"
brand_color = "#4f46e5"
footer = "Confidential — prepared for Acme Home Services"

[[source]]
type = "ga4"
property_id = "123456789"
access_token = "env:GA4_ACCESS_TOKEN"   # resolved from the environment

[[source]]
type = "hubspot"
token = "env:HUBSPOT_TOKEN"

[[source]]
type = "callrail"
account_id = "ACCxxxxxxxx"
api_key = "env:CALLRAIL_KEY"

Secrets are written as env:NAME references, so configs are safe to commit.

Connectors

type Source Required config
ga4 Google Analytics 4 property_id, access_token
gsc Google Search Console site_url, access_token
google_ads Google Ads customer_id, developer_token, access_token
meta_ads Meta (FB/IG) Ads account_id, access_token
hubspot HubSpot CRM token
callrail CallRail account_id, api_key
csv Any CSV file path
demo Sample data

Run clientreport connectors to see this list any time. Full auth walkthroughs are in docs/connectors.md.

clientreport vs AgencyAnalytics, DashThis & Whatagraph

clientreport AgencyAnalytics / DashThis / Whatagraph
Price Free (MIT) ~$200–$600+/month
Self-hosted / own data ❌ (their cloud)
White-label, no fee Paid add-on
Open source
Runs in CI / scriptable Limited
GA4 / Google Ads / Meta / HubSpot / CallRail

If you've searched for a free open-source alternative to AgencyAnalytics, a self-hosted DashThis alternative, or an automated client reporting tool for your agency — that's exactly what this is.

Use it as a library

from clientreport import build_report, render_html

report = build_report("clients/acme.toml")
html = render_html(report)
open("acme.html", "w").write(html)

Export to PDF

HTML prints beautifully as-is (Cmd/Ctrl-P → Save as PDF). For automated PDFs:

pip install "clientreport[pdf]" && playwright install chromium
clientreport run acme.toml --pdf

Roadmap

  • Scheduled runs + email delivery (clientreport schedule)
  • More connectors: LinkedIn Ads, Mailchimp, Shopify
  • Multi-client batch mode (clientreport run clients/*.toml)
  • Custom section ordering and commentary blocks
  • Themeable report templates

Connector contributions are very welcome — see docs/connectors.md. Adding a source is one small class.

FAQ

Is there a free, open-source alternative to AgencyAnalytics or DashThis? Yes — that's what clientreport is. It generates the same kind of branded client report from GA4, Google Ads, Meta Ads, HubSpot and CallRail, but it's MIT licensed, self-hosted, and free.

How do I automate client reports for a marketing agency? Define each client in a small TOML file and run clientreport run client.toml. Schedule it with cron or GitHub Actions to send reports every month automatically.

Can I generate a GA4 report automatically in Python? Yes. The ga4 connector pulls users, sessions, engagement and conversions from the Google Analytics 4 Data API and renders them into a report — no manual exporting.

Is my client data private? Completely. clientreport runs on your own machine and talks directly to each platform's API. No data is sent to any third-party service.

Do I need to know how to code? To build a report, no — you edit a small config file and run one command. To add a brand-new data source, a little Python helps (see the connector guide).

What does it cost? Nothing. MIT licensed, including commercial agency use.

Keywords

Marketing agency reporting tool · automated client reports · white-label SEO report generator · PPC reporting · GA4 reporting Python · HubSpot report automation · CallRail reporting · self-hosted analytics dashboard · open-source AgencyAnalytics / DashThis / Whatagraph alternative · marketing report generator.

Contributing

New connectors are the most valuable contribution — see CONTRIBUTING.md and docs/connectors.md.

git clone https://github.com/nawazxz/clientreport
cd clientreport
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest

License

MIT — do whatever you want, including commercial agency use.

About

Free open-source, self-hosted alternative to AgencyAnalytics & DashThis. Automated marketing agency client reports from GA4, Google Ads, Meta, HubSpot, CallRail & Search Console — one config file, zero dependencies.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages