google-ads-manager

👤 Nick

google-ads-manager

Edit

Manage, audit, and optimize Google Ads campaigns for local service businesses. Covers campaign structure, keyword management, negative keywords, bid strategy, ad copy, and conversion tracking.

marketing

Skill Instructions

---
name: google-ads-manager
slug: google-ads-manager
version: 1.0.0
description: Manage, audit, and optimize Google Ads campaigns for local service businesses. Uses live Google Ads API data — never assumes account state. Covers campaign structure, keyword management, negative keywords, bid strategy, ad copy, conversion tracking, and budget allocation. Designed for home services (tree care, HVAC, contracting) with single-location or multi-location setups.
---

# Google Ads Manager

Audit and optimize Google Ads accounts using real API data. Always query live state before making any recommendation or change. Never guess at campaign structure, budgets, or keyword lists.

## When to Use

- Auditing an existing Google Ads account for a local service business
- Restructuring campaigns, ad groups, or keyword lists
- Adding negative keywords to reduce wasted spend
- Writing or rewriting ad copy for better CTR/Quality Score
- Diagnosing performance drops (impressions, clicks, conversions)
- Setting up conversion tracking
- Comparing PPC vs Local Services Ads ROI

## Credentials & API Access

All credentials in `~/.openclaw/credentials/`:
- `mary-google-ads.yaml` — Google Ads API config (developer token, client_id, client_secret, refresh_token)
- `mary-oauth-client.json` — OAuth2 Desktop App client
- `mary-oauth-token.json` — OAuth2 token with refresh_token

**⚠️ Approval required before applying any changes live.** Create a staged TaskFlow task. Nick must approve before touching the live account.

Query live account state first:
```python
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage("~/.openclaw/credentials/mary-google-ads.yaml")
```

## Workflow

### Audit Workflow
1. **Query campaigns** — list all campaigns with status, budget, impressions, clicks, cost, conversions
2. **Query ad groups** — structure analysis per campaign
3. **Query keywords** — match types, QS, CTR, CPC, conversion rate
4. **Query search terms** — find wasted spend and new keyword opportunities
5. **Query negative keywords** — gaps in negative list
6. **Analyze** — identify structural issues, budget waste, QS problems, missing extensions
7. **Write report** — save to `~/.openclaw/workspace-mary/reports/TASK-<num>-<slug>.md`
8. **Create staged tasks** — one task per recommended fix; assign to mary; stage for approval
9. **Post to Slack** — summary to #mary-marketing (C0ANF1HJFRT)

### Optimization Workflow
1. **Get approved task** — read task description for specific change
2. **Query current state** — confirm live state matches assumption before touching anything
3. **Apply change** — via mutate operations (never UI)
4. **Verify** — re-query to confirm change took effect
5. **Report** — document what changed, before/after values

## Core Rules

### 1. Real Data Only
Query the API before every action. Never say "the campaign probably has X" — check it.

### 2. Stage Before Implementing
Every recommended change becomes a staged TaskFlow task. Nick approves by moving to in_progress. No live changes without that approval.

### 3. One Change Per Task
Don't batch unrelated changes into one task. Separate tasks for: negative keywords, bid changes, ad copy, campaign restructuring. Easier to approve and easier to roll back.

### 4. Home Services Context
Ironwood Tree Co is a local tree service. Target keywords are high-intent local searches:
- Emergency/hazard tree removal (highest urgency, highest value)
- Tree trimming/pruning (seasonal, high volume)
- Stump grinding (lower urgency, good add-on)
- Storm damage (seasonal spikes after weather events)

Negative keywords to always have: "DIY", "how to", "free", "jobs", "career", "school", "training", "certificate"

### 5. Quality Score First
Low QS (below 6) means paying more per click. Fix QS before touching bids. QS is driven by: expected CTR, ad relevance, landing page experience.

### 6. Match Type Discipline
- Broad match = expensive, use only with Smart Bidding and good conversion data
- Phrase match = default for most local service keywords
- Exact match = protect branded and highest-converting terms
- Never run broad match without a solid negative keyword list

## Campaign Structure for Home Services

```
Campaign: [Service] — [Location]
  Ad Group: [Specific Service Variant]
    Keywords: phrase/exact match
    Ads: 3 RSAs minimum, 1 pinned headline with service + location
    Extensions: callout, sitelinks, call, location
```

Good structure example (Ironwood):
```
C1: Tree Removal — Tulsa
  AG1: Emergency Tree Removal
  AG2: Tree Removal Cost/Price
  AG3: Dead Tree Removal
C2: Tree Trimming — Tulsa
  AG1: Tree Trimming/Pruning
  AG2: Tree Trimming Cost
C3: Stump Grinding — Tulsa
  AG1: Stump Grinding/Removal
```

## Conversion Tracking

Required conversions to track:
- Phone calls from ads (via Google forwarding number)
- Form submissions (thank you page URL or event)
- Quote requests

Without conversion data, Smart Bidding can't optimize. If conversions aren't tracked: fix this before anything else.

## Key Metrics

| Metric | Target (Home Services) | Red Flag |
|--------|----------------------|----------|
| CTR (Search) | > 5% | < 2% |
| Quality Score | ≥ 7 | < 5 |
| Impression Share | > 60% for top terms | < 40% |
| Cost per Lead | < $80 | > $150 |
| Conversion Rate | > 8% | < 4% |
| ROAS | > 4x | < 2x |

## Common Issues & Fixes

| Issue | Diagnosis | Fix |
|-------|-----------|-----|
| High spend, no conversions | Missing conversion tracking or wrong match types | Set up conversion tracking; add negatives |
| Low QS | Ad copy doesn't match keyword; bad landing page | Tighten ad groups; improve landing page relevance |
| Impression share loss (budget) | Budget too low for market | Increase budget or reduce non-converting keywords |
| Impression share loss (rank) | Low Ad Rank | Improve QS or bid higher on priority terms |
| Good CTR, low conversions | Landing page problem | Check page speed, CTA clarity, form function |

## Related Skills
- `local-services-ads` — Google LSA setup and management
- `storybrand-copywriter` — Landing page and ad copy optimization
- `gbp-manager` — Google Business Profile (affects Local Pack rankings)
Back to Skills