What this playbook is

This is the operator’s launch map. You open it the day a contract gets signed, and you follow it top to bottom until the client’s Google Ads campaign goes live. It exists so nothing gets skipped, every launch looks the same, and the team can execute without Tyler in the loop.

This is the agency’s launch doctrine for taking a freshly-signed home-service client from contract signature to a launched Google Ads campaign. Where you see [Inferred] tags, that’s connective tissue (kickoff agenda, billing collection, internal sign-off prep) layered on top of the technical procedures to handle real-launch needs.

Onboarding ends the moment the campaign goes live. Week 1 monitoring, weekly optimizations, monthly cycles, switching to Smart Bidding. Those all live in a separate post-launch playbook (to be built). Don’t try to fold them into this document.

Who this is for

Any LeadLiftOff team member running a new client launch. You need to know how to read this playbook top-to-bottom, follow the steps in order, and stop at every gate to verify before moving on.

The 8-phase journey at a glance

PhaseWhat it coversKey deliverable
0Kickoff & intakeFilled intake.md, billing card, account access
1Account setup & MCCClient Google Ads account created, linked to MCC, billing live
2Bidding setupMaximize Clicks live with Max CPC cap, daily budget locked
3Keywords & ad group architecturePPC setup spreadsheet finalized, peer-reviewed
4Landing page infrastructureLive landing page on agency-owned domain, alerts firing
5Ad copy & creative3 RSAs per ad group + extensions, written and reviewed
6Call tracking setupHighLevel number pool live OR CallRail Direct Connect wired
7Conversion tracking configurationAll conversion actions firing and verified
8Campaign build & launchCampaign built, internal + client checklists signed off, live

You can run Phases 4 (landing page) in parallel with Phases 3 (keywords) and 5 (ad copy) once the client kickoff is done. Phases 6 and 7 (call + conversion tracking) overlap with Phase 5. Phase 8 only starts when Phases 1–7 are all complete.

The 5 critical gates

Five hard checkpoints sit inside the 8 phases. You do not move past a gate until the gate’s exit criteria are all green. Skipping one is how launches end up burning client budget on broken campaigns.

#GatePhase
1Max CPC Cap and Budget Sanity Check (always Maximize Clicks for Phase 1)End of Phase 2
2Pre-Launch Sanity Check (peer review of campaign structure)End of Phase 3
3Conversion Tracking Verification (every action firing)End of Phase 7
4Pre-Launch Asset Check (5 raw materials ready)Start of Phase 8
5Internal + Client Pre-Launch Checklist (final sign-off)Within Phase 8, before go-live

Watch for these as you read. They’re not separate sections; they live inside the phase they belong to. The full master checklist at the end of this playbook rolls every gate criterion into one tickable list.


Phase 0: Kickoff & Intake

[Inferred connective tissue. The standard assumption is that a contract is signed and an intake form is filled. This phase makes that explicit.]

What this phase delivers: A filled intake form, a kickoff call on the books, billing details collected, and admin access requested for every system you’ll touch in Phases 1 through 8.

Before you start

A signed contract. If there is no signed contract, do not run any other phase. The whole playbook assumes a paying client.

Steps

  1. Run /client-onboarding-intake <client> to set up the client record. The skill creates the Airtable record, GHL contact, Google Drive folder, and ClickUp folder, and pre-seeds clients/<client>/<client>-foundation.md. [Inferred, leverages existing skill]

  2. Schedule a kickoff call within 48 hours of contract signature. Use a 30-minute Zoom or Meet. The agenda below is the minimum bar. [Inferred]

Kickoff agenda:

  • Confirm services, service area, and capacity (do they actually want every service the contract names, or is one a maybe?)
  • Confirm business hours, after-hours policy, and whether the client takes emergency calls
  • Confirm the daily budget, and what they expect that budget to produce in month one
  • Walk through the 2-phase bidding timeline so they know what to expect for the first 30 to 90 days
  • Collect or confirm: business address, primary contact phone, billing email, the credit card that will run on the account
  • Ask if they have an existing Google Ads account that has been cancelled or paused. If yes, plan to reactivate. If no, plan to create from scratch
  • Get explicit verbal commitment to use agency-owned landing pages over their existing website (relevant when you hit Phase 4)
  1. Collect billing card during the kickoff. [Inferred billing collection script] Read this verbatim if it helps:

“Before I let you go, I need to grab the credit card we’ll use to run your Google Ads spend. Google bills directly through the platform, so this card sits inside your Google Ads account, not ours. We never charge it. You’ll see Google’s charges on your statement under ‘Google Ads’ or ‘Google LLC,’ and we’ll always show you exactly what spent went where in your monthly report.”

Capture the card details in a secure password manager or via a HighLevel form. Never store card numbers in plain text in the client folder.

  1. Request admin access to every system you’ll touch. [Inferred account access checklist]
  • Their existing Google Ads account (if reactivating). Request manager link via MCC.
  • Their domain registrar (for landing-page subdomain in Phase 4) or DNS access.
  • Their existing call tracking, if any (so you don’t accidentally double-track).
  • Their CRM, if you’ll be pushing leads back into it.
  1. Confirm intake.md is fully filled before closing Phase 0. The intake doc lives at clients/<client>/onboarding/intake.md after the kickoff. Every field that google-ads-onboarding will read in Phase 8 must be populated. Missing fields here kill momentum two weeks from now.

Watch out for

  • Clients who hand you their existing landing page URL with confidence and zero conversion infrastructure. The agency standard is clear on why agency-owned pages beat client websites for PPC. Cover this on the kickoff call so it’s not a fight in Phase 4.
  • Clients who balk at the credit card request. The standard assumption is that billing is the client’s responsibility. Walk through that the card sits inside their Google account, you don’t charge it, and you can run the report without it but you can’t run ads without it.
  • Clients with seasonality (HVAC, snow plowing, lawn care) who sign mid-season expecting Day-30 results. Set the 30-to-90-day expectation on the kickoff call, in writing, so it’s not a surprise.

