Build a Marketing Dashboard with Claude Code: Your KPIs, One URL
By Jonah, Founder of FindClout — July 2026
Every marketing team I've ever worked with has the same Monday ritual: open five different tabs — ad platform, analytics, Shopify, email tool, maybe a spreadsheet someone maintains by hand — and manually stitch the numbers into a slide. Then a BI tool gets purchased to "fix" this, which mostly means you're now paying monthly to look at the same five tabs inside one slightly nicer tab.
The actual fix is a page. One URL, one screen, every number that matters to you, refreshed automatically, hosted for free. Claude Code builds it in an afternoon. This post walks the exact build — connecting APIs, storing the numbers, rendering the charts, and deploying it — the same way I run it for FindClout's own internal metrics.
Get Claude Code installed first if you haven't — the setup guide takes 20 minutes.
Decide what actually goes on the dashboard
Before writing anything, list the 5-10 numbers you actually check every week. Not everything a platform can report — the handful that actually drive a decision. Spend, CAC, conversion rate, top campaign by ROAS, email list growth, whatever your business runs on. This list is your spec. Vague specs produce vague dashboards; a sharp list of numbers produces a sharp tool.
Step 1: Describe the whole thing to Claude Code
Open a terminal in a fresh folder, run cc, and hand over the spec in plain English:
tell cc: "Build me a marketing dashboard as a single web page. I want
to see: total ad spend and ROAS from Meta Ads, website sessions and
conversion rate from Google Analytics, and revenue from Shopify — all
for the last 7 and 30 days, with a simple trend chart for each. Dark
theme, big numbers, no login required for now."
Claude Code will ask (or you can pre-empt it) which APIs you're connecting and whether you already have credentials. Have your API keys ready — Meta, Google Analytics, and Shopify each have their own developer console where you generate one. It'll walk you through wherever you get stuck; this is a case where Claude for marketing analytics is doing the exact API-stitching work an analyst usually does by hand.
Step 2: Store snapshots instead of hitting APIs live
A dashboard that calls every ad platform's API on every page load is slow and fragile — one API being briefly down breaks your whole view. The better pattern:
tell cc: "Instead of calling these APIs live on page load, set up a
Cloudflare D1 database and a scheduled job that pulls fresh numbers
from each API once a day and stores a snapshot. The dashboard page
should just read the latest snapshot from D1 — fast and doesn't
depend on every API being up at page-load time."
This is the same Cloudflare + D1 pattern from the waitlist page build — a Worker, a database, a scheduled function. Once you've done it once for a waitlist, this is a five-minute reuse of the exact same account and CLI you already have set up, which is exactly what the Cloudflare stack guide is about.
Want the whole system, not just this one dashboard?
Jonah's Guide to the Agentic Future is the free one-page PDF that gets your Cloudflare account and API routing set up once — every dashboard, bot, and scraper after this one reuses it.
Get the Free Guide (PDF) →Step 3: Handle each API's quirks (and there are always quirks)
This is where the terminal-agent approach actually beats hiring someone: every marketing API has a slightly different auth flow, rate limit, and data shape, and Claude Code has effectively memorized all of them.
- Meta Ads uses OAuth tokens that expire — ask for a refresh-token flow so you're not manually regenerating a key every 60 days.
- Google Analytics (GA4) uses a service account and the Data API — slightly more setup up front, but stable once wired.
- Shopify uses a simple admin API access token scoped to read-only order data — the fastest of the three to connect.
Describe each connection one at a time rather than all at once — "now add the GA4 connection the same way" — and let Claude Code build incrementally. If an API call fails, paste the exact error back. Auth errors are the single most common failure mode here, and also the most googled, meaning the model has seen the fix a thousand times before.
Step 4: Make it readable at a glance
A dashboard nobody looks at twice was a waste of an afternoon. Push on the visual pass explicitly:
tell cc: "Make the top-line numbers huge and put a small up/down
percentage change next to each one, comparing this period to the
previous one. Add a simple line chart under each metric. I want to
understand the whole week's performance in under 10 seconds."
Claude Code is genuinely good at this kind of design iteration — describe the feeling you want ("make it feel like a trading terminal," "more whitespace, less clutter") and it adjusts CSS and layout in seconds. Treat this step like art-directing a designer, because that's functionally what's happening.
Step 5: Deploy and share the URL
wrangler deploy
Live at a Cloudflare URL immediately. If the dashboard has anything remotely sensitive on it — spend numbers, revenue — don't leave it open to the internet. Ask for basic auth or Cloudflare Access in front of it:
tell cc: "Add a simple passcode gate in front of this page so it's
not publicly accessible — one shared password is fine for now."
What to add once the base dashboard works
- A Telegram summary. Have the same daily scheduled job that refreshes D1 also push a text summary to a Telegram group — see the Telegram bot build for the exact pattern.
- Automatic anomaly flags. "If ROAS drops more than 20% day over day, highlight that metric in red" — cheap to add, genuinely useful.
- A written weekly summary. Route the numbers through a cheap model via OpenRouter to auto-generate the Monday recap paragraph — this is the exact workflow in automating marketing reports.
The pattern generalizes past marketing, too — this is the same build growth teams use for the internal tools covered in Claude Code for growth teams: describe the outcome, wire the APIs, deploy for free, iterate forever.
Want help scoping your exact dashboard?
Book 15 minutes and tell me your stack — I'll help you figure out exactly which APIs to pull and how to lay it out before you write a single prompt.
Book a Setup Call →FAQ
Do I need to know how to code to build a marketing dashboard this way?
No. You describe which channels and which numbers matter, and Claude Code writes the code that fetches from each platform's API, stores it, and renders the charts. You provide API keys and describe what "good" looks like visually; the agent handles the plumbing.
Which marketing platforms have APIs I can pull from?
Most do — Google Analytics, Meta Ads, Google Ads, TikTok Ads, Shopify, Stripe, and most email platforms. Some require an approved developer app, so budget extra time for those. Claude Code can read the docs and wire up authentication for each one.
How often does the dashboard refresh?
Whatever you set. A common setup is a scheduled job that pulls fresh numbers every hour or once a day into a database, with the dashboard page reading the latest stored snapshot instead of hitting every API live.
Is this actually cheaper than a BI tool subscription?
Usually, by a wide margin. Cloudflare Pages/Workers plus D1 is free at dashboard-scale traffic as of 2026, versus $50 to $500+ a month for most BI or dashboard SaaS tools on a real plan.
Can I password-protect the dashboard?
Yes — ask Claude Code to add basic auth or a passcode gate, or use Cloudflare Access for proper login-based protection tied to your team's email domain. Either is a small addition once the base dashboard works.
Jonah is the founder of FindClout, a curated creator distribution network that has generated 3.3B+ views for brands across sports, prediction markets, AI, and more, built on verified American audiences. He builds most of FindClout's internal tooling himself, in a terminal, with zero formal coding background. Reach him at [email protected] or book a call.
findclout.com