How I Built a Live Ads Dashboard Without Paying for a Tool
You do not need Databox, Supermetrics, or a $400/month reporting tool to see your ad numbers in one place. I built a live marketing dashboard in Google Sheets for a DTC brand I ran, and it pulled spend, revenue, and ROAS from three ad platforms every morning without me touching it. If you want to know how to build a marketing dashboard in Google Sheets that actually stays current, here is exactly how I did it.
The short answer
Google Sheets plus native connectors and Apps Script can replace most paid dashboard tools for a single brand or small team. The reason is simple. Facebook, Google, and TikTok all have free ways to pull data into Sheets, either through their own export tools or through a Google Sheets add-on. Once the data lands in a raw tab, formulas do the rest. You are not paying for the pull, you are paying for someone else's formulas. Build your own.
What changes the timing
Whether this is worth building now or later depends on a few things.
- Number of ad platforms. One platform is a 20-minute build. Three platforms with different data structures is a weekend project.
- How often you check numbers. If you check spend daily, automate it. If you check monthly, a manual export is fine and a dashboard is overkill.
- Team size. Solo operators can live with a messy sheet. Once three or more people need to see the same numbers, structure matters and a real dashboard tab earns its keep.
- Budget size. On the $2.2B infrastructure project I marketed, we tracked spend against milestones, not daily ad performance, so the build looked totally different than it did for a DTC brand spending $40K a month on Meta.
How to actually build it
Here is the structure I used, and it still holds up.
- Raw data tabs. One tab per platform. Meta Ads has a free Google Sheets connector inside Ads Manager reporting. Google Ads has a native "Google Ads" add-on in Sheets under Extensions. TikTok requires a Zapier free-tier connection or manual CSV export if you want to stay at zero cost.
- A master tab. This pulls from each raw tab using QUERY or IMPORTRANGE. I used QUERY because it lets you filter and reshape data without touching the source.
- Calculated fields. ROAS, CPA, and blended CAC all live here, not in the raw tabs. Example formula I used daily: =SUMIFS(Meta!D:D,Meta!A:A,TODAY())/SUMIFS(Meta!C:C,Meta!A:A,TODAY()) to get same-day ROAS pulled straight from the raw Meta tab.
- A dashboard tab. Charts and a handful of scorecards, nothing else. No formulas live here. It only reads from the master tab.
- Apps Script trigger. A simple time-based trigger refreshes the QUERY functions and emails you if spend jumps more than 20% day over day. That one script caught a broken Meta campaign that had doubled its budget overnight before it burned another $3,000.
Total build time for a single-platform version: about two hours. For three platforms with automated alerts: closer to eight hours spread over a few days, mostly because of how each platform names its columns differently.
Signs you are overdue
You probably need this dashboard now if:
- You are logging into three different ad accounts every morning just to check spend
- Someone on your team asked for "last month's numbers" and it took you more than 10 minutes to pull them
- You have caught a budget overspend a day or two late, after the money was already gone
- You are paying for a reporting tool and using less than a third of its features
The most common mistake
People build the dashboard tab first. Wrong order. You end up with a beautiful chart pulling from a mess of inconsistent raw data, and the first time a platform changes a column name, the whole thing breaks silently. Build the raw tabs and master tab first, get the math right, and only then make it look good. Function before formatting, every time.
What happens if you wait too long
The cost of not having this isn't dramatic, it's slow. You make decisions on stale numbers. I have seen a media buyer keep a losing campaign live for four extra days because the reporting tool's dashboard only refreshed every 24 hours and nobody checked the raw account directly. At $600 a day in wasted spend, that is $2,400 gone on a delay that a live sheet would have caught same-day.
The other cost is trust. When leadership asks for numbers and marketing takes two days to pull them together, marketing looks disorganized, even if the campaigns are working. A live dashboard, even a plain one in Google Sheets, signals that you know your numbers cold.
Practical takeaway
Start with one platform. Connect it to a raw tab using the free native tool. Build one QUERY formula that pulls spend and revenue into a master tab. Add ROAS. Stop there for a week and see if you actually check it daily. If you do, add the next platform. Most people never need the paid tool. They just never sat down for the two hours it takes to build the free version.