Done when

  • clients/<client>/onboarding/intake.md exists and every field is populated
  • ✅ Kickoff call complete, agenda items all confirmed
  • ✅ Credit card collected and stored in a secure password manager
  • ✅ Manager link request sent OR new account creation plan confirmed
  • ✅ Domain/DNS access requested
  • ✅ Client foundation doc seeded by /client-onboarding-intake

📌 Next: Phase 1 begins on Day 1, the day after the kickoff.


Phase 1: Account Setup & MCC

What this phase delivers: A live Google Ads account for the client, linked to your MCC, with billing configured. By the end, you can log in, see the account in your MCC dashboard, and submit a payment.

Before you start

  • Phase 0 complete (intake.md filled, billing card collected, kickoff done)
  • Your agency MCC already exists (one-time setup; if your agency does not have an MCC yet, build it before continuing)

Steps for when the client has NO existing Google Ads account

  1. Open the MCC, click the blue + in the Accounts tab, choose “Create New Account”.

  2. Name the account using the standard convention: Client Name - City - Service. For example: Bob's Plumbing - Denver - Residential Plumbing. This makes the MCC dashboard scannable as you scale.

  3. Set the time zone to match the client’s location. Time zone is permanent. You cannot change it after creation. America/Denver, America/Los_Angeles, America/New_York, etc. Match the client, not your office. Source:.

  4. Set the currency to match the client’s billing. USD for US clients. Currency is also permanent. Get it right.

  5. Create a NEW payment profile for the client. Do NOT use your own. On the billing screen, choose “Create payment profile,” select Organization, enter the client’s business name, input the credit card you collected at kickoff. Source:,. If you use your own payment profile, every dollar of client spend hits your card. That is a cash-flow problem the moment you have 3+ clients.

  6. Click Save and Continue. The client receives an email notification that their new account was created.

Steps for when the client HAS an existing Google Ads account

  1. Get their 10-digit Customer ID (CID) from the top-right corner of their dashboard, formatted 123-456-7890. Source:.

  2. In your MCC, go to Accounts > [+] > Link Existing Account. Paste the CID, send the request.

  3. Tell the client to manually approve the manager request. The Google approval email lands in spam constantly. Read this script verbatim: [Inferred client-comms language]

“I just sent the manager link request from our agency MCC. Google emailed you, but that email lands in spam half the time, so don’t wait for it. Log into your Google Ads account, go to Tools and Settings, then Setup, then Access and Security, then the Managers tab. You’ll see a pending request from [Your Agency Name]. Click Accept. Until you do that, I can’t get into your account to start building.”

  1. If the existing account is in “Cancelled” status (red bar at the top, or “Your account isn’t active”), follow to reactivate. Pause every old campaign before clicking Reactivate. The moment you reactivate, anything left enabled starts spending immediately. Verify the credit card on file is current too, or the account gets suspended for failed payment within hours.

  2. Verify billing is active. If the existing account had previous billing, just confirm the card is current. If not, run the new-billing flow above.

Optional: Master Template deployment

If your agency has a Master Template account in this client’s niche, open Google Ads Editor, navigate to the Master Template, copy the relevant campaign, and paste it into the new client’s account. This drops Phase 3 through Phase 5 prep time from days to ~30 minutes. Replace placeholders with the new client’s actual data in subsequent phases.

If your agency does NOT have a Master Template yet, ignore this step and build everything fresh. Build a master template after you have 1 to 2 winning campaigns to clone from.

Watch out for

  • Time zone and currency are permanent. Double-check them on the creation screen. Re-creating the account because you set US Pacific instead of US Eastern is a 24-hour delay you do not want to take.
  • Manager link requests die in client spam folders. Always follow up with the client directly within 24 hours. If they ghost you on this for 3 days, the launch slips.
  • Reactivated accounts can start spending the second you click Reactivate. Pause everything first. Always.
  • Don’t mix payment profiles across clients. Each client gets their own profile. This keeps reporting clean and prevents accounting messes when a client cancels.

Done when

  • ✅ Client’s Google Ads account exists, named per the convention, with correct time zone and currency
  • ✅ Account is linked to your MCC and you can navigate to it from your MCC dashboard
  • ✅ Payment profile is set up with the client’s card, separate from any other client
  • ✅ If reactivated: every old campaign is paused, billing is current, no immediate spend
  • ✅ Master Template campaign cloned in (optional, if applicable)

📌 Next: Phase 2.


Phase 2: Bidding Setup

What this phase delivers: Maximize Clicks set as the campaign bid strategy with a Max CPC cap that matches the niche’s CPC range, daily budget locked to intake, and ad schedule plan written down.

The agency standard is unambiguous: always start Phase 1 on Maximize Clicks. Manual CPC, Maximize Conversions, and Target CPA are all wrong for a brand-new account with zero conversion history. Source:,.

Before you start

  • Phase 1 complete (account live, billing set, MCC linked)
  • intake.md has the client’s daily budget, service vertical, and service area populated

Steps

  1. Read or re-read (The 2-Phase Bidding Game Plan). Internalize the 30-to-90-day Phase 1 window. The whole campaign architecture rides on this.

  2. Set the Max CPC Bid Limit. Open Google’s Keyword Planner, enter the seed keyword and service area, and pull the top-of-page bid range for the niche. Cap Maximize Clicks at the upper end of that range. Without a cap, runaway bids in competitive niches (legal, personal injury, plumbing in metro areas) burn the daily budget in hours. Source:.

  3. Lock the daily budget from intake.md. This is what the client signed up for. Do not silently inflate or deflate it. If the intake budget looks too low for the niche (e.g., $20/day for legal in a metro), flag it back to the client now, before building. Source:.

  4. Plan the ad schedule. If the client takes after-hours emergency calls (HVAC at 2 AM, plumbing on weekends), plan for 24/7. If they only answer the phone 9 to 5 Monday to Friday, restrict to business hours so the budget doesn’t burn on clicks that won’t get answered. Source: intake.md business hours field; configuration happens in Phase 8.

