Back to BlogAutomation

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.

December 26, 2025
5 min read

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 FUNCTION

This 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)

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. Calculate KPIs. In Dashboard, use SUMIFS and AVERAGEIFS—or compute in Apps Script: const roi = (revenue - spend) / spend. Flag CPA > target with conditional formatting.

  6. 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.

  7. 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

Automate campaign tracking with Google Workspace. Monitor performance, track budgets, and optimize campaigns from a centralized dashboard.
Automate client reporting with Google Workspace. Pull data from multiple sources, create beautiful reports, and schedule delivery automatically.

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.

Google Apps Scriptbusiness automationWorkspace automationlow-codeApps Script automationworkflow automationtime savingsmanual task elimination