---
name: launch-pmax-for-lead-gen-saas
description: >-
  End-to-end build of a Performance Max campaign for a lead-gen or SaaS business, where there is no product
  feed and everything rides on three inputs: an imported quality conversion signal (MQL/SQL/revenue), strong
  audience signals seeded from real customers, and a complete creative asset set. The skill gates hard on
  prerequisites (offline import live, 30+ quality conversions/month, a 1,000+ member seed audience, brand
  Search protected), then builds budget, campaign, asset groups, text/image/video assets, audience signals,
  and bidding, and finishes with a launch checklist and 30-day monitoring plan. Use it when those gates are
  met and Search is already performing. Do not use it for ecommerce PMax (launch-pmax-feed-only-campaign /
  launch-pmax-full-assets-ecommerce-campaign), to build the conversion import itself
  (set-up-offline-conversion-tracking), or for ongoing tuning (run-pmax-lead-gen-saas-optimization-cycle).
---
# Launch Performance Max for Lead Gen / SaaS

## Purpose
Stand up a lead-gen/SaaS PMax campaign that optimizes toward business outcomes instead of cheap form fills.
Without a product feed, PMax has only the conversion signal, the audience signals, and the creative to steer
by, so this build refuses to proceed until the quality signal and seed audiences exist, and it structures the
campaign so every asset group can earn enough conversions to keep the algorithm well fed.

## When to run
- Offline conversion import (MQL, SQL, or revenue) is configured, verified, and recording.
- The account books 30+ conversions/month on that quality signal.
- Search campaigns already perform and the goal is incremental reach beyond them.
- A Customer Match or site-visitor audience of 1,000+ members is ready to serve as a signal.

## When NOT to run
- Any launch gate fails, fix it first: set-up-offline-conversion-tracking for the import,
  build-customer-match-lists for the seed audience. Launching PMax on form-fill data produces volume, not
  pipeline.
- Ecommerce with a product feed, use launch-pmax-feed-only-campaign or
  launch-pmax-full-assets-ecommerce-campaign.
- The campaign already exists and needs tuning, use run-pmax-lead-gen-saas-optimization-cycle.
- You are still deciding whether PMax belongs in the mix at all, resolve strategy first; this skill only
  executes a decided launch.

## Prerequisites
- Imported quality conversion action active, recording within the last 7 days, with values assigned if
  value-based bidding is planned.
- 30+ conversions/month on the quality signal (per campaign you intend to create).
- Customer Match list (ideally closed customers or SQLs) or site audience with 1,000+ members.
- A protected brand Search campaign with exact-match brand keywords and adequate budget.
- Creative inventory: headline/description raw material, 3+ landscape and 3+ square images, square logo,
  ideally a 15-60s video already on YouTube.
- Brand terms and known misspellings listed for exclusion.

## Procedure
Before the first Google Ads write of the session, call `gads_policy_guardrail` and honor its output.
Every write below is previewed first (validate_only=true default) and committed only after explicit user approval.

1. **Verify the launch gates.** Call `gads_list_conversion_actions`: the quality action must be enabled,
   imported (offline) in origin, recording in the last 7 days, and value-bearing if tROAS is planned. Confirm
   30-day volume on that action (30+ conversions) with `gads_run_gaql_query`. Check the seed audience size
   (1,000+ members) via `gads_list_user_lists`; if no list exists, create one with
   `gads_create_customer_match_list` and load it with `gads_add_customer_match_members` from CRM
   closed-won/SQL records, preview first, apply only after user approval. Confirm the brand Search campaign
   is live. Any gate failing = stop and report which one.
2. **Decide the structure.** One offer and one audience: single campaign, asset groups split by message angle.
   Multiple offers with different margins or deal sizes: one campaign per offer. One offer, several distinct
   audiences: single campaign, one asset group per audience. Hard rule: never create more campaigns (or asset
   groups) than can each sustain 30+ quality conversions/month, start with 1-2 asset groups.
3. **Create the budget (write).** `gads_create_budget` with a dedicated (non-shared) daily budget; treat about
   EUR 50/day as the practical floor for the algorithm to learn on. Preview first, apply after approval.
4. **Create the campaign (write).** `gads_create_pmax_campaign` with a systematic name
   (e.g. `US_EN_PMax_DemoRequest`), target locations and all relevant languages, attached to the step-3
   budget, created PAUSED. Scope its conversion goal to the quality action with
   `gads_set_campaign_conversion_goal` so bidding ignores softer actions. Preview first, apply after approval.
5. **Set bidding (write).** `gads_set_campaign_bidding_strategy`: at 30-50 quality conversions/month use
   Maximize Conversions, optionally adding a target CPA set 10-20% above the current actual CPA; at 50+ with
   imported values use Maximize Conversion Value, optionally with a tROAS derived from actual value/cost.
   Preview first, apply after approval.
6. **Create the first asset group (write).** `gads_create_asset_group` named `<Offer> - <Angle or Audience>`
   with the landing page as final URL. HUMAN STEP (outside VigilDog): set the final-URL-expansion toggle in the
   Google Ads UI, on only if multiple relevant landing pages exist, off when traffic must land on one page.
7. **Generate and load text assets (write).** Draft with `gads_generate_rsa_copy`, covering distinct types:
   product/brand naming, concrete benefit, differentiating feature, call to action, and credibility/social
   proof. Limits: headlines max 30 characters (minimum 3, aim for 5-11), long headlines max 90 (minimum 1,
   2-5 recommended), descriptions max 90 (minimum 2, aim for 4). The user reviews and approves all generated
   copy, then upload with `gads_upload_text_asset` and attach with `gads_add_asset_group_asset`, preview
   first, apply after approval.
8. **Load visual assets (write).** Upload via `gads_upload_image_asset`: at least 3 landscape (1200x628),
   3 square (1200x1200), portrait (960x1200) if available, and a square logo (1200x1200; landscape logo
   1200x300 optional). Favor product screenshots, real people, and branded graphics over generic stock.
   Attach each with `gads_add_asset_group_asset`. Preview first, apply after approval.
9. **Load video (write).** HUMAN STEP (outside VigilDog): host the 15-60s video on YouTube. Then register it
   with `gads_upload_youtube_video_asset` and attach via `gads_add_asset_group_asset`. If no video is
   supplied, Google assembles one from the images automatically, flag to the user that auto-generated video
   typically underperforms and a real video should follow soon.
10. **Attach audience signals (write).** `gads_add_audience_signal` in priority order: the Customer Match list
    of closed customers/SQLs first; then site converters and high-intent visitors (demo, pricing, trial
    pages); then custom segments built from competitor URLs and high-intent search phrases
    (`gads_create_custom_audience` if needed); in-market categories last. Preview first, apply after approval.
11. **Brand exclusions.** HUMAN STEP (outside VigilDog): in the campaign's brand-exclusion settings in the
    Google Ads UI, exclude the brand plus all variants and misspellings, so PMax cannot claim demand the brand
    Search campaign already owns.
12. **Additional asset groups (write).** Repeat steps 6-10 per extra angle/audience from step 2, each with
    genuinely different messaging, only if each group can plausibly reach 30+ quality conversions/month.
13. **Launch (write).** Re-verify the checklist: gates passed, settings correct, every asset type present,
    signals attached, brand exclusions done, budget live. Then enable the campaign with
    `gads_update_campaign`, preview first, apply only after explicit user approval.
14. **Post-launch verification.** Within 24-48 hours confirm via `gads_run_gaql_query` and
    `gads_get_disapproved_ads`: campaign eligible, assets approved, impressions accruing, spend pacing.
    Week 1: check `gads_get_search_terms_report` for brand queries (should be near zero, if not, revisit
    step 11). Weeks 2-4: learning period, hands off. Day 30: hand over to
    run-pmax-lead-gen-saas-optimization-cycle for the first full evaluation, judged on conversion quality,
    not raw volume.

## Decision rules
- Launch gates (all mandatory): offline import live and recording; 30+ quality conversions/month; audience
  seed 1,000+ members; brand Search protected. No exceptions, a failed gate ends the launch.
- Bidding: 30-50 quality conversions/month = Maximize Conversions (+ optional tCPA at actual CPA +10-20%);
  50+ with values = Maximize Conversion Value (+ optional tROAS from actual value/cost). Do not set targets
  more aggressive than current reality at launch; tighten later.
- Budget floor: about EUR 50/day per campaign; below that, learning starves.
- Splitting: each campaign and ideally each asset group needs a path to 30+ quality conversions/month.
  When in doubt, consolidate; splitting is easy later, starving the algorithm is not.
- Customer Match under 1,000 members: lean on site audiences as the primary signal while the list grows;
  do not attach an undersized list as the lead signal.
- Evaluation embargo: no performance judgment before day 30; learning runs 2-4 weeks (up to 6 for a brand-new
  campaign) and mid-learning metrics mislead.

## Common failure modes
- Launching with form submissions as the goal "until the import is ready", PMax immediately learns the wrong
  objective, and the relearning cost exceeds the delay of doing it right.
- Skipping video and quietly shipping Google's auto-slideshow as the campaign's face.
- Five asset groups for a 40-conversions/month account, every group starves; start with 1-2.
- Forgetting brand exclusions, then reading week-1 "performance" that is mostly intercepted brand demand.
- Setting a launch tCPA at the aspirational number instead of actual CPA +10-20%, throttling delivery from
  day one.
- Reacting to day-10 metrics with structural edits, resetting learning before it ever finished.
- One-off Customer Match upload with no refresh plan, schedule the quarterly refresh at launch time.

## Related skills
- Before: set-up-offline-conversion-tracking (quality signal), build-customer-match-lists (seed audiences),
  set-up-audience-signals (signal strategy).
- After: run-pmax-lead-gen-saas-optimization-cycle (from day 30, then recurring),
  manage-pmax-search-terms-and-brand-defense (once query data accumulates).
- Ecommerce alternatives: launch-pmax-feed-only-campaign, launch-pmax-full-assets-ecommerce-campaign.