🔴 GATE 1: Max CPC Cap and Budget Sanity Check

Before moving to Phase 3, run this quick sanity-check post in the community: [Inferred: community post is established practice. Message wording is ours.]

“Launching a [Niche] Maximize Clicks campaign in [City] for [Client]. Daily budget: [low] to [Y]. Anything I’m missing?”

This catches budget/CPC mismatches before they become spend. If the community flags a concern (e.g., “50 CPC will starve the campaign”), revise and post again.

Watch out for

  • Never start with Maximize Conversions or Target CPA. They need conversion history that does not exist yet. The algorithm has nothing to learn from. Phase 1 must be Maximize Clicks. The transition to Smart Bidding happens in the post-launch playbook once 15 to 30 conversions accumulate.
  • Never start with Manual CPC. Agency standard is Maximize Clicks for Phase 1. Manual CPC is slower to gather data and easier to misconfigure.
  • Never skip setting the Max CPC cap. Without it, Maximize Clicks can spend the daily budget in a single hour in competitive niches.
  • Expect a ~5-day learning phase after launch. Source:. Maximize Clicks needs roughly 5 days for the algorithm to settle. Impressions will be low and bids will fluctuate during this window. Don’t panic, don’t tweak. Set the expectation with the client at kickoff so they don’t either.

Done when

  • ✅ Bid strategy set to Maximize Clicks (no exceptions)
  • ✅ Max CPC cap set based on Keyword Planner data for the niche
  • ✅ Daily budget confirmed against intake.md
  • ✅ Ad schedule plan confirmed against business hours
  • ✅ Gate 1 community post made and reviewed; no unaddressed flags

📌 Next: Phase 3.


Phase 3: Keywords & Ad Group Architecture

What this phase delivers: A finalized PPC Setup Spreadsheet with campaign structure, ad groups, keywords, match types, and negative keywords, peer-reviewed and green-lit.

Before you start

  • Phase 2 complete (bid strategy and budget locked)
  • Open the agency folder structure so the planning docs land where the team can find them
  • Open a fresh copy of the PPC Setup Spreadsheet template

Steps

  1. Decide campaign-level splits. One campaign per service line. For example: a pest-control client with both pest and wildlife services gets two campaigns (100/day wildlife) so you can shift budget independently after 30 days. Don’t merge service lines into one campaign just to simplify.

  2. Build ad groups by seed keyword and search intent:

  • One seed keyword per ad group (e.g., “Plumber”, “Leak Detection”, “Water Heater Repair”)
  • City names in keywords are the single biggest control lever. Source:. "plumber Vallejo" triggers tightly on Vallejo searches; "plumber" alone triggers a much wider net. Whenever the city has volume, include it.
  • City SKAGs get their own ad group when the seed has 800+ monthly searches in that city. Don’t create a city ad group for a city with 100 searches.
  • Funnel position: bottom-of-funnel only (“emergency plumber”, “leak detection specialist”). Skip top-of-funnel (“how to unclog a drain”). Top-of-funnel does not convert in local lead gen.
  1. Fill keywords using Keyword Planner. For each ad group: enter the seed keyword + service area, sort by Top of Page Bid (high to low), add 5 to 8 keywords. Don’t over-add. Source:.

  2. Assign match types: phrase ("keyword") and exact ([keyword]) only. Never broad match. Source:,. Skip redundant variants:

  • Singular vs plural: pick one
  • Reverse word order: "laundry services Sacramento" and "Sacramento laundry service" are the same intent, pick one
  • Common spellings: Google handles them
  1. Build the negative keyword list proactively. For each campaign, ask: what is this NOT? What competitor or adjacent service might trigger here? What price point am I not competing on?

Universal negatives every local lead gen campaign needs:

  • "DIY", "how to", "yourself" (DIY searchers)
  • "free", "cheap", "price" (people not buying)
  • "jobs", "hiring", "career", "salary" (job seekers)
  • "school", "course", "training", "how to start" (people learning the trade)
  • Big-box retailer names if applicable ("Home Depot", "Lowe's", "Costco")

Niche-specific examples:

  • Junk removal: "free", "Goodwill", "Salvation Army", "donation", "TaskRabbit"
  • Carpet cleaning: "solution", "shampoo", "rentals", "school"
  • Porta potty: "for sale", "camping", "chemicals", "shower", "supplier"

Add at the campaign level when universal, at the ad group level when ad-group-specific.

  1. Finalize the Campaign Settings tab and the Ad Groups & Keywords tab in the spreadsheet. These are the two tabs reviewed at Gate 2. Source:.

🔴 GATE 2: Pre-Launch Sanity Check

The highest-leverage gate in the entire playbook. Catches structural mistakes before any spend.

  1. Set the spreadsheet to “Anyone with the link can View” (or use screenshots if client data is sensitive)
  2. Post in the Community tab with title: “Pre-Launch Audit: [Niche] in [City]”
  3. In the body, answer: Who is the client? Starting daily budget? Bid strategy? Paste link or screenshots.
  4. Reviewers look for: ad group organization issues, geographic conflicts, bid strategy mismatches, missing negatives, bad match types
  5. Implement every flagged fix. Repost if feedback is heavy.
  6. Move on only when feedback returns ”✅ Ready to launch” or equivalent

Watch out for

  • Never use broad match. Phrase + exact only.
  • Don’t create city ad groups for low-volume cities. Below 800 monthly searches, the management overhead exceeds the benefit.
  • Don’t add top-of-funnel keywords. They educate. They don’t convert.
  • Build negatives BEFORE launch. Reactive negatives let budget burn.

