Case Study: Marketing Agency Dashboard — Every Ad Account in One View
All case studies
Case Study

Every ad account in one place, with a daily list of what to change.

A 10-person marketing agency was checking performance one login at a time, across Meta Ads, Google Ads, Search Console, GoHighLevel, HubSpot and more. We built a single internal dashboard that pulls all of it into one view, and runs an overnight analysis that leaves the team a list of recommended changes waiting each morning.

Next.js Supabase Multi-API Integration Claude API Vercel
Meta Ads Google Ads Search Console GoHighLevel HubSpot TODAY’S ACTIONS GENERATED 3:00 AM Pause ad set — CPA 2.3× target Shift $180/day to the top creative Search Console: 4 pages lost impressions

The challenge

An agency's day starts with logging into things. Every account lives on a different platform, every platform reports differently, and the work of assembling a picture eats the time that should go into acting on it. Problems surface late — a campaign drifts for days before someone happens to open the right tab.

Two different people needed two different views. The team needed everything, across every account, in one place. The owner needed the altitude view: how the agency as a whole is performing, without going account by account to find out.

What we built

One internal dashboard for the team, a second for the owner, and an analysis layer on top of both.

  • A single team dashboard pulling Meta Ads, Google Ads, Google Search Console, GoHighLevel, HubSpot and more into one view
  • An owner dashboard for performance across the whole agency
  • Campaign and ad set level performance, compared across accounts
  • Creative analysis — which creatives are carrying an account and which are dragging it
  • Ad budget analysis across campaigns
  • A daily list of suggested actions, generated overnight and re-runnable on demand
  • Internal only — no client-facing access

The dashboard doesn't change anything in the ad accounts. It tells the team what's worth changing, and the team decides.

The technical foundation

FrameworkNext.js
Backend & AuthSupabase
IntegrationsMeta, Google Ads, GSC, GoHighLevel, HubSpot
AnalysisClaude API
SchedulingOvernight job, re-runnable
HostingVercel
Access controlTeam & owner views

The hard part of a build like this isn't the dashboard, it's the ingestion. Each platform has its own API, its own rate limits, its own definition of a conversion, and its own way of failing. Data is pulled and normalised into a common shape first, so a number means the same thing regardless of which platform it came from — otherwise every chart is quietly comparing things that aren't comparable.

The analysis runs overnight against each account's own data and its own history, and produces recommendations for a human to act on. Nothing is pushed back to the ad platforms automatically. That's a deliberate line, and the same one we draw on every build — see how we think about AI across our builds →

The outcome

The team starts the day with a list instead of a login sequence. Performance across every account is visible in one place, and the owner has a view across the agency that didn't previously exist. Like the other systems here, it bought the agency more output from the same ten people.

Want something built like this?

Book a free 30-minute call — no pitch deck required.