Marketing Dashboard
Unified CLI for marketing metrics. Built for quick status checks and deeper dives.
Quick Start
./dashboard.py status
./dashboard.py seo --period 30d
./dashboard.py ads --period 7d
./dashboard.py revenue --period 90d
./dashboard.py funnel
Commands
mktg status- Traffic (7d), revenue (30d), top errorsmktg seo --period [7d|30d|90d]- GSC clicks, impressions, avg position, top queriesmktg ads --period [7d|30d]- Spend, impressions, clicks, CPA by platformmktg revenue --period [30d|90d]- MRR, churn, new subs, revenue by productmktg funnel- Funnel: visit → signup → trial → paid
Environment
| Variable | Purpose |
| --- | --- |
| POSTHOG_API_KEY | PostHog API key |
| POSTHOG_PROJECT_ID | PostHog project id |
| GSC_SITE_URL | Search Console property URL |
| GOOGLE_APPLICATION_CREDENTIALS | Service account JSON path |
| STRIPE_SECRET_KEY | Stripe API key |
| ADS_METRICS_PATH | JSON file for ad platform metrics |
| ADS_METRICS_JSON | Inline JSON for ad metrics |
| FUNNEL_STEPS | Comma list of PostHog events (default: $pageview,signup,trial,paid) |
Ads JSON Shape
{
"google": {"spend": 123.45, "impressions": 10000, "clicks": 321, "cpa": 12.34},
"meta": {"spend": 98.76, "impressions": 9000, "clicks": 210, "cpa": 15.67}
}
Files
dashboard.py- Click CLI entrypoint (mktg)src/posthog_client.py- PostHog API wrapper viahttpxsrc/gsc_client.py- Search Console wrapper viagoogle-auth+googleapiclientsrc/stripe_client.py- Stripe metrics wrappersrc/display.py- Rich tables and formatting
Notes
- Prefer PostHog for traffic and funnel. Uses
insights/trendandinsights/funnel. - GSC reads only. Requires Search Console access for the service account.
- Stripe metrics are computed from subscriptions and invoices; keep product naming consistent.