---
name: monitor-landing-page-performance
description: >-
  The recurring landing-page sweep: pull per-URL performance across the account, flag pages breaching
  CVR/CPA/ROAS, bounce, speed, and mobile thresholds, segment flags by campaign and keyword routing to
  find the real cause, and route each page to the right fix workflow. It diagnoses and routes - it does
  not fix. VigilDog does the data side: gads_run_gaql_query on the landing-page report,
  gads_get_keyword_performance for keyword-to-URL mapping, gads_get_device_performance for the mobile
  split, ga4_run_report for engagement; speed tests are a human step. Run bi-weekly for high-traffic
  pages, monthly account-wide, quarterly in full. When a page needs actual work, hand off: deep fixes to
  audit-and-optimize-an-existing-landing-page, Quality Score label repair to
  improve-landing-page-experience, unexplained decline to run-a-landing-page-a-b-test, rebuilds to
  build-a-high-converting-landing-page.
---
# Recurring Landing Page Performance Review

## Purpose

Landing pages decay quietly: competitors improve, expectations shift, and a page that converted last
quarter drains budget this one. This skill is the tripwire - a scheduled sweep that compares every
active landing page against explicit thresholds, separates page problems from traffic-routing
problems, and hands each flagged page to the workflow that fixes it. Every review must end in routed
actions or an explicit "all clear."

## When to run

- Bi-weekly for pages above roughly 500 sessions/week (enough data to catch shifts fast).
- Monthly for all active landing pages.
- Quarterly as a full pass including low-traffic pages, fresh speed tests, and trend analysis.
- Ad hoc when a weekly account review (run-a-weekly-performance-review) shows a CVR drop with no
  bidding or tracking explanation.

## When NOT to run

- You already know which page is broken and why → audit-and-optimize-an-existing-landing-page.
- The issue is a Below Average Quality Score landing-page label → improve-landing-page-experience.
- You want to prove a specific improvement → run-a-landing-page-a-b-test.
- The page must be replaced outright → build-a-high-converting-landing-page (or the ecommerce
  builders).
- This skill never edits pages or campaigns - if you find yourself fixing, you have left its scope.

## Prerequisites

- Documented target KPIs (CVR, CPA, or ROAS) per campaign or page - thresholds are relative to these.
- GA4 collecting per-landing-page engagement data.
- Notes from the previous review, if one exists (trend rules need history).
- Access to an external speed tester (PageSpeed Insights) - human step.

## Procedure

1. **Pull the account-wide page table.** `gads_run_gaql_query` on the landing-page report for the
   review window (14 days bi-weekly, 30 monthly, 90 quarterly): final URL, clicks, impressions,
   conversions, CVR, cost, CPA, conversion value, ROAS. One row per URL is the working sheet.
2. **Add engagement columns.** `ga4_run_report` with landing page + device dimensions: sessions,
   bounce rate, average session duration, and key-event rate. Merge into the sheet by URL.
3. **Add the device split.** `gads_get_device_performance` for the feeding campaigns; compute mobile
   CVR as a percentage of desktop CVR per page.
4. **HUMAN STEP (outside VigilDog):** speed-check at minimum the top 10 URLs by spend in PageSpeed
   Insights; record mobile/desktop scores and the core loading, responsiveness, and layout-shift
   metrics.
5. **Flag breaches.** Apply the decision-rule thresholds to every row and tag each flagged page with
   its category: conversion problem, speed problem, engagement problem, mobile problem, or multiple.
6. **Segment every flagged page by campaign.** Re-run step 1 filtered per campaign (or use campaign
   as a dimension). One campaign dragging an otherwise fine page = traffic mismatch, not a page
   problem; all campaigns weak = the page itself; only new campaigns weak = message match with the
   new ads.
7. **Check keyword-to-URL routing.** `gads_get_keyword_performance` including final URLs, sorted by
   cost. For each expensive keyword, ask: does this URL actually serve the search intent (emergency
   query → emergency page, trial query → signup page, gendered product query → filtered category)?
   Blended page CVR hides pockets of misrouted, zero-converting spend.
8. **Diagnose each flag** with the cause tree in the decision rules - bounce level, device isolation,
   campaign isolation, and trend shape identify the root cause without touching the page.
9. **Route each diagnosis:** message-match or speed/mobile issues → improve-landing-page-experience;
   hero/offer/CTA weakness → audit-and-optimize-an-existing-landing-page; keyword misrouting →
   final-URL reassignment (a campaign write outside this skill's tools - route to the search
   workflow or a HUMAN STEP in the Ads interface, preview-and-approve rules apply there); steady
   decline with no visible cause → run-a-landing-page-a-b-test; multiple severe failures →
   build-a-high-converting-landing-page.
10. **Prioritize the routed list:** P1 = high-traffic page under half of benchmark CVR or speed score
    below 30 (fix within a week); P2 = any breach on a significant-spend page (two weeks); P3 = minor
    or low-traffic breaches (next cycle); P4 = watch-only, near-threshold or recently fixed.
11. **Write the review log:** pages checked, pages flagged, diagnosis + route + owner + due date per
    flag, status of every action from the previous review, and the next review date.
12. **Maintain the trend table.** Append this cycle's CVR per page to the running log; three
    consecutive declining reviews is a confirmed problem even if no absolute threshold broke.

## Decision rules

- **Flag thresholds (starting points - replace with account-derived baselines after 2-3 cycles):**
  CVR below 50% of the account average for that campaign type (high severity); CPA above 2x target,
  or ROAS below 50% of target (high); CVR declining 3+ consecutive reviews (high); bounce above 70%
  for lead-gen/SaaS or above 50% for a dedicated LP (medium); mobile speed score below 50 (medium),
  desktop below 70 (low); largest-paint above 4s on mobile (medium); layout-shift above 0.25 (low);
  mobile CVR under 40% of desktop (high); average session under 15 seconds (medium).
- **Cause tree for low CVR:** high bounce too → message match or load speed; normal bounce → CTA,
  offer, or trust; mobile-only → mobile UX; one-campaign-only → traffic mismatch; slow decline →
  competitor movement or fatigue.
- **Trend beats snapshot:** act on a single-period dip only if severe; otherwise wait for the
  pattern to repeat.
- **Never skip low-traffic pages entirely** - they often carry high-intent keywords; quarterly is
  their cadence.
- **Every review produces output:** at least one routed action or a recorded all-clear; anything
  else is administrative theater.

## Common failure modes

- **Reading only blended CVR.** Aggregate numbers hide both misrouted keywords and mobile collapse;
  the campaign and device cuts are mandatory, not optional.
- **No baselines.** Without documented targets every page looks acceptable; set thresholds on cycle
  one, refine from your own averages after.
- **Fix-it-now syndrome.** Reviews that mutate into editing sessions lose their coverage; log, route,
  finish the sweep, then fix through the routed skill.
- **Actions that die in the log.** Check the previous review's action list at the start of every
  cycle; unowned actions are the most common leak.
- **"It loads fine on my machine."** Personal impressions are not speed data; run the tester every
  cycle, mobile first.

## Related skills

- **Routes to:** audit-and-optimize-an-existing-landing-page, improve-landing-page-experience,
  run-a-landing-page-a-b-test, build-a-high-converting-landing-page,
  optimize-cart-and-checkout-flow (when the leak is post-add-to-cart).
- **Parallel:** run-a-weekly-performance-review (account-level review that may surface page issues),
  run-a-monthly-performance-review.
- **Upstream inputs:** set-campaign-goals-and-kpis (the targets these thresholds hang from).
