Daily Google Ads performance digest in Slack
Every weekday at 9am, get an AI written summary of yesterday's Google Ads spend, conversions, and ROAS posted straight to your Slack channel.
Build me an agent workflow that posts a daily Google Ads performance digest to Slack every weekday at 9am in my timezone. This is the everyday PPC standup that in-house marketers and ad agencies rebuild by hand. I want it fully automated.
Trigger: cron, Monday through Friday at 9:00am. Make the day of week and time configurable when the workflow is set up.
Step 1. Pull yesterday's campaign performance from Google Ads for the connected customer. Use the Campaign Performance Report operation, or a Search Stream GAQL query against campaign metrics, whichever gives cleaner per campaign rows. For each active campaign I need: campaign name, campaign id, clicks, impressions, cost (metrics.cost_micros divided by 1,000,000 for display in account currency), conversions, conversion value, click through rate, cost per acquisition, and return on ad spend (ROAS = conversion value divided by cost).
Step 2. In the same run, pull a rolling 7 day baseline covering the 7 days before yesterday, aggregated per campaign, so we can compare yesterday to a normal day. Same metrics.
Step 3. Have the agent analyze the two datasets and identify: the headline number for the day (total spend, total conversions, blended ROAS), the top 2 or 3 movers in a positive direction, the top 2 or 3 movers in a negative direction, and any anomalies where a campaign's ROAS dropped or cost spiked past a configurable threshold versus its 7 day baseline. Defaults: flag when ROAS drops by more than 30 percent or when cost jumps by more than 50 percent versus the trailing 7 day average. Make both thresholds configurable.
Step 4. Write a short narrative digest: 4 to 6 bullets in Slack mrkdwn. Include the headline number as the first line, then wins, then losses and anomalies, then one clear recommendation for the day (for example "pause X for review" or "shift budget from Y to Z"). Keep the tone plain and useful, not marketing fluff. Format campaign names in bold with *asterisks*.
Step 5. Post the digest to a Slack channel using the Slack Bot Send a Message operation. Channel id should be configurable at setup time. If any Google Ads call fails or returns zero campaigns, still post a short message to the same channel saying the digest could not be generated and why, so the team knows the automation ran.
Important details:
- Google Ads cost is returned in micros; always divide metrics.cost_micros by 1,000,000 before showing it. Same for any other _micros field.
- Only include campaigns whose status is ENABLED, or that spent more than zero yesterday. Skip removed and paused campaigns with no activity.
- Use Slack mrkdwn syntax, not standard markdown: single *asterisks* for bold, _underscores_ for italic, and <url|text> for links.
- If the account uses a Google Ads manager (MCC), the workflow should still work against the operating customer id on the connection.
Additional information
What does this prompt do?
- Pulls yesterday's Google Ads results across every campaign, including clicks, impressions, cost, conversions, click through rate, cost per acquisition, and return on ad spend.
- Compares each campaign against its trailing 7 day baseline so top movers, ROAS drops, and cost spikes are called out automatically.
- Writes a short 4 to 6 bullet narrative with the headline number, biggest wins, biggest losses, and one clear recommendation for the day.
- Posts the digest to your chosen Slack channel every weekday at 9am so the whole marketing team starts the day on the same page.
What do I need to use this?
- A Google Ads account you can sign in to, with permission to view campaign performance for the customer you want to report on.
- A Slack workspace and a channel where the daily digest should be posted.
- A rough sense of what a good day looks like for your account, so you can set the ROAS drop and cost spike thresholds that trigger anomaly flags.
How can I customize it?
- Change the schedule. Run it earlier, later, seven days a week, or only on business days.
- Point it at a different Slack channel, or send to multiple channels for different stakeholders.
- Tune the alert thresholds. Decide how big a ROAS drop or cost jump has to be before the agent flags it as an anomaly.
- Adjust the metrics or the tone of the summary. Focus on a few campaigns, group by campaign type, or ask for a more executive style recap.
Frequently asked questions
Which Google Ads metrics are included in the digest?
Can I run this for a client account inside a Google Ads manager (MCC)?
How does the anomaly detection work?
Can I post the digest to more than one Slack channel?
Will it run on weekends?
Related templates
Stop rebuilding your PPC standup deck by hand.
Connect Google Ads and Slack once, and Geni delivers yesterday's campaign story to your team every weekday at 9am.