Open this doc once a week. Run the steps. Close it. Total time: 30 to 60 minutes per campaign.

This doc is the 80/20 checklist. Every step has a one-sentence definition and (where it matters) a link to a deep-dive sub-doc with UI clicks, worked examples, and edge cases. If you’ve done a step before, the brief is enough. If you haven’t, click the deep-dive link.

The job, in one sentence

Catch drift early, prune budget bleeders, surface slow-burn patterns the daily review missed, and (after Week 4) harvest new high-intent keywords. That’s the rhythm.

When to do this

  • Same day every week (Monday mornings are the agency default)
  • Bidding state matters only for Steps 9-10. The rest are universal.
  • Continues forever, no end date

Before you start

  • The daily rhythm (optimization-daily.md) has been running for the last 7 days
  • 30 to 60 minutes blocked on the calendar
  • Use the saved column set from onboarding (configured in Phase 8 step 6 of the onboarding playbook)

Step 1: Pull the week’s data

Date range: Last 7 days. Duplicate view with Previous 7 days for week-over-week comparison. Sort keyword and search-terms tables by Cost (descending) so the worst bleeders surface first.


Step 2: Pause underperforming keywords

[Agency procedure] Run the 4-bucket cascade in order:

  1. Filter All-time + Enabled + Conversions > 0; note the “Total: Filtered Keywords” cost/conv. That’s the benchmark.
  2. Pause converting keywords whose individual cost/conv is ≥1.5× the benchmark.
  3. Filter Conversions < 1, sort by cost; pause non-converters whose total spend exceeds the benchmark cost/conv.
  4. Filter Clicks < 1 + Impr. > 20; pause all.

Safety check: before pausing any keyword from Buckets 2-4, check its all-time conversion count. If it has 15+ historical conversions, give it 1-2 more cycles before pausing (previously-converting exception).

📖 Deep dive: pause-keyword-cascade.md, worked numbers, why 1.5×, edge cases, UI clicks.


Step 3: Weekly search-term cross-cut

Pull Search Terms (Last 7 days, sort by Cost descending). Scan for slow-burn patterns the daily review missed: theme drift, geographic clustering, wrong-ad-group routing, sub-target audiences. Add negatives at the right level using the daily-doc’s Step 3-4 rules.

📖 Where to find search terms: Insights and Reports → Search Terms (or scope to a specific keyword via the keyword’s dropdown) 🔁 Related routine: optimization-daily.md for the same-day-negation procedure on individual terms


Step 4: Campaign-level CPA drift check

Open campaign Overview. Compare this week’s Cost / Conv. to last week’s.

Red flag rule: if campaign-level CPA jumped 20%+ week-over-week with no obvious explanation, investigate. Common causes: bad search-term cluster, increased competition (check Auction Insights), landing page issue, broken conversion tracking.


Step 5: Ad-group-level CPA drift check

Drill into ad groups. Sort by Cost / Conv. (descending).

Red flag rule: any ad group at 2× the campaign average that wasn’t there last week. Drill into the ad group’s search terms, keywords, ad copy, and landing page. Persistent 2× ad groups (multi-week) are structural problems for the monthly review; new 2× ad groups are drift signals worth investigating same-week.


Step 6: Add new converting keywords

[Agency procedure] Skip on weeks 1-3. From Week 4+, run the 3-step harvest:

  1. Filter Search Terms: All time + Conversions > 0 + Added/Excluded: None; sort by Conversions descending.
  2. Review and save terms that still match the client’s offering, geography, and intent.
  3. Add as exact match only to the right ad group (intent-matched, not just word-overlap-matched).

📖 Deep dive: search-term-harvest.md, filter mechanics, why exact-match-only, ad-group placement decisions, edge cases.


Step 7: Landing page report spot-check

Where: Insights and Reports → Landing Pages.

Check: Mobile-Friendly Click Rate, Valid AMP Click Rate, conversion rate per URL, all stable vs last week. If anything dropped, open the URL in incognito on a real mobile device, submit a test form, confirm lead alert email lands.


Step 8: Device performance spot-check

Where: Campaign view → When and Where Ads Showed → Devices.

Watch for: a device suddenly converting at half its prior rate, cost shifting hard toward a device without conversion gain, CPA spiking 30%+ vs prior week. Note any drift; the fix happens in optimization-monthly.md.


Step 9: Max CPC cap validation (Maximize Clicks only)

Skip entirely on Smart Bidding campaigns, the cap is ignored under Smart Bidding.

Pull the 14-day Average CPC trend. Re-check Keyword Planner’s Top of Page Bid range for the campaign’s top 3-5 expensive keywords (filtered to the campaign’s geo). Compare to the current cap.

Decision rule: new cap = 14-day peak CPC + 2-3 per cycle.

📖 Deep dive: max-cpc-cap-validation.md, fence-rental worked example, edge cases (impression-share-limited, new competitor), post-adjustment monitoring.


Step 10: Ad schedule for budget pacing

If CPL is drifting up week-over-week AND the daily cap is hitting before end-of-day on most days, narrow the schedule (remove dead days/hours) or apply percentage bid adjustments.

Decision rule by bidding state:

  • Maximize Clicks: percentage bid adjustments (+10-30% peak, -10-30% dead) OR hour/day removal both work
  • Smart Bidding: only hour/day removal works; percentage adjustments are ignored

📖 Deep dive: ad-schedule-budget-pacing.md, the 48/day Mon-Fri math example, decision tree, edge cases (24/7 emergency clients, undersized budget + Smart Bidding).


Step 11: Document the week’s changes

Append to clients/<client>/optimization-log.md. Format: <date> weekly | <change> | <reason>. Example:

2026-05-06 weekly | benchmark cost/conv: $67.50
2026-05-06 weekly | bucket 2 paused: "solar company financing" | 1.9× benchmark
2026-05-06 weekly | added [emergency AC repair Sacramento] (exact) to ad group HVAC Emergency
2026-05-06 weekly | raised Max CPC cap $24 → $28 | peak CPC hit $30

The log makes month-over-month and quarter-over-quarter pattern recognition possible.


Watch out for

  • 1 to 3 high-leverage changes per week max. Optimization compounds slowly; over-editing makes attribution impossible.
  • Pause keywords; never delete. Delete throws away historical data.
  • Don’t apply percentage bid adjustments on Smart Bidding campaigns. Ignored. Use exclusions.
  • Don’t tune Max CPC by more than $2-3 per cycle. Big swings destabilize the auction.
  • Daily-cap budget burn: if hitting cap before end-of-day on most days, decision tree → raise cap (with client approval), narrow schedule (Step 10), or tighten Max CPC (Step 9).

Done when (every week)

  • ✅ Last 7 days vs Previous 7 days view set up; sorted by cost
  • Pause cascade run on all 4 buckets; previously-converting exception applied
  • ✅ Weekly search-term cross-cut done; slow-burn patterns negated
  • ✅ Campaign-level CPA drift checked
  • ✅ Ad-group-level CPA drift checked
  • Search Terms harvest run (Conv > 0, Added/Excluded: None); good fits added as exact match (Week 4+ only)
  • ✅ Landing page report spot-checked
  • ✅ Device performance spot-checked
  • ✅ Max CPC cap re-validated (Maximize Clicks only)
  • ✅ Ad schedule reviewed against budget pacing
  • ✅ Week’s changes logged

Where to go from here

Deep-dive sub-docs (in optimization-weekly/)