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.

Agentic Task
Google AdsSlack BotMarketingOperationsDaily DigestsAI ReportsNotifications & Alerts
PromptCreate

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?
Clicks, impressions, cost, conversions, click through rate, cost per acquisition, and return on ad spend for every active campaign for yesterday, plus a 7 day rolling average for comparison.
Can I run this for a client account inside a Google Ads manager (MCC)?
Yes. When you connect Google Ads you can point the workflow at any customer account you have access to, including client accounts under a manager account.
How does the anomaly detection work?
The agent compares yesterday's numbers to the trailing 7 day average for each campaign. If ROAS falls or cost rises past the threshold you set, that campaign is flagged in the digest as something to review.
Can I post the digest to more than one Slack channel?
Yes. Tell the agent which channels to post in and it will send the same digest to each one. You can also send different versions to different channels, for example a detailed one to the PPC channel and a top line summary to leadership.
Will it run on weekends?
By default it runs Monday through Friday at 9am. You can switch it to every day, business days only, or a custom schedule in the workflow settings.

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.