Track All Marketing Campaigns in One Google Sheets Dashboard
Stop wasting 12 hours a week on manual reports. Build a self-updating dashboard in under an hour and always know which campaigns are profitable.
You lose 12 hours a week copying data from Google Ads, Facebook, and Mailchimp. By Friday, your numbers are stale, budgets are blown, and you’re guessing which campaigns made money. One missed update cost $3,200 last quarter. That ends now.
Manual Reporting Is Costing You Money
You’re spending 8-12 hours weekly on copy-paste work a script handles in 45 seconds. Reports decay the moment they’re sent. Naming chaos—“Summer_Sale_2024” vs. “summer-sale-2024”—breaks data joins. Underperforming campaigns run unchecked for days. When finance asks for ROI, you wing it. This isn’t reporting—it’s risk.
Build a Self-Running Dashboard in Under an Hour
Create a live Google Sheet that auto-pulls daily performance data from all platforms using Google Apps Script. No third-party tools. No monthly fees. The script runs on schedule, pulls API data, calculates ROI, CPA, and ROAS, and alerts your team when campaigns exceed budget. After setup, it runs itself.
Batch operations are critical. Writing cells one-by-one hits execution limits. Instead, fetch all data, transform into a 2D array, and write in one shot—completes in under 6 minutes, even with 50+ campaigns.
Here’s the core function for pulling Facebook Ads data—with immediate error alerts. Silent failures cost real money.
// Pseudo code for the application
FUNCTION syncFacebookAds(accessToken, accountId)
GET Sheet 'Raw_Facebook'
CONSTRUCT Facebook API URL (Campaigns, Insights: Spend, Clicks)
TRY
FETCH Data from API
HEADERS: Authorization Bearer Token
MUTE Exceptions: True
PARSE JSON Response
IF No Data THEN RETURN
TRANSFORM Data to Rows: [Name, Spend, Clicks, Timestamp]
CLEAR Sheet Content
WRITE Rows to Sheet (Batch Operation)
CATCH Error
SEND Alert Email to Admin
SUBJECT: "Facebook Sync Failed"
BODY: Error Details
THROW Error
END FUNCTIONThis stays within Apps Script’s 6-minute runtime and 20,000 daily URL fetch limits Google Apps Script Quotas. Store credentials in Script Properties—never hardcode. muteHttpExceptions: true prevents HTTP errors from crashing the script.
How to Set It Up (7 Steps, <60 Minutes)
-
Structure your sheet. Create tabs: Raw_Data (append-only), Dashboard (pivots), Settings (budgets, targets, emails). Use consistent headers: Date, Campaign, Platform, Spend, Clicks, Conversions, Revenue.
-
Connect Google Ads. Use Apps Script’s native Google Ads service—no OAuth. Pull cost, clicks, conversions per campaign. Schedule daily run at 2 AM.
-
Pull Facebook data. Use the script above. Get your access token from Facebook Business Settings > System Users. Store it in Script Properties (File > Project properties). Use Settings tab to manage account ID.
-
Import email metrics. For Mailchimp, call their API via UrlFetchApp. For CSV imports, use
IMPORTDATA()or fetch directly. Label each row by platform in Raw_Data. -
Calculate KPIs. In Dashboard, use
SUMIFSandAVERAGEIFS—or compute in Apps Script:const roi = (revenue - spend) / spend. Flag CPA > target with conditional formatting. -
Add alerts. Write a function that checks actual CPA against Settings, then fires
MailApp.sendEmail()on breach. Include campaign, current CPA, and target. Schedule hourly during business hours. -
Automate weekly reports. Generate an HTML summary from Dashboard data. Trigger every Monday at 9 AM. Email goes out with top performers, budget status, and red-flag campaigns.
Use Case 1: Multi-Channel Performance Monitoring for Agencies
A boutique agency manages Meta, Google, and LinkedIn ads for multiple clients and needs a unified view to compare cross-channel performance instantly. This eliminates the need to manually export CSVs and merge data for weekly client check-ins. ROI: Saves 12 hours of manual reporting per week.
Use Case 2: Real-Time ROAS Tracking for E-commerce
A direct-to-consumer brand tracks daily ad spend against Shopify revenue to identify which specific creative assets are driving the most profit. The dashboard automatically pulls data from various platforms to prevent overspending on underperforming campaigns. ROI: Increases profitable ad spend efficiency by 25% through faster decision-making.
Use Case 3: Cross-Channel Lead Attribution for SaaS
A startup tracks lead quality and cost-per-acquisition across search engines, social media, and email marketing in one central location. This allows the marketing team to reallocate budget to the highest-converting channels in real-time rather than waiting for end-of-month reviews. ROI: Reduces cost-per-lead by 30% by eliminating wasted spend.
Why This Beats Supermetrics (And Costs $0)
Supermetrics, HubSpot—$100-$500/month. They lock you into rigid logic and break on API changes. Support takes days. This dashboard costs nothing. You own every calculation. Add TikTok API in 20 minutes. Trade-off? You maintain it. But with a 30-day warranty, help is included if it breaks.
For marketing teams under $1M ad spend, this outperforms any paid tool. Pays for itself in week one.
Book a call, running by Friday. 30-day warranty.
Related Industry Guides
Need a Custom Automation Solution?
We specialize in building tailored Google Workspace automations for businesses of all sizes. Let us help you eliminate repetitive tasks and streamline your workflows.