Daily Google Ads performance digest in Slack

By General Input

Every weekday at 9am, get an AI written summary of yesterday's Google Ads spend, conversions, and ROAS posted straight to your Slack channel.

Integrations

  • Google Ads
  • Slack Bot

Type

Agentic Task

Categories

  • Marketing
  • Operations

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.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them