To get Google Ads alerts in Slack, you need a bridge between account data and a Slack destination.
The two practical approaches are:
- Use Google Ads monitoring software with a Slack integration.
- Query Google Ads with a script or application and post matched conditions to Slack through an incoming webhook or Slack API.
Google documents in-account notifications, email preferences, and emails from automated rules. It does not document a direct Slack destination in the native Google Ads notification settings. Forwarding every Google Ads email into Slack is possible, but it usually produces poor routing and noisy messages.
Decide which Google Ads events belong in Slack
Slack is best for time-sensitive, actionable exceptions—not routine reporting.
Good candidates include:
- Zero conversions after meaningful spend
- CPA or CPL above a business limit with sufficient conversion volume
- Material conversion-rate decline
- Unexpected spend increase or decrease
- Material conversion-volume decline
- A high-volume campaign that stopped serving
Keep weekly summaries, low-volume trends, and exploratory analysis in a report or monitoring inbox unless they require a timely team response.
What a useful Slack alert looks like
The illustrative message below includes enough evidence to triage. In production, link to the affected account or incident record.
🔴 High CPA · Northside Legal
Scope: Search · Non-Brand
Last 14 days: $214 CPA · Target: $165
Above target: 29.7% · 15 conversions · $3,210 spend
Supporting signal: CPC +8% · CVR −17%
Owner: @maya · Review by 11:00 a.m. ET
Investigation link: [insert the actual account or incident URL]
Every high-priority alert should answer:
- Which account and scope are affected?
- What value triggered the rule?
- What is the threshold or comparison?
- Is there enough data to trust it?
- Who owns the response?
- Where can that person investigate?
Option 1: connect monitoring software to Slack
Use an integration when the team wants to configure delivery without maintaining a script. LeadUp’s Google Ads monitoring software supports scheduled rules and Slack destinations. Connect the relevant accounts, select the rule’s schedule and destination, and verify a matched alert in a test channel.
Use the alert setup and rule examples to define conditions. Here, check delivery: account name, timezone, metric values, mentions, and investigation links. Expand to client channels only after the test arrives at the intended destination.
Option 2: use Google Ads Scripts and a Slack webhook
This option fits teams that can maintain JavaScript, credentials, schedules, logging, and failure notifications.
The architecture is:
Scheduled Google Ads script
↓
Query account or campaign metrics
↓
Evaluate threshold + minimum data + cooldown
↓
Build a JSON message payload
↓
POST to a Slack incoming webhook
Google says Ads Manager scripts can run across child accounts to create reports and monitor potential problems. Review Google’s scripts overview and current scripts limits before choosing this route.
Slack’s incoming webhook documentation describes the setup: create a Slack app, activate incoming webhooks, authorize a channel, and send a JSON payload to the generated URL.
Minimum script requirements
The query is only part of the job. A production workflow also needs:
- Account selection and timezone handling
- Explicit evaluation and comparison ranges
- Minimum-data checks
- A place to store the last alert time
- Duplicate suppression
- HTTP error handling and retries
- Execution-failure notification
- Logs that show why a rule did or did not trigger
- An owner who tests the script after API or account changes
Without these controls, a short script becomes an unmonitored monitoring system.
Protect the Slack webhook
Slack states that an incoming webhook URL contains a secret and should not be shared online or committed to public source control. Slack actively revokes leaked secrets.
Use these safeguards:
- Limit access to the script or service holding the webhook.
- Never paste a real webhook into a public repository, ticket, or screenshot.
- Use a test webhook for development.
- Rotate the webhook immediately if it is exposed.
- Remove unused Slack apps and destinations.
- Log HTTP status and failures without logging the secret URL.
For a distributed product or complex routing, use Slack’s OAuth and Web API patterns instead of treating one fixed webhook as a multi-workspace integration.
Route alerts without creating channel chaos
Choose a channel model based on team size and alert volume.
One central triage channel
Example: #ppc-alerts
Best for a small team with a rotating owner. Require every message to name the client, severity, and responsible person.
One channel per client
Example: #client-northside-alerts
Best when the client team already works in dedicated channels or the account generates many events. It can create channel sprawl across a large portfolio.
Channels by team or severity
Examples: #paid-search-alerts, #ppc-critical
Best when specialists own defined account groups. Do not send the same event to multiple channels unless escalation requires it.
A monitoring registry should map each Google Ads account to its Slack destination, primary owner, backup, timezone, and response expectation.
Use severity to control interruptions
Not every alert should mention @channel.
| Severity | Example | Slack behavior |
|---|---|---|
| Critical | Zero conversions after heavy spend in a high-volume account | Immediate message, named owner, escalation timer |
| High | CPA above the economic limit with a strong sample | Immediate message, owner mention |
| Medium | CPC up materially while CPA remains stable | Message without broad mention or scheduled triage |
| Low | Early CTR movement on limited data | Digest or monitoring inbox |
Broad mentions should be rare enough that people still respond to them.
Add acknowledgment and incident state
Slack delivery proves only that Slack accepted a message. It does not prove that a person saw or investigated it.
Use a lightweight status convention:
- 👀 Acknowledged
- 🔎 Investigating
- ✅ Resolved
- 💤 Expected / no action
- ➡️ Escalated
Record the status in the monitoring system or incident log rather than relying only on emoji if auditability matters.
Add a cooldown so an open condition does not post the same alert every day. Notify again when:
- The metric worsens beyond a second severity threshold
- The cooldown expires without acknowledgment
- The condition recovers and the incident can close
Test the complete alert path
Run these tests before relying on the integration:
- A rule that should trigger posts once.
- A rule that lacks minimum data does not post.
- The same unresolved condition respects its cooldown.
- A second account routes to the correct channel.
- Times display in the intended business timezone.
- Links open the correct account or diagnostic view.
- Slack or webhook failure appears in an error log and reaches an owner.
- A former employee or archived channel does not silently break delivery.
Repeat the test after permission, Slack workspace, Manager Account, or script-owner changes.
What to do when the alert arrives
Slack should start a consistent diagnostic process:
- Validate date range and conversion lag.
- Check tracking and campaign serving.
- Review Change history and Explanations.
- Identify whether impressions, CTR, CPC, or conversion rate moved.
- Find the campaign or segment contributing most of the change.
- Record the cause, decision, and follow-up date.
Use the Google Ads performance-drop guide for the full sequence. If the signal is specifically acquisition cost, use the CPA increase guide.
Final takeaway
Getting Google Ads notifications in Slack is easy. Making them trustworthy requires more work.
Send only actionable events, include the baseline and minimum data, protect the webhook, route every severity to an owner, suppress duplicates, and test failures as carefully as successful delivery. Slack is the destination; the monitoring rule and response process create the value.
