Advertising — multi-channel ROAS for a media-buying agency

15 minutes. Three CSVs. You play the senior account manager at a 5-person media agency and answer the four questions your clients ask every month.

Updated 2026-04-17

Industry: Advertising / Agencies Difficulty: Beginner Time: 15 min Plan: Free works

The scenario

You’re a senior account manager at Northmark Media, a 5-person media-buying agency. You have 5 clients across fashion, beauty, health, home-goods, and outdoor — $185K a month in ad spend across Google, Meta, and TikTok.

At the end of every month you build the same five reports. Different client, same structure: what did we spend, what did it drive, what’s the trend, what’s underperforming. You do it in spreadsheets. It takes two days per client.

Today you’ll replace most of that workflow with Tablize. The four questions you’ll answer:

  1. Who’s over- or under-spending relative to their budget this month?
  2. Which campaigns are winning and losing across all clients?
  3. Which client is getting the worst efficiency — and why?
  4. Can each client self-serve a live view of their own performance?

15 minutes from cold start to shippable assets.

Download the sample data

Three CSVs. The performance data is lean; the conversion table is larger on purpose (individual events with LTV estimates) because that’s what makes the “true ROAS vs LTV-adjusted ROAS” question answerable.

1,800 rows · 60 days
ad-performance.csv
Daily platform data per (client, campaign). Spend, impressions, clicks, conversions, platform-reported revenue.
~44,500 rows
conversions.csv
Individual conversion events with conversion value, device, new-vs-repeat flag, and an LTV estimate.
5 rows
clients.csv
Client metadata — vertical, monthly budget, AOV, and vertical LTV benchmark.

Sign in at console.tablize.com, drag all three CSVs onto the chat. The Agent imports each and confirms row counts. You’re ready.

01

Who's over- or under-spending this month?

Month-to-date spend vs client monthly budget. The first question every agency meeting starts with.
Prompt
For each client, show month-to-date spend vs monthly budget, and project end-of-month spend based on current run rate. Flag anyone tracking to over 110% or under 80% of budget.
northmark · client pacing
step 1 · expected answer
Tablize
sql.query · MTD spend × budget join × linear projection 268 ms
Two clients are off-pace. FitCo is on track to spend 142% of budget this month — heavy push on Google Shopping and Meta. LuxeBeauty is tracking to only 54% after the budget cut 21 days ago hasn't been reversed.
ClientBudgetMTD spendProjected% of budget
FitCo Supplements$68,000$34,200$96,560142%
Trail Gear Co$18,000$9,400$18,800104%
Acme Apparel$45,000$22,800$45,600101%
Homescape$22,000$10,900$21,80099%
LuxeBeauty$32,000$8,700$17,40054%
· Step 1 — client pacing, with over/under-spend flags

Keep it: click + Watch pacing. The Agent creates a Watch that runs daily at 07:00. You’ll get a Slack/email ping any day a client trips the 110% or 80% threshold. That’s your Monday meeting pre-briefed.

02

Which campaigns are winning and losing across clients?

Common campaign patterns, ranked by ROAS. Good signal for which tactics to copy across the portfolio.
Prompt
Across all 5 clients, rank the 6 campaign types by blended ROAS over the last 30 days. For each, show spend, revenue, conversions, and which clients are running it profitably vs unprofitably.
northmark · campaign leaderboard
step 2 · expected answer
Tablize
sql.query · campaign × client aggregation with ROAS ratio 392 ms
Across the portfolio, Google Brand Search and Meta Retargeting are the top two campaign types — consistent 3-4x ROAS for every client. The weakest category is Google Non-brand Search, with two clients running it below 1.5x.
Google · Brand
4.1x
Meta · Retargeting
3.3x
TikTok · UGC
2.4x
Google · Shopping
2.0x
Meta · Prospecting
1.3x
Google · Non-brand
0.9x
Notable outliers: TikTok UGC is doing 4.2x for LuxeBeauty (best performer) but only 1.8x for FitCo — worth investigating why that campaign works for beauty but not health. Google Non-brand is underperforming everywhere, with FitCo particularly bad at 0.35x — they're bidding on the wrong keywords.
· Step 2 — campaign leaderboard, portfolio-wide

Keep it: click + Save as Script. Name it “campaign leaderboard” — next month you run it again with one click instead of rebuilding the analysis.

03

Which client is getting the worst efficiency — and why?

Deep-dive into one client's performance using the individual conversion data.
Prompt
Compute each client's cost-per-acquisition (CPA) and LTV-adjusted ROAS (revenue × LTV multiplier / spend) over the last 30 days. Who's the worst performer? Break down their spend by campaign and identify which specific campaigns are dragging their efficiency down.
northmark · fitco efficiency
step 3 · expected answer
Tablize
sql.query · per-client CPA and LTV-adjusted ROAS 418 ms
sql.query · FitCo campaign deep-dive 201 ms
FitCo Supplements is your weakest performer — LTV-adjusted ROAS of 2.6x vs a portfolio median of 4.8x. The issue is specific: their Google Non-brand Search campaign is burning 31% of budget at a 0.35x ROAS. Everything else is healthy.
ClientCPARaw ROASLTV ROAS
Acme Apparel$283.1x10.2x
LuxeBeauty$222.9x9.6x
Homescape$583.2x5.8x
Trail Gear Co$653.1x5.9x
FitCo Supplements$951.1x2.6x
Recommended action for FitCo: pause or reduce Google Non-brand by 60%, reallocate to Meta Retargeting (currently 3.8x for them). Projected monthly savings: $14K in wasted spend.
· Step 3 — CPA and LTV-adjusted ROAS, with a deep-dive on the worst client

Keep it: click + Save as client Report. Parameterize it by client — next month you run the same Report for Acme, LuxeBeauty, and the rest with one click each.

04

Let clients self-serve their own view

One parameterized Dashboard. Each client sees only their own numbers, via a private link.
Prompt
Build a client-facing Dashboard parameterized by client_id. Panels: (1) MTD spend vs budget, (2) ROAS by campaign this month, (3) top-converting days, (4) comparison to last month. Generate one private link per client so they can bookmark it.

The Agent generates a Dashboard template and publishes 5 per-client URLs. Each client sees their own data only. You paste the links into your client onboarding email template.

Clients now check Tablize instead of waiting for your end-of-month deck. Your time goes to the analysis and the strategy conversation, not the report build.

What you built in 15 minutes

  • 1 Watch — client pacing alert, fires on over-/under-spend.
  • 1 Script — campaign leaderboard, rerunnable per month.
  • 1 Parameterized Report — client deep-dive, one click per client.
  • 1 Dashboard — client-facing, per-client private links.

Your end-of-month report build dropped from 2 days per client to ~20 minutes per client (the strategy narration you still write by hand). Five clients × saved-day-and-a-half = 7.5 days a month back.

Next steps in this industry

  • Connect real dataGoogle Ads, Meta Ads, TikTok Ads all have built-in connectors. Spend numbers come in hourly.
  • Add the conversion sideGA4 or your client’s Shopify / Stripe. That’s how you get from “platform-claimed” to “true” ROAS.
  • Read the Advertising industry page — deeper scenarios: attribution models, incrementality testing, dayparting.

Nearby tutorials

  • E-commerce — if the spend is yours, not a client’s.
  • SaaS — if conversions are trials and subscriptions instead of orders.