# Run Google Ads end to end (/use-cases/gtm-growth/google-ads)



Copy this prompt to start your first task:

<Prompt>
  Set up Google Ads prep and daily optimization for our new product. Check if the landing page is ready for ad spend, then build the campaign structure, keywords, negative keywords, and ad copy. After launch, monitor spend, clicks, and conversions daily and flag anything that needs my attention.
</Prompt>

<LivePreview component="NewThread" scenario="{ draft: &#x22;Set up Google Ads prep and daily optimization for our new product. Check if the landing page is ready for ad spend, then build the campaign structure, keywords, negative keywords, and ad copy. After launch, monitor spend, clicks, and conversions daily and flag anything that needs my attention.&#x22; }" />

## What is this workflow? [#what-is-this-workflow]

"Run Google Ads end to end" is the recurring job of owning a paid-search account, not just planning campaigns. It starts with a one-page brief — goal, offer/landing page, budget and CPA/ROAS target, market, and account status — that you confirm before anything gets built, then a full campaign build: keyword tiers (brand/generic/long-tail), a negative-keyword list, and a landing-page health check, all before launch. Once live, a daily loop reads real account data and proposes changes rather than making them silently, and escalates the moment something breaks instead of waiting for the next scheduled check-in. A weekly performance report then refreshes itself in place, so you read the conclusion instead of pulling the numbers yourself.

<Callout type="warn">
  Some actions always wait for you: creating or pausing a campaign, any budget change beyond an agreed threshold, any bid-strategy change, any customer-facing creative going live, and any single spend over an agreed threshold. Everything else in the daily loop (search-term cleanup, reporting, flagging anomalies) runs on its own; these five don't, no matter how confident the recommendation is. See [Control](/ai-teammates/control) for how approval requests show up and how trust carries forward.
</Callout>

## How to use this workflow [#how-to-use-this-workflow]