Done when

  • ✅ PPC Setup Spreadsheet filled (campaign settings, ad groups, keywords, match types, negatives)
  • ✅ Each ad group has one seed keyword, 5 to 8 keywords, phrase + exact match only
  • ✅ Universal + niche-specific negatives added at correct levels
  • ✅ Gate 2 community post green-lit

📌 Next: Phase 4 (can run in parallel with Phase 5).


Phase 4: Landing Page Infrastructure

What this phase delivers: A live, tested landing page on an agency-owned subdomain, with the 3 mandatory conversion elements installed, instant lead alerts firing, and the domain connected.

Before you start

  • DNS access from the client (collected in Phase 0)
  • Phase 3 in progress or done (you need the keyword/service themes to write headlines)

Steps

  1. Use an agency-owned landing page, not the client’s website. Source:. The course is unambiguous: client websites stall launches by 2 to 3 weeks (CMS access, tracking config, edit approvals). Agency-owned pages launch in 2 to 3 days. Build on HighLevel (current standard) or Unbounce (legacy).

Exception: high-trust niches like dentistry, plastic surgery, or law often convert better on the client’s main website because users want bios, credentials, and before/after photos. For the home service verticals this playbook targets (plumbing, HVAC, roofing, dumpster, junk removal, landscaping, pest control), agency-owned wins every time.

  1. Build with the 3 mandatory conversion elements, mobile-first. Source:. 70 to 80% of local lead gen traffic arrives on mobile. Design the page on a phone-sized canvas first; desktop is the secondary view. The floating Call button, chat widget, and form all have to be thumb-tap-sized and fully functional on iOS Safari and Android Chrome (test on real devices, not just browser emulators):
ElementWhyImplementation
Floating footer Call buttonRemoves friction; one-tap dialing on mobileposition: fixed footer, tel: link, high-contrast color, thumb-tap sized, always visible
Chat widget (HighLevel)Captures users too shy or busy to call. Styled as chat, functions as a form. Captures Name, Phone, MessageHighLevel chat widget native; flag submissions as conversions in Google Ads
Exit-intent pop-upLast-line lead captureDesktop: trigger on mouse-toward-close. Mobile: 30+ second time delay. Always include 1-click close. Never use 0-second pop-ups or hard-to-dismiss interstitials. Google flags those as Intrusive Interstitials.

Fast-track option: start from the swipe-file template. Swap copy and branding, launch.

  1. Connect a custom domain. Use a subdomain on the client’s own domain (e.g., quote.clientdomain.com or offer.clientdomain.com). Subdomains preserve trust signals (the URL still shows the client’s brand) without requiring full website edits. Configure the DNS CNAME record in their registrar; HighLevel walks through the exact records.

  2. Set up instant email lead alerts. 5-minute speed-to-lead means 21x higher qualification odds. The only way to hit that window is instant notification.

In HighLevel: Sites > Forms > Builder > Gear Icon > “On Submit” notification. Set:

  • Subject: 🔥 NEW LEAD: [Client Name] - Google Ads
  • Email To: the client’s email AND your agency email (so you can verify deliverability)
  1. Live-fire test the form before going live:
  • Open the live URL in an Incognito window
  • Fill out the form with a test name and your personal cell phone
  • Verify all three: Thank-You page loads, email notification arrives instantly, lead appears in the CRM
  • If any fail, fix before launch. A broken form on launch day = leads vaporize and you don’t notice for hours.

Watch out for

  • Don’t accept “but we already have a website” without the kickoff conversation. Cover this in Phase 0 so it’s not a fight here.
  • Test on real mobile devices, not just emulators. 70-80% of traffic is mobile. The floating Call button and chat widget can render fine on emulator and break on iOS Safari.
  • Don’t ship with a DIY 0-second pop-up. Google Ads policy violation. Always include exit-intent or time delay + 1-click close.
  • Test the form notification end-to-end before considering this phase done. Email goes to spam constantly.

Done when

  • ✅ Live landing page on agency-owned subdomain
  • ✅ All 3 conversion elements installed (floating Call button, chat widget, exit-intent or time-delay pop-up)
  • ✅ Custom domain connected and resolving
  • ✅ Instant lead alerts configured to BOTH client email and agency email
  • ✅ Live-fire form test passed (Thank-You loads, email fires, CRM shows the lead)

📌 Next: Phase 5.


Phase 5: Ad Copy & Creative

What this phase delivers: 3 Responsive Search Ads per ad group plus extensions, written using AI assistance, grounded in competitor research, and ready to load into Google Ads at Phase 8.

Before you start

  • Phase 3 done (ad groups defined; you need them to know what to write copy for)
  • Use Gemini in Chrome’s side panel as your primary AI tool, not ChatGPT. Source:. Gemini reads whatever tab you have open (the client’s landing page, a competitor’s site, the Google Ads dashboard) without you copy/pasting context every prompt. The prompts in this phase work on either platform, but the workflow is dramatically faster on Gemini. ChatGPT is a fallback only if Gemini is down.

Steps

  1. Run competitor niche research first. Search the client’s top 3 to 5 keywords in Google incognito. Screenshot the top 3 ads for each. Use SeRanking.com if you need to search from a different city. For each ad, extract:
  • Positioning angle: what unique claim are they making?
  • Offer or guarantee: specific hook (free, same-day, flat fees)?
  • Social proof or proof elements: reviews, certifications, media mentions?

Then ask the client: “Can you beat this?” Build a competitive positioning sheet (table of competitors, offers, positioning, extensions used) and identify the gap your client can fill.

  1. Build 3 ads per ad group with different angles. All 3 share the same Position 1 headline (your value prop). Position 2 varies the angle:
AngleExample Position 2 headline
Speed”Same day appointments”, “Get seen today”
Risk”100% satisfaction guaranteed”, “Licensed & insured”
Social Proof”105 five-star reviews”, “Serving Sacramento since 1932”
Location”We can be in [city] today”, “Local service”
Free Quote”Free estimate, no obligation”

