Back to Templates

Monthly Google Ads performance report sync to Google Sheets

Created by

Created by: Growth AI || growthai
Growth AI

Last update

Last update a day ago

Share


Who it's for

This workflow is for digital marketing agencies or in-house PPC managers who handle multiple Google Ads accounts and need to consolidate monthly campaign performance data into Google Sheets automatically.

How it works

  1. A schedule trigger fires on the 3rd of each month at 10 AM to start the reporting process.
  2. A Google Sheets node reads the list of clients (including their Customer IDs) from a source sheet.
  3. A loop iterates over each client one by one, sending a POST request to the Google Ads API (searchStream endpoint) to retrieve last month's campaign metrics (cost, clicks, impressions, conversions, conversion value).
  4. A JavaScript code node flattens and transforms the raw API response, normalizing cost from micros and rounding numeric values.
  5. The processed rows are appended to a dedicated per-client tab in the same Google Sheet.
  6. A wait node pauses execution between each client iteration to respect API rate limits before looping back.

How to set up

  • [ ] Duplicate the template spreadsheet : Google Sheets Template and save it to your Google Drive
  • [ ] Connect your Google Sheets OAuth2 credentials and set the correct spreadsheet and source sheet (client list)
  • [ ] Connect your Google Ads OAuth2 credentials in the HTTP Request node
  • [ ] Replace the developer-token and login-customer-id header values with your own
  • [ ] Ensure each client tab in the spreadsheet is named Data {Client} to match the dynamic sheet name
  • [ ] Adjust the Wait node delay if needed to avoid rate limiting

Requirements

  • Google Ads account with API access and a valid developer token
  • Google Sheets account with OAuth2 credentials
  • A spreadsheet with a "Client" sheet listing clients and their Customer IDs

How to customize

  • Modify the GAQL query in the HTTP Request node to pull different metrics or date ranges (e.g., LAST_7_DAYS, THIS_MONTH)
  • Extend the JavaScript transformation to compute additional KPIs such as CPC or ROAS before appending to the sheet
  • Add a Slack or email notification step after each client is processed to alert stakeholders when the report is ready