<Steps>
  <Step>
    ### Hire a growth hacker, and write the bio around owning the account, not just planning campaigns [#hire-a-growth-hacker-and-write-the-bio-around-owning-the-account-not-just-planning-campaigns]

    Open **AI Teammates** in the sidebar, click **Hire AI Teammate**, and pick the **Growth Hacker** template. The default bio is generic campaign-planning. Replace it on the Profile step so the teammate starts out already knowing this is paid-search ownership, not just strategy advice:

    <Prompt>
      You're our Google Ads teammate. You own paid search end to end, not a to-do list. Before building anything, confirm the 5 intake basics (goal, offer/landing page, budget and target CPA/ROAS, market and audience, account and tracking status) and ask if any is missing. Without conversion tracking connected, tell me optimization is impossible. Never create or pause campaigns, change budget or bid strategy beyond what we agreed, or ship customer-facing creative without my approval.
    </Prompt>

    Confirm the name and click **Create teammate**. They land in their own channel, which is where you'll send everything below. [More on hiring →](/ai-teammates/hire-an-ai-teammate)

    <LivePreview component="CreateAssistantPage" scenario="{ focus: &#x22;profile&#x22;, initialState: { start: &#x22;template&#x22;, templateRef: &#x22;@helio/growth-strategist&#x22;, name: &#x22;Growth Hacker&#x22;, bio: &#x22;You're our Google Ads teammate. You own paid search end to end, not a to-do list. Before building anything, confirm the 5 intake basics (goal, offer/landing page, budget and target CPA/ROAS, market and audience, account and tracking status) and ask if any is missing. Without conversion tracking connected, tell me optimization is impossible. Never create or pause campaigns, change budget or bid strategy beyond what we agreed, or ship customer-facing creative without my approval.&#x22; } }" />
  </Step>

  <Step>
    ### Connect Google Ads and conversion tracking [#connect-google-ads-and-conversion-tracking]

    There's no standalone “Google Ads” or “GA4” skill to search for — the connector that actually carries this data in Skills & Plugins is **Windsor.ai** (Business), which plugs into Google Ads, GA4, and the other major marketing sources. Install it and connect the ad account plus whichever surface is already carrying conversion data (GA4 or the Google Ads conversion tag). This isn't optional groundwork: without conversion tracking connected, there's no data to optimize against, so nothing after this step can actually improve performance. [Skills & Plugins →](/connect/skills-and-plugins)

    Windsor.ai is read-only reporting data, though — the in-account work later in this playbook (Keyword Planner pulls, building the campaign structure, pausing what you approve pausing) runs through the **Stagehand Browser CLI** skill driving the Google Ads UI the way a person would. Install it alongside Windsor.ai, add the Google Ads login to the Vault, and share it with this teammate — without that, the build steps stop at the login page. [Share credentials →](/connect/vault/share-credentials-with-teammates)

    <LivePreview component="AssistantSkills" />
  </Step>

  <Step>
    ### Don't build against a vague ask: get the 5 intake basics first [#dont-build-against-a-vague-ask-get-the-5-intake-basics-first]

    A request that skips goal, market, or account status isn't ready to source keywords against. Ask for what's missing before building anything:

    <Prompt>
      You're a paid-search AI who reverse-engineers campaign structure, keywords, copy, and launch checks from the landing page and conversion goal. Set up a "Google Ads prep and daily optimization" automation for me: [product, landing page, target region, budget, conversion goal, constraints]. On day one, check whether the landing page is fit for ad spend, then output the campaign/ad-group structure, keywords, negative keywords, headlines and descriptions, a budget recommendation, a conversion-tracking checklist, pre-launch risks, and anything you need me to confirm. After that, check spend, clicks, conversions, anomalies, and optimization opportunities every day, and only report actions that affect budget or conversions. Prefer running first against the public landing page and whatever data I provide; proactively offer to connect Google/Analytics/Search Console when a direct connection is available; and guide me through the browser when backend login is needed.
    </Prompt>

    <LivePreview
      component="AssistantChat"
      scenario="{ assistantName: &#x22;Growth Hacker&#x22;, messages: [
    { author: &#x22;user&#x22;, text: &#x22;We want to run Google Ads for our new inventory-management SaaS. Budget's around $5k/month, want something live this week.&#x22; },
    { author: &#x22;assistant&#x22;, text: &#x22;Before I build anything, three of the five things I need aren't in here yet: (1) Goal: conversions/trial signups, lead form fills, or brand awareness? Changes both the campaign type and what I bid toward. (2) Landing page: I don't have a URL yet, and I can't tell you a campaign is launch-ready until I've checked it loads fast, works on mobile, and the signup flow actually converts. (3) Market: which countries, what language, and any regions to exclude? $5k/month covers a very different CPC in the US than in a broader English-speaking rollout. Budget and account status I can work with once I hear back. Do you already have a Google Ads account, and is conversion tracking set up on it?&#x22; },
  ] }"
    />
  </Step>

  <Step>
    ### Build the campaign: keywords, negative keywords, and a landing-page check before anything launches [#build-the-campaign-keywords-negative-keywords-and-a-landing-page-check-before-anything-launches]

    With the brief filled in, this is the actual build: keyword research split into brand/generic/long-tail tiers, a negative-keyword list, a landing-page health check, and a campaign structure that maps to it, all before anything goes live.

    <Prompt>
      Landing page and market are confirmed: [goal] is the goal, [countries], [language], [audience], and we have an account with [tracking source] conversion tracking live. Build out the keyword research, negative keywords, and campaign structure so we're ready to launch.
    </Prompt>

    <LivePreview
      component="AssistantChat"
      scenario="{ assistantName: &#x22;Growth Hacker&#x22;, messages: [
    { author: &#x22;user&#x22;, text: &#x22;Landing page and market are confirmed: trial signup is the goal, US and Canada, English, mid-market IT buyers, and we have an account with GA4 conversion tracking live. Build out the keyword research, negative keywords, and campaign structure so we're ready to launch.&#x22; },
    { author: &#x22;assistant&#x22;, text: &#x22;Keyword Planner pull done: 14 brand terms, 40 generic terms around \&#x22;inventory management software,\&#x22; and 22 long-tail terms tied to specific pain points (\&#x22;stockout alerts for small warehouses\&#x22; and similar). Negative list has 31 terms so far, mostly free/open-source intent and unrelated industries. Landing page check: loads in 2.1s, mobile-responsive, signup form works, no blockers. Structure is one campaign per keyword tier, ad groups by theme underneath. Holding the whole thing for your review before I submit for launch approval. Nothing goes live without that.&#x22; },
  ] }"
    />
  </Step>

  <Step>
    ### Catch it when something breaks mid-flight [#catch-it-when-something-breaks-mid-flight]

    A campaign that's live doesn't stay quiet just because nothing's scheduled to check it. When spend spikes, conversions drop to zero, or a creative gets disapproved, that gets flagged the moment it's caught, not folded quietly into the next report:

    <LivePreview
      component="AssistantChat"
      scenario="{ assistantName: &#x22;Growth Hacker&#x22;, messages: [
    { author: &#x22;user&#x22;, text: &#x22;How's the trial-signup campaign doing today?&#x22; },
    { author: &#x22;assistant&#x22;, text: &#x22;Two things you should know before the rest of the update: conversions dropped to zero at 2pm today even though clicks kept coming in. The trial-signup GA4 event stopped firing, likely a site change, not an ads problem. And the \&#x22;Core Trial\&#x22; ad group has one headline variant stuck in policy review since this morning, which is suppressing its impressions. Spend is on pace elsewhere. I can't fix the tracking or resubmit the creative without you, flagging both now rather than waiting for Monday's report.&#x22; },
  ] }"
    />
  </Step>

  <Step>
    ### Put the weekly report on automation [#put-the-weekly-report-on-automation]

    The summary lands in `#growth`, and a teammate can only post in channels it's a member of — add this teammate to `#growth` first. Then open **Automations** in the sidebar, click the **Create via Chat** dropdown, and pick this teammate in the New Thread composer that opens. The weekly pull, comparison, and writeup goes to automation. A person just reads the conclusion, since conversion tracking already has to be connected for any of these numbers to mean anything:

    <Prompt>
      Every Monday morning, pull last week's Google Ads data (spend, impressions, clicks, CTR, conversions, CPA, ROAS, and top/bottom campaigns), compare it to the week before, flag anything that moved meaningfully with a reason if you have one, and post the summary with a link to #growth.
    </Prompt>

    <LivePreview component="NewThread" scenario="{ populated: false }" />
  </Step>