For one ad group, pick 3 of these angles. The whole point: test fundamentally different value propositions, not slight wording variations.

  1. Generate headlines using Gemini. 15 headlines per RSA, each ≤30 characters. Open the client’s landing page in a tab, pop the Gemini side panel, and prompt: “Read this page and write 15 ad headlines targeting [keyword theme] with the [angle] angle. Each ≤30 characters.” Repeat for each angle and ad group.

  2. Generate descriptions. 4 descriptions per RSA, each ≤90 characters. Match the ad’s angle. Set the URL path to reflect the keyword theme (e.g., /emergency-plumbing not /index).

  3. Generate extension copy:

  • Sitelinks (4 minimum): link to differentiated offer pages. Examples: “Same-Day Service”, “$57 AC Tune-Up”, “Free Estimate”, “About Our Team”
  • Callout extensions (8+): single-line trust/value statements. “Licensed & Insured”, “24/7 Availability”, “Family-Owned”, “5-Star Rated”
  • Structured snippets: category lists (Services Offered: Drain Cleaning, Leak Detection, Water Heaters)
  • Promotion extension: ONLY if the client has a real, time-bound offer. No fake urgency.
  1. Set Ad Rotation to “Do Not Optimize” at the campaign level (configured in Phase 8). This forces Google to rotate the 3 ads roughly equally so you get fair data on which angle wins. Source:.

Watch out for

  • No competitor brand names in your ad copy. Google policy violation that can pause the campaign.
  • No fake urgency. “Limited time” or “Only X left” if it’s not real lands the campaign in trust trouble. Run real promos only.
  • Don’t use the same ad copy across all ad groups. Each ad group’s keyword theme drives the headline. “Emergency plumber” and “leak detection” deserve different ads.
  • Don’t generate copy without reading the landing page. Gemini’s superpower is reading the live page in another tab. Use it.

Done when

  • ✅ Competitor research sheet filled (top 3 ads per top 5 keywords, with positioning extracted)
  • ✅ 3 RSAs per ad group, with 3 different Position 2 angles
  • ✅ Each RSA has 15 headlines (≤30 chars) + 4 descriptions (≤90 chars)
  • ✅ Sitelinks (4+), callouts (8+), structured snippets, and (if applicable) promo extension written
  • ✅ All copy ready to paste/import into Google Ads at Phase 8

📌 Next: Phase 6 (or run Phases 6 + 7 in parallel if multiple operators are available).


Phase 6: Call Tracking Setup

What this phase delivers: Tracking phone numbers provisioned, dynamic-number-insertion (DNI) live on the landing page, and call data flowing to Google Ads as conversions.

Before you start

  • Phase 4 done (landing page is live)
  • Decide call tracking platform: HighLevel (default if the client is on HighLevel for landing pages) or CallRail (legacy, native Google Ads Direct Connect, ~$50-100/month)

Path A: HighLevel (default)

  1. Buy 6 tracking numbers in HighLevel: 2 direct numbers (for Google Business Profile ads + click-to-call) + 1 number pool of 4 for dynamic landing-page rotation. All ~$1.15/month each.
  • Settings → Phone Numbers → Add Number, filter by client’s area code
  • Name them: “[Client] Google Ads Click-to-Call”, “[Client] Google Business Profile”, and “[Client] Dynamic Tracking Numbers” (the pool)
  1. Configure each number: Forward to client’s actual phone, whisper message “Call from Google Ads” (so client knows the source), call recording on at default 60s, Call Connect off.

  2. Set up the number pool: Settings → Phone Numbers → Add Number Pool. Select “Visitors Activity” (mandatory for PPC keyword tracking), “All Visitors”, count=4, forward to client’s real number.

  3. Embed the pool tracking code on the landing page. From the pool’s three-dot menu → Number Pool Info → copy tracking code → paste in landing page body tag. Every page load now rotates through the 4 dynamic numbers.

  4. Build the HighLevel-to-Google-Ads automation. Automations → Create New → “Google Ads Phone Call Tracking”:

  • Trigger: Call Status, Direction = Incoming, In Number Pool = [client pool]
  • Action: Add to Google AdWords. Pick the conversion action OR type the exact name (copy-paste from Google Ads to avoid spelling/spacing errors)
  1. Verify: place a test call to a tracked number, wait 10-15 minutes, check Google Ads → Conversions for the test event.

Path B: CallRail (paid, native Google Ads integration)

  1. Create a Company in CallRail with the client’s name, real phone, address.

  2. Buy 6 numbers: pool of 4 (dynamic landing-page swap), 1 click-to-call (call extension), 1 Google Business Profile number. Same client area code on all.

  3. Set up the dynamic number pool: Settings → Create Number → “On my website” → “Calls, keywords and web sessions” → “All visitors” → pool size 4 → routing to client’s real phone. Optional: call intro / whisper.

  4. Connect Direct Connect to Google Ads: Integrations tab → Google Ads → Sign in with Google (use MCC) → select client account → check “Create separate conversion actions for first-time callers and repeat callers”. CallRail auto-creates the conversion actions in Google Ads.

  5. Embed the JavaScript snippet on the landing page from CallRail Integrations → [your landing page platform]. Run “Start Test” to verify number swap is working.

Watch out for

  • GCLID propagation. HighLevel auto-appends Google Click ID to landing page URLs. Without it, no call gets attributed to the click. Verify the URL parameters carry through.
  • Conversion action names match exactly. “Phone Call Lead” and “Phone Call Lead - Client” don’t match. Copy-paste from Google Ads.
  • Don’t double-track. If the client’s existing CallRail or other tracking is still live, you’ll double-count. Confirm in Phase 0.
  • Client area code matters. If you buy a 555 number for a client in 415, the dynamic swap looks suspicious to local searchers.

Done when

  • ✅ Number pool live on landing page (verified by visiting the page in incognito and confirming the displayed number rotates)
  • ✅ Test call placed and recorded in HighLevel/CallRail
  • ✅ Test call appears as a conversion in Google Ads within 1 hour
  • ✅ Conversion action named consistently with the agency naming convention

📌 Next: Phase 7.


Phase 7: Conversion Tracking Configuration

What this phase delivers: Every conversion type the campaign cares about (form submissions, phone calls from landing page, phone calls from call extension, phone calls from map pack, chat widget) is set up in Google Ads, marked Primary or Secondary correctly, and tested firing live.

Before you start

  • Phase 4 done (landing page live, thank-you page URL known)
  • Phase 6 done (call tracking numbers provisioned, automation live)

Steps

  1. Read Overview of Conversion Tracking to ground the conversion types you’ll create. Stick with Google Ads native tracking for everything in this playbook. Skip Google Analytics and Google Tag Manager unless you have a specific reason to add complexity.

  2. Create the form submission conversion:

  • Goals → Create Conversion Action → Website
  • Enter client domain, click Scan, Save and Continue
  • Conversion Goal: Submit Lead Form
  • Detection: Page Load on the thank-you URL (use “URL Contains” with the suffix, e.g., thank-u)
  • Mark Primary (form submissions are direct optimization signal)
  • Attribution: Last Click
  • Install the Global Site Tag in the landing page header
  • Use a consistent thank-you suffix across clients (/thank-u is the agency standard)
  1. Create the phone-call conversions:
  • Phone Call - Landing Page (HighLevel/CallRail dynamic pool calls): if HighLevel, create the action and the automation pushes calls in. If CallRail, the Direct Connect integration auto-creates the action.
  • Phone Call - Call Extension. Add the click-to-call number to your call extension in Google Ads. Google Ads tracks the click-to-call as a conversion automatically.
  • Phone Call - Map Pack / Local 3-Pack: if running GBP ads, the GBP tracking number captures these.
  1. Create the chat widget conversion if HighLevel chat is on the page. HighLevel native integration with Google Ads makes this a few-click setup.

  2. Verify every conversion action is marked Primary (green indicator). Source:. Open the conversion actions list. Every action you just created should show a green indicator. If any show blue, they’re set to Secondary, which means Google won’t optimize toward them. Flip them to Primary in the action settings. The course is unambiguous on this: all conversion actions you actually want bid on must be Primary.

  3. Switch the campaign’s Conversion Goals from Account Default to Campaign Specific. Source:. Go to Campaign Settings → Conversion Goals. If it says “Account Default,” change it to “Campaign Specific” and curate the goals to just Form Submission + Phone Call Landing Page (plus any other Primary actions you confirmed in step 5). Account Default inherits stale goals from prior setups and tanks Smart Bidding accuracy down the road. Get this right at launch so you never have to reset the algorithm later.

  4. Set Attribution to Last Click for all conversions. Move to Data-Driven only after the campaign hits 50+ conversions/month.

🔴 GATE 3: Conversion Tracking Verification

Test EVERY conversion type before considering this phase done:

  • Visual scan: Open the conversion actions list. Every action you created shows a green indicator (Primary), not blue (Secondary). Source:.
  • Conversion Goals scope: Open Campaign Settings → Conversion Goals. It reads “Campaign Specific,” not “Account Default.” Source:.
  • Form submission test: Submit a test form. Use Google Ads Conversions → Troubleshoot → paste thank-you URL → click Connect → expect “Success” or “Good Job”
  • Phone call test: Place a test call to the dynamic tracking number from a phone you control. Wait 1 hour. Verify conversion appears in Google Ads.
  • Call extension test: If extension is configured before launch, click it from a test ad preview. Verify.
  • Chat widget test: Submit a test chat message. Verify conversion fires.

If any test fails, do not proceed to Phase 8. Common failure modes:

  • Global Site Tag not pasted in landing page header
  • Thank-you URL mismatch between Google Ads conversion action and the actual page redirect
  • Conversion action name in HighLevel automation doesn’t exactly match Google Ads
  • GCLID not appending to URL parameters

Watch out for

  • A campaign without conversion tracking is a campaign that bleeds budget. This is the highest-rework gate of the launch. Test until every type fires.
  • Blue (Secondary) conversion actions are invisible to the bidder. If you see any blue indicators in the conversion list, the campaign is not optimizing toward them. Flip them green.
  • Account Default conversion goals are a trap. They inherit whatever was set up before (often by a previous agency) and confuse Smart Bidding the moment you switch to it. Always Campaign Specific.

Done when

  • ✅ Form submission conversion created, Primary (green), tested live
  • ✅ All phone call conversions created (landing page, call extension, GBP if applicable), all Primary
  • ✅ Chat widget conversion created and Primary (if HighLevel chat on page)
  • ✅ Every conversion action shows a green indicator (no blue)
  • ✅ Campaign Conversion Goals set to Campaign Specific (not Account Default)
  • ✅ All conversions tested and showing data in Google Ads
  • ✅ Gate 3 verified: every conversion type fires on test

📌 Next: Phase 8.


Phase 8: Campaign Build & Launch

What this phase delivers: A live Google Ads campaign, fully built, internal-checklist verified, client-approved, and serving impressions.

🔴 GATE 4: Pre-Launch Asset Check

Before you do anything in Phase 8, confirm the 5 raw materials:

#AssetFrom PhaseConfirms
1Keyword list, grouped into ad groupsPhase 3PPC Setup Spreadsheet finalized + Gate 2 green
2Landing page URL, tested livePhase 4Form fires, alerts deliver, all 3 elements work
3Ad copy sheet (3 RSAs per ad group + extensions)Phase 5Headlines (≤30 chars) + descriptions (≤90 chars) ready to paste
4Conversion actions, created and verifiedPhase 7Gate 3 passed, every type firing
5Call tracking, numbers live and integratedPhase 6Test call recorded as a conversion in Google Ads

If any of the 5 isn’t ready, stop and finish that phase. Don’t improvise mid-build.

📌 Optional accelerator: at this point, run our internal /google-ads-onboarding <client> automation. It reads the intake.md you finalized in Phase 0 plus the playbook research and emits 4 deliverables: campaign-plan.md (internal plan), gae-bulk/ (6 CSVs for Google Ads Editor bulk import), buildout-sop.md (click-by-click manual fallback), and client-approval-deck.docx (branded client-facing deck). Drops Phase 8 build time from 2-3 hours to 30-45 minutes.

Steps

  1. Build campaign in Google Ads dashboard (Part 1):
  • Campaigns → + → New campaign → Goal: Leads → Type: Search
  • Name per agency convention: LL-[Client]-[ServiceLine] (e.g., LL-AcmePlumbing-Drain)
  • Bidding: Maximize Clicks (default per Phase 2 decision); set Max CPC cap if needed
  • Networks: Search ON, Search Partners OFF, Display OFF
  • Locations: enter target cities. ⚠️ Location options: select “Presence.” NOT “Presence or Interest.” This is the most-skipped checkbox in the entire build. “Presence or Interest” lets Google show ads to people anywhere in the world who showed interest in your area, which burns budget on out-of-service-area clicks. We want only people physically in the target locations.
  • Audience segments: Observation mode (don’t restrict)
  • Ad rotation: “Do not optimize” (so the 3-angle ad test gets fair data)
  • Tracking template: paste your UTM template from the spreadsheet
  • Click Skip on Google’s auto-ad-generation (you have your own copy)
  • Add the first ad group + keywords + ads from the spreadsheet
  • Set daily budget per intake.md
  • Publish, then immediately pause the campaign
  1. Switch to Google Ads Editor for bulk add (Part 2):
  • Download the campaign you just published
  • Bulk-paste remaining ad groups, keywords, ads, and extensions
  • Add all sitelinks, callouts, structured snippets, and call extension
  • Verify nothing has typos before posting back to Google Ads
  1. Configure ad schedule. If client takes after-hours emergency calls, leave 24/7. Otherwise restrict to business hours so the budget doesn’t burn on clicks the client can’t answer. Set the schedule in 1-hour blocks (not 4-hour blocks) even when running 24/7. Source:. Hour-by-hour granularity gives you the data needed for downstream optimization (peak conversion windows often hit 1-3 specific hours, which 4-hour blocks blur out).

  2. Add audience segments in Observation mode. Layer in relevant audiences (homeowners, in-market for home services) for future bid adjustments. Observation only; no restriction during Phase 1.

  3. If you have a Master Template: clone the template campaign, replace placeholders with this client’s specific data, and skip most of steps 1-4. Drops build time to 15-30 minutes.

  4. Save your custom column set in Google Ads (one-time setup). Source:. Customize the campaign view columns to show: Impressions, Clicks, Cost, Conversions, Cost / Conv., Conversion Rate, Search Impr Share, Top Page Impr Share. Save the column set. This is the data view you’ll use for every weekly and monthly optimization session forever, so configuring it now means you never rebuild it. Apply the same column set at the ad group and keyword levels.

🔴 GATE 5: Internal + Client Pre-Launch Checklist

Two checklists, both required, both verified before flipping to Live. Source:.

Internal Pre-Launch Checklist (you, alone, in the Google Ads dashboard):

  • ✅ Campaign name follows agency convention
  • ✅ Goal: Leads. Type: Search. Networks: Search ON only.
  • ✅ Bidding strategy and Max CPC cap match Phase 2 decision
  • ✅ Daily budget matches intake.md
  • Location targeting verified, set to Presence (not Presence or Interest)
  • ✅ Excluded locations added if client doesn’t serve specific areas
  • ✅ Ad schedule matches business hours plan
  • ✅ Ad rotation: Do not optimize
  • ✅ Audience segments: Observation mode only
  • ✅ All ad groups present, named per convention
  • ✅ Each ad group: 3 RSAs with 3 different Position 2 angles
  • ✅ Each RSA: 15 headlines (≤30 chars), 4 descriptions (≤90 chars), display path set
  • Negative keywords verified at BOTH campaign and ad-group levels (the most-skipped checkbox)
  • ✅ Sitelinks (4+), callouts (8+), structured snippets, call extension all attached
  • ✅ Conversion actions all firing per Gate 3
  • ✅ Call tracking number swap verified live on landing page
  • ✅ Tracking template / UTM parameters present
  • ✅ Final URL on every ad points to the live landing page (not staging)

Client Pre-Launch Meeting Checklist (video call with the client):

Walk through the campaign together on a screen-share. Cover:

  • “Your daily budget is $[X], correct?”
  • “We’re targeting these cities: [list]. Do you serve all of them? Any to remove?”
  • “Here are the negative keywords we blocked: [list]. Any to add or remove?”
  • “Here’s a preview of one of your ads. Anything you’d change in the copy?”
  • “We launch as soon as you say go. Approval to proceed?”

Get verbal approval. Capture in writing or recorded video. Source:. [Inferred client-comms questions; the practice of getting written approval is implied by that rule]

Launch

Flip the campaign from Paused to Enabled. The campaign is live.

Public accountability ritual: post in the Community Discussion channel:

Campaign Built & Verified for [Niche] in [City]!

The course attributes this ritual with preventing 80% of “why is my campaign bleeding budget” problems. Public commitment forces verification.

Done when

  • ✅ Gate 4 (Pre-Launch Asset Check) passed before any build began
  • ✅ Campaign built per the structure spec
  • ✅ Gate 5 internal checklist 100% checked off in Google Ads
  • ✅ Gate 5 client checklist done on video, verbal/written approval captured
  • ✅ Campaign flipped to Enabled, status confirmed live
  • ✅ Community accountability post made

📌 Onboarding is complete. Post-launch optimization begins on Day 1 of the live campaign and is covered in a separate post-launch playbook (to be built).


