This workflow automates the daily reporting of Google Ads campaign performance. It pulls click and conversion data from the Google Ads API, merges both datasets, and stores the results into Notion databases and Google Sheets.
It includes a campaign-level log and a daily performance summary. The workflow is triggered automatically every day at 08:00 AM , helping marketing teams maintain a consistent and centralized reporting system without manual effort.
Scheduled Trigger at 08:00 AM
The workflow begins with a Schedule Trigger node that runs once per day at 08:00.
Set Yesterday’s Date
The Set node defines a variable for the target date (yesterday), which is used in the API queries.
Query Google Ads API – Clicks & Cost
The first HTTP request pulls campaign-level metrics:
campaign.id, campaign.namemetrics.clicks, metrics.impressions, metrics.cost_microsQuery Google Ads API – Conversions
The second HTTP request pulls conversion-related data:
metrics.conversions, segments.conversion_action_nameSplit and Merge
Both responses are split into individual campaign rows and merged using:
campaign.idsegments.dateStore Campaign-Level Data
Generate Daily Summary
A code node calculates daily totals across all campaigns:
Schedule Trigger nodeSet Yesterday Date nodedeveloper-tokenlogin-customer-idContent-Type: application/jsonCreate two databases in Notion:
Campaign Name, Campaign ID, Impressions, Clicks, Cost, Conversion Type, Conversions, DateDate, Total Impressions, Total Clicks, Total Conversions, Total Cost, Conversion TypesCampaign Daily Report → for campaign-level rowsSummary Report → for daily aggregated metricsNotion Databases:
Google Ads Campaign Tracker: stores individual campaign metricsGoogle Ads Daily Summary: stores daily totals and conversion typesGoogle Sheets Tabs:
Campaign Daily Report: per-campaign dataSummary Report: aggregated daily performance