</Steps>

## Tips for Better Results [#tips-for-better-results]

| Tip                                                                      | Description                                                                                                                                                                |
| ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Give it all five intake basics up front                                  | Skipping goal, landing page, budget/target, market, or account status means the teammate has to stop and ask before it can source keywords or build anything.              |
| Connect conversion tracking before expecting optimization                | Without GA4 or the Google Ads conversion tag connected through Windsor.ai, there's no data to optimize against — nothing after that step can actually improve performance. |
| Review the campaign build before approving launch                        | Keyword tiers, negative keywords, and the landing-page health check land for your review first; nothing goes live until you say so.                                        |
| Expect anomalies flagged immediately, not batched into the weekly report | Spend spikes, conversions dropping to zero, and disapproved creative get raised the moment they're caught, not folded into the next scheduled check-in.                    |

## Common Questions [#common-questions]

<Accordions type="single">
  <Accordion title="Does this flow launch or change campaigns on its own?">
    No. Creating or pausing a campaign, any budget change beyond an agreed threshold, any bid-strategy change, any customer-facing creative going live, and any single spend over an agreed threshold always wait for your approval. Everything else in the daily loop runs on its own.
  </Accordion>

  <Accordion title="What happens if conversion tracking isn't connected?">
    The teammate tells you optimization is impossible. Conversion tracking — through GA4 or the Google Ads conversion tag, both surfaced via the Windsor.ai connector — has to be connected before any of the daily loop or reporting numbers mean anything.
  </Accordion>

  <Accordion title="How does the in-account work actually get done?">
    Through the Stagehand Browser CLI skill, which drives the Google Ads UI the way a person would (Keyword Planner pulls, building the campaign structure, pausing what you've approved pausing). It needs the Google Ads login shared to it from the Vault first.
  </Accordion>

  <Accordion title="How do I get the weekly report running without me?">
    Add the teammate to the `#growth` channel, then set it up once through Automations → Create via Chat with the Monday-morning pull/compare/flag/post instruction. After that it refreshes itself in place.
  </Accordion>

  <Accordion title="What if something breaks between scheduled check-ins?">
    It's escalated the moment it's caught — a spend spike, conversions dropping to zero, or a disapproved creative — rather than held for the next report.
  </Accordion>
</Accordions>

<Cards>
  <Card title="GTM & Growth" href="/use-cases/gtm-growth" description="Back to the GTM & Growth use case overview." />

  <Card title="Track channel attribution" href="/use-cases/gtm-growth/channel-attribution" description="An automation that reports which acquisition channel is actually converting." />
</Cards>
