Your return on ad spend is spread across five places. Meta Ads Manager has one number. Google Ads has another. TikTok, Pinterest, and your email tool each have their own. Then your Shopify or Stripe export has the revenue that actually hit the bank. None of these tabs agree, and none of them show you the whole picture at once.
A ROAS dashboard in Google Sheets fixes that. You drop the spend from each platform and the revenue from your store into clean data tabs, write a few formulas, and get one screen that shows blended ROAS, per-channel ROAS, sales, and spend together. It refreshes the moment you paste new numbers in. This guide walks through exactly how to build it, with real formulas you can copy.
What ROAS actually is
ROAS stands for return on ad spend. It answers one question: for every dollar you put into ads, how many dollars of revenue came back? The formula is simple division.
ROAS = Revenue from ads / Ad spend
Example:
Revenue attributed to ads = $42,000
Ad spend = $12,000
ROAS = 42000 / 12000 = 3.5
Read as 3.5x, or "$3.50 back per $1 spent"
A ROAS of 3.5 means every dollar of ad spend returned $3.50 in revenue. Some teams express it as a percentage (350%), but the multiple (3.5x) is the standard in ecommerce and agency reporting.
There are two flavors you will track, and your dashboard needs both:
- Per-channel ROAS measures one platform in isolation: Meta ROAS, Google ROAS, TikTok ROAS. It tells you where each marketing dollar performs best.
- Blended ROAS measures total revenue against total ad spend across every channel. It is the honest top-line number, because it does not let two platforms claim credit for the same sale.
One warning that saves teams from bad decisions: ROAS is not profit. A 3x ROAS can still lose money if your product margin is thin. Revenue is the top line, not what you keep. Many operators pair ROAS with MER (marketing efficiency ratio, total revenue divided by total marketing spend) and with contribution margin so they know whether a campaign is actually paying for itself after cost of goods. Track ROAS to steer channels, track margin to stay in business.
What a ROAS dashboard should show
A good dashboard fits the decisions you make on a Monday morning onto a single screen. Lead with KPI tiles across the top, then break out the detail underneath. The tiles you want:
- Total ad spend for the period, across all channels.
- Total revenue for the same period.
- Blended ROAS, the headline efficiency number.
- Per-channel ROAS, one figure per platform so you can compare at a glance.
- CAC (customer acquisition cost): ad spend divided by new customers.
- AOV (average order value): revenue divided by orders.
CAC and AOV matter because ROAS alone hides them. Two channels can both run at 3x ROAS while one brings cheap, low-value orders and the other brings expensive, high-value ones. The tiles together tell the real story.
Build it step by step
Lay out your data
The single most important habit: keep raw data separate from the dashboard. Your dashboard tab should contain only formulas and labels, never numbers you typed by hand. That way a refresh is just pasting new rows into the data tabs.
Use two raw tabs. A Spend tab with one row per day per channel:
A: Date B: Channel C: Spend D: Clicks
2026-06-01 Meta 420.00 1,840
2026-06-01 Google 310.00 980
2026-06-01 TikTok 145.00 2,210
2026-06-02 Meta 398.00 1,710
...
And a Revenue tab with one row per day per channel (use the same channel labels, exactly, so lookups match):
A: Date B: Channel C: Revenue D: Orders
2026-06-01 Meta 1,512.00 18
2026-06-01 Google 1,240.00 14
2026-06-01 TikTok 290.00 4
2026-06-02 Meta 1,433.00 17
...
Most ad platforms and store backends let you export a CSV in roughly this shape. Paste each export under its tab, keep the headers in row 1, and never delete or reorder the columns your formulas point at.
Calculate ROAS per channel
On the dashboard tab, list your channel names down a column (say A2:A6: Meta, Google, TikTok, Pinterest, Email). Then pull spend and revenue for each with SUMIFS and divide. This formula totals revenue for a channel, divides by total spend for the same channel, and guards against a divide-by-zero when a channel has no spend yet.
=IFERROR(
SUMIFS(Revenue!$C:$C, Revenue!$B:$B, $A2)
/
SUMIFS(Spend!$C:$C, Spend!$B:$B, $A2),
0
)
Drag that down the channel list and each row returns that channel's ROAS. To scope it to a date window (for example, this month only), add the date bounds to both SUMIFS so spend and revenue use the same period:
=IFERROR(
SUMIFS(Revenue!$C:$C, Revenue!$B:$B, $A2,
Revenue!$A:$A, ">="&$F$1, Revenue!$A:$A, "<="&$F$2)
/
SUMIFS(Spend!$C:$C, Spend!$B:$B, $A2,
Spend!$A:$A, ">="&$F$1, Spend!$A:$A, "<="&$F$2),
0
)
Put your start date in F1 and end date in F2.
Now changing the two dates in F1 and F2 re-scopes every channel's ROAS at once. That is your date filter, no pivot table required.
Blended ROAS and the KPI tiles
Blended ROAS is total revenue over total spend. Do not average the per-channel numbers, that overweights small channels. Sum the raw columns instead, then build the headline tiles from the same totals.
Total spend =SUM(Spend!C:C)
Total revenue =SUM(Revenue!C:C)
Total orders =SUM(Revenue!D:D)
Blended ROAS =IFERROR(SUM(Revenue!C:C)/SUM(Spend!C:C), 0)
AOV =IFERROR(SUM(Revenue!C:C)/SUM(Revenue!D:D), 0)
CAC =IFERROR(SUM(Spend!C:C)/SUM(Revenue!D:D), 0)
(use new-customer count instead of orders
if you track it)
Format the ROAS cells as a number with an "x" suffix using a custom number format (0.00"x"), and format spend, revenue, AOV, and CAC as currency. Drop each tile into a bordered cell with a big number and a small mono label above it, and the top of your dashboard reads at a glance.
Add trends
A single ROAS number hides whether you are climbing or sliding. SPARKLINE draws a tiny inline chart right in a cell, no chart object needed. This one shows daily blended ROAS over the last stretch of days, computed inline with array math so it needs no helper column.
=SPARKLINE(
ARRAYFORMULA(
SUMIF(Revenue!$A$2:$A, Spend!$A$2:$A, Revenue!$C$2:$C)
/
SUMIF(Spend!$A$2:$A, Spend!$A$2:$A, Spend!$C$2:$C)
),
{"charttype","line"; "color","#0F9D58"; "linewidth",2}
)
A simpler version if you keep a daily ROAS helper column H:
=SPARKLINE(Daily!H2:H, {"charttype","column"; "color","#0F9D58"})
Add one sparkline per channel next to its ROAS figure and the trend tells you which channel is heating up and which is cooling, without a single full-size chart.
ROAS dashboard examples
The same engine, those data tabs plus SUMIFS, supports several layouts. Three common ones:
Pick the one closest to how you report, then add or remove tiles. The data layout never changes, only the labels and which columns the tiles divide.
Keep it live
The dashboard refreshes itself the moment new rows land in the Spend and Revenue tabs, because every dashboard cell is a formula over those whole columns. There is no rebuild step. Your only job is to keep the data tabs current.
- Append, do not overwrite. Paste each new export under the existing rows. The whole-column SUMIFS and SUMs pick them up automatically.
- Automate the paste with Apps Script. A short script can pull each platform's export or an emailed CSV into the right tab on a schedule, so the sheet updates without you touching it. A time-driven trigger runs it nightly.
- Email a snapshot. Apps Script can also send a daily or weekly email with the headline tiles, or a PDF of the dashboard tab, to your inbox or a client. One
GmailApp.sendEmailcall after the data refresh does it. - Share read-only. Give clients and stakeholders view access so they always see live numbers and can never break a formula.
If you would rather start from a finished build than wire it from scratch, grab our free marketing and ad-spend dashboard template. It ships with the spend and revenue tabs, the per-channel and blended ROAS formulas, the KPI tiles, and the sparkline trends already in place. Paste your exports in and the dashboard fills itself.
The best ROAS dashboard is the one you will actually open every morning. Keep the raw data clean, let the formulas do the math, and it stays true to itself with zero rebuild.