The Pre-Launch Master Checklist

One tickable list rolling every gate criterion and every phase exit criterion together. Print it, paste it into the client folder, work down the list with a pen.

Phase 0: Kickoff & Intake

  • Signed contract on file
  • clients/<client>/onboarding/intake.md exists and is fully populated
  • Kickoff call complete; agenda items confirmed
  • Credit card collected and stored in password manager
  • Manager link request sent OR new account creation plan confirmed
  • Domain/DNS access requested
  • /client-onboarding-intake skill executed; foundation doc seeded

Phase 1: Account Setup & MCC

  • Client Google Ads account created or reactivated
  • Account named per Client Name - City - Service convention
  • Time zone correct (cannot change later)
  • Currency correct (cannot change later)
  • Account linked to agency MCC, visible in MCC dashboard
  • NEW payment profile created for this client (not your own)
  • If reactivated: every old campaign paused, billing card current
  • Master Template cloned in (if applicable)

Phase 2: Bidding Setup (Gate 1)

  • Bid strategy: Maximize Clicks (always, no exceptions)
  • Max CPC cap set based on Keyword Planner data for the niche
  • Daily budget locked per intake.md
  • Ad schedule plan confirmed against business hours
  • Gate 1: Community sanity-check post made; no unaddressed flags

Phase 3: Keywords & Ad Group Architecture (Gate 2)

  • One campaign per service line; budgets allocated separately
  • Ad groups built by seed keyword + intent
  • City SKAGs only for cities with 800+ monthly searches
  • No top-of-funnel keywords
  • 5-8 keywords per ad group, sorted by Top of Page Bid
  • Match types: phrase + exact only. Never broad.
  • No redundant variants (singular/plural, reverse word order, common spellings)
  • Universal negatives added (DIY, free, jobs, school, big-box names)
  • Niche-specific negatives added at correct level
  • Gate 2: Pre-Launch Sanity Check post made and green-lit

Phase 4: Landing Page Infrastructure

  • Live landing page on agency-owned subdomain
  • Floating footer Call button (mobile-first, high contrast, thumb-tap)
  • Chat widget installed (HighLevel)
  • Exit-intent or time-delay pop-up with 1-click close (no Intrusive Interstitials)
  • Custom domain connected and resolving
  • Instant lead alerts to BOTH client and agency emails
  • Live-fire form test passed (Thank-You loads, email fires, CRM shows lead)
  • Mobile tested on real device, not just emulator

Phase 5: Ad Copy & Creative

  • Competitor research sheet filled (top 3 ads × top 5 keywords)
  • 3 RSAs per ad group, 3 different Position 2 angles
  • 15 headlines per RSA (≤30 chars each)
  • 4 descriptions per RSA (≤90 chars each)
  • Sitelinks (4+), callouts (8+), structured snippets ready
  • Promo extension only if real time-bound offer (no fake urgency)
  • No competitor brand names in any ad copy

Phase 6: Call Tracking

  • Tracking platform chosen (HighLevel default; CallRail if paid integration needed)
  • 6 numbers provisioned (4-pool + 2 direct), client area code
  • Number pool tracking code embedded in landing page body tag
  • HighLevel automation OR CallRail Direct Connect live
  • Test call placed and recorded as a conversion in Google Ads within 1 hour
  • Conversion action names match exactly between Google Ads and integration

Phase 7: Conversion Tracking (Gate 3)

  • Form submission conversion: created, Primary (green), tested live
  • Phone Call - Landing Page conversion: created, Primary (green), tested
  • Phone Call - Call Extension conversion: created, Primary (green) (if extension live)
  • Phone Call - GBP conversion: created, Primary (green) (if GBP ads running)
  • Chat Widget conversion: created, Primary (green) (if HL chat on page)
  • Every conversion action shows green indicator (no blue / Secondary)
  • Campaign Conversion Goals set to Campaign Specific (not Account Default)
  • Attribution: Last Click on every action
  • Global Site Tag installed in landing page header
  • Gate 3: Every conversion type tested and firing

Phase 8: Build & Launch (Gates 4 + 5)

  • Gate 4: All 5 Pre-Launch assets confirmed ready (keywords, LP, ads, conversions, call tracking)
  • Campaign built in Google Ads dashboard (Part 1)
  • Bulk add via Google Ads Editor complete (Part 2)
  • Campaign name follows LL-[Client]-[ServiceLine] convention
  • Location: Presence (not Presence or Interest)
  • Excluded locations added where applicable
  • Ad rotation: Do not optimize
  • Negative keywords verified at BOTH campaign and ad-group levels
  • All extensions attached (sitelinks, callouts, structured snippets, call extension)
  • Tracking template / UTM parameters present
  • Final URL on every ad points to live landing page (not staging)
  • Custom column set saved in Google Ads (campaign + ad group + keyword views)
  • Internal Pre-Launch Checklist 100% complete
  • Gate 5: Client Pre-Launch Meeting done on video; verbal/written approval captured
  • Campaign flipped to Enabled, live status confirmed
  • Community accountability post made: “Campaign Built & Verified for [Niche] in [City]“

What’s next

Onboarding ends here. The moment the campaign is live, post-launch optimization begins. That’s a separate playbook covering the weekly optimization rhythm (M09a), the monthly cycle for Manual CPC and Maximize Clicks (M09b), the monthly cycle for Smart Bidding (M09c), and the offline reporting flow (M11). It will also cover the Phase 1 to Phase 2 transition (when to switch from Maximize Clicks to Maximize Conversions or Target CPA,).

Until that playbook exists, the launch operator should hand the live campaign to whoever owns ongoing client management and confirm:

  • The community accountability post is up
  • The internal monitoring schedule is set (typically: check in Day 1, Day 3, Day 7)
  • The first weekly optimization session is on the calendar

That handoff completes the new-client onboarding lifecycle.