Campaign Analytics Dashboard
A self-hosted Streamlit dashboard that gives marketing teams real-time campaign visibility without waiting for BI team or expensive tools.
The Problem
Marketing teams wait days for BI dashboards to be updated or for data analysts to pull reports. By the time the data arrives, the campaign budget is already spent. Decisions that need to happen this week happen next month.
Business Impact
Gives marketing teams same-day visibility into campaign performance without relying on BI teams or expensive tools. Enables faster budget reallocation, quicker identification of underperforming campaigns, and data-backed decision making at the speed marketing actually moves.
Before / After
| Before | After |
|---|---|
| Days waiting for data | real-time dashboard. Multiple platform logins |
The Problem
Marketing moves fast. Data moves slow.
You launch a campaign on Monday. By Wednesday you want to know: is this working? Should we shift budget? Which channel is actually converting?
But the BI dashboard was last updated Friday. The data analyst is tied up until Thursday. Your Google Sheets pivot table broke again. So you make the decision with incomplete information — or worse, gut feel.
This is not a tooling problem. It’s a timing problem. By the time you see the data, the budget is already spent.
The Solution
A self-hosted Streamlit dashboard that gives you campaign visibility in 30 minutes, not 3 days.
Single view of:
- Spend, clicks, and impressions by campaign and channel
- Revenue and pipeline influenced by each channel
- Week-over-week performance comparisons
- ROAS and CPL by source — visible instantly
No BI tool required. No waiting for a data team. Upload your CSVs or connect to Google Sheets and the dashboard updates.
Before / After
| Before | After |
|---|---|
| Wait 2-3 days for BI/data analyst | Same-day dashboard, 30 min setup |
| Log into 3+ platforms for data | Single view across all channels |
| Budget decisions based on gut feel | ROAS and CPL by channel, visible instantly |
| ”Can someone pull the numbers?" | "The dashboard is updated. Let’s decide.” |
Who this is for
- Marketing teams who need faster visibility than their BI stack provides
- Marketing managers making weekly budget allocation decisions
- Teams who can’t justify expensive BI tools but need structured campaign analytics
How to use it
git clone https://github.com/christmantoro/campaign-analytics-dashboard
cd campaign-analytics-dashboard
pip install -r requirements.txt
streamlit run app.py
Open http://localhost:8501 in your browser. Upload your data files using the sidebar.
Data format
The dashboard expects CSV files with these columns:
| Column | Type | Description |
|---|---|---|
| date | date | YYYY-MM-DD format |
| campaign | string | Campaign name |
| channel | string | Channel (Google, Meta, etc.) |
| spend | float | Ad spend in local currency |
| clicks | int | Total clicks |
| impressions | int | Total impressions |
Revenue and pipeline columns are optional but enable ROAS calculations.
Current status
Work in progress. Core spend and traffic metrics work. Revenue attribution is the next milestone.
Related
This dashboard is the natural next step after automating your reports. Start with Marketing Report Automation to get structured data flowing, then add the dashboard layer for real-time visibility.
Facing the same problem?
I work with marketing teams to automate reporting, build analytics dashboards, and replace manual data work with Python-powered workflows.
Start a conversation →