---
name: set-up-ad-extensions
description: >-
  Stands up the full ad extension (asset) stack for a new account or newly launched campaigns: the universal
  core at account level (sitelinks, callouts, image, business name and logo), campaign-specific types where they
  earn their place (promotion, price, call), and the situational ones only where they apply (lead form, location).
  Ends with a coverage verification against explicit minimums. Use it at account build-out, at campaign launch,
  or when an audit shows whole extension types missing. Do not use it for performance-based pruning and
  replacement of extensions already running, that is review-and-optimize-ad-extensions, and do not use it
  to compose the RSA itself (write-compelling-rsas).
---
# Build Out the Ad Extension Stack

## Purpose
Extensions expand the ad's footprint on the results page and give searchers more reasons and more paths to
click; missing types are free real estate handed to competitors. This skill installs a complete, correctly
levelled extension set, universal assets once at account level so every campaign inherits them, and
offer-specific assets only on the campaigns they belong to.

## When to run
- A new account has campaigns but little or no extension coverage.
- A new campaign launches with an offer profile the existing extensions don't cover.
- A coverage check (here or in `review-and-optimize-ad-extensions`) found entire types absent.

## When NOT to run
- Extensions exist and the question is which are underperforming, run `review-and-optimize-ad-extensions`.
- You are composing a single ad group's ad plus its immediate extensions, `write-compelling-rsas` covers
  that core; return here for the account-wide build.
- The campaign itself is not launched yet, finish `launch-a-search-campaign` first so there is something to
  attach assets to.

## Prerequisites
- At least one active (or ready) campaign.
- Business inputs from the user: key page URLs, benefit and trust claims, phone number and staffed hours
  (if calls matter), current promotions with real end dates, fixed pricing (if any), quality images and a
  square logo.
- Knowledge of which campaigns have phone conversions as a goal, call assets go only there.

## Procedure
1. **Consult the policy guardrail.** Before the session's first Google Ads write, call `gads_policy_guardrail`.
2. **Audit what exists.** Call `gads_list_extensions` across the account and per campaign. Diff the result
   against the minimums in Decision rules to get the build list, do not blindly create duplicates of assets
   already present.
3. **Create the core set at account level** (every write: preview with validate_only, show the user, apply
   only after explicit approval):
   - `gads_create_sitelink`, 4–8 links, each to a distinct page serving a different visitor intent: the
     primary conversion page, a product/service depth page, a credibility page, and a support/resource
     page, then extras as relevant. Fill both 35-character description lines on every sitelink; bare sitelinks
     serve less often.
   - `gads_create_callout`, 4–8 short claims spread across categories: fulfillment speed, credibility
     numbers, risk removal, and genuine differentiators. No duplicates of headline copy.
   - `gads_create_image_extension`, at least one 1200×1200 square image (landscape 1200×628 as a
     bonus). Real product or lifestyle imagery; no text overlays, and the logo is not the image.
   - `gads_update_brand_guidelines`, set the business name and square logo so the brand block renders
     under your control.
4. **HUMAN STEP (outside VigilDog): structured snippets.** VigilDog has no snippet tool; in the Ads UI create
   2+ headers matching the business (service types, brands carried, destinations, course levels), each with
   3+ specific values.
5. **Add campaign-specific types where they apply** (preview → approve → commit each):
   - `gads_create_promotion_extension`, only for genuinely running offers; always set the end date so the
     asset retires itself. Attach to the campaigns carrying that offer, not account-wide.
   - `gads_create_price_extension`, when pricing is fixed and presentable: 3–8 items with name, price,
     one-line description, and URL. Good fit for plan tiers, service packages, and category starting prices;
     skip when pricing is bespoke or variable.
   - `gads_create_call_extension`, only on campaigns where a phone call is a conversion action. Enable
     call reporting, restrict the schedule to staffed hours, and prefer imported/qualified call conversions
     over raw duration counting when a CRM tracks call outcomes.
6. **Situational types:**
   - `gads_create_lead_form_extension`, lead-gen campaigns wanting in-ad capture. Keep to 3–5 fields
     and give a concrete reason to submit. Warn the user: form leads typically run lower quality than
     landing-page leads, and the form can cannibalize page conversions, judge it on *total* conversion
     lift, not form submissions.
   - **HUMAN STEP (outside VigilDog): location assets**, linking a Business Profile happens in the UI; do it
     only when customers physically visit. **HUMAN STEP: app assets**, only if driving installs is a goal.
7. **HUMAN STEP (outside VigilDog): automated asset settings.** In the account's automated assets panel,
   review the auto-generated types. Sensible stance: allow auto sitelinks/callouts/snippets as supplements
   if their quality holds, disable machine-scraped dynamic images (frequently off-brand), and disable
   auto-sourced business name/logo when manual versions are set.
8. **Verify coverage.** Re-run `gads_list_extensions` and confirm: the core minimums exist at account
   level, offer-specific types sit only on their campaigns, and nothing inappropriate leaked (no call asset on
   a campaign that doesn't want calls, no location assets on an online-only business).
9. **Schedule the follow-up.** Note a 30-day check-in to run `review-and-optimize-ad-extensions` once
   performance data exists.

## Decision rules
- **Coverage minimums:** 4+ sitelinks (all with both description lines), 4+ callouts, 2+ structured snippet
  headers, 1+ square image, business name and logo, all at account level.
- **Level placement:** universal assets at account level (inherited everywhere); offer- or audience-specific
  assets at campaign level; ad-group level only for genuinely theme-specific needs.
- **Call assets:** only where calls are a wanted conversion; a call asset on the wrong campaign buys
  expensive clicks that convert nowhere. Schedule = staffed hours, no exceptions.
- **Promotions:** no end date, no launch. Expired offers still serving are a trust and policy problem.
- **Price assets:** fixed transparent pricing only; if quoting requires a conversation, skip the type.
- **Lead forms:** field count trades volume against quality, 3 fields for volume plays, 5 when
  qualification matters. Route submissions to the CRM promptly or lead quality decays with response time.
- **Image quality bar:** no suitable image beats a bad image; low-quality visuals drag the whole ad down.
- **Snippet header fit:** pick the header category whose values are concrete nouns the business actually
  offers, and give it at least 3 values, thin or vague snippet lists rarely serve and add nothing when they do.
- **Inherit before duplicating:** account-level assets flow down automatically. Create campaign-level copies
  only when the campaign's offer genuinely differs; duplicated identical assets just multiply maintenance.

## Common failure modes
- **Sitelinks without descriptions.** They serve less and look thin; both lines are part of the job.
- **Every sitelink pointing at the homepage.** Distinct pages per intent or the asset adds nothing.
- **Callouts recycling headline text.** Extensions add information; duplication wastes the slot.
- **A promotion that outlived its sale.** End dates are the fix; set them at creation, never "later".
- **Call assets everywhere "for coverage".** Inflates spend on campaigns that cannot use a phone call.
- **Auto-scraped images left on.** Site imagery pulled automatically is often the worst frame of the page;
  check the setting (step 7) rather than discovering it in the SERP.
- **Lead form judged on submission count alone.** Submissions climbed while landing-page conversions fell
  the same amount, zero incremental gain at lower lead quality. Always compare total conversions before
  and after the form goes live.
- **Snippet values that are adjectives.** "Reliable, Fast, Professional" is not a snippet list; headers want
  concrete offerings, not self-praise.

## Related skills
- `review-and-optimize-ad-extensions`, the 30-day-and-monthly performance follow-up to this build.
- `write-compelling-rsas`, pairs with this: the ad plus its extension package form one deliverable.
- `launch-a-search-campaign`, upstream; extension coverage is part of its pre-launch checklist.
- `resolve-ad-disapprovals`, if any newly created asset fails policy review.
