Aha StudioAI workers
Guides

Ad Campaigns

BETA

Give it a site, a page or an offer and it builds search campaigns in tight ad groups, one theme per group, by funnel stage, with the ads written within the character limits, the negatives set, the landing page checked, and the whole thing exported as Editor-ready files you review before a cent is spent.

29 min read24 stepsUpdated October 22, 2026

Before you start

  • Your Aha Studio accountBuilding campaigns is part of your plan. Without a plan the free demo builds one campaign of 3 ad groups for Google only, with no export; the review grid shows it all.
  • The page the ads send people toA sales page, a sign-up page or a free demo page, starting with https://. The worker reads it for the product type, the audience and the facts, and checks that each ad group fits it. No page yet? FunnelBuildr, Site Sniper or SaaS Magnets build one, and the review links to them.
  • A Google Ads or Microsoft Advertising accountThe export is a file for Google Ads Editor or Microsoft Advertising Editor (a Google campaign imports into Microsoft with one file). You import it, read what the Editor reports, and press Post yourself. Nothing is ever posted for you.
  • A Google Ads account, for Demand Gen campaignsAt ads.google.com with a payment method on it. Aha writes the ads and a setup sheet; you type it into Google Ads and publish it yourself. For "Grow my YouTube channel", your channel linked to that account.
  • An X Ads account, for X campaignsAt ads.x.com with a payment method on it. Aha writes the posts and a setup sheet; you type it into X Ads Manager and press Launch yourself.
  • Search dataKeyword volumes, CPC and the ads on the page come from Keyword Planner data and live Google results through DataForSEO. With your own DataForSEO key under Keys and connections the lookups cost your plan nothing.
Competitor names may be keywords, never copy: the ads name the product type and the audience, and the code refuses any line that names a competitor. Broad match is never shipped; every keyword goes in as phrase and exact.
PART 01

Build a campaign

0 of 6 done
  1. Open Ad CampaignsAt adcampaigns.ahastudio.net, or press Start something new on your account page and choose Search campaign.
  2. Describe the offerIn The offer, say what people get in your own words, or paste The page and let it read the offer from there. Add Competitors (names or domains) if you want their buyers: the names become keywords with the buyer modifiers (pricing, alternative, vs, review), never ad copy. Or press a Run from Your work to take the page from a site, a funnel or a calculator you built here.
  3. Pick the countries and the platformCountries is a saved set: English-speaking, English-speaking plus fluent-English Europe, United States only, or your own picks, remembered for next time. Platform: Google Ads, Microsoft Advertising or both (Microsoft clicks often cost a fraction of Google's on the same buyer keywords). Daily budget in your account's currency.
  4. Choose the group kind and the stagesSTAG (one tight theme per ad group) is the default; SKAG (one keyword per group) and SIAG (one intent across wordings) are the other two. Tick the funnel stages to build: ready to buy (pricing, cost, trial, demo), comparing options (alternative, vs, best, review) and just learning (how to, what is). Tick Needs a desktop when the offer does not work on a phone, and untick Bid on competitor names to turn them into negatives instead.
  5. Or take an angle, or a promoAngles set the stages, the group kind and the copy skeleton: Free lite tool to webinar, Free demo to a plan, Lead magnet to a sequence, Local service quote page, SaaS trial. Aha Studio promo builds a ready campaign for a worker's free demo page with your affiliate ref in the final URL (Keyword Research so far), its copy from that worker's own guide.
  6. Press Build the campaignStep 1 reads the page and names the product type, the audience, the promise and the seed searches, before any search spend. Then the run waits with the estimate: how many Keyword Planner lookups and live results checks it is about to make, and its cost ceiling. Press Continue to go on. If you work for clients, pick who it is For and the Persona first.
PART 02

What it builds, step by step

KeywordsSeeds from the offer plus the competitor by modifier grid and the product type by modifier grid, sized through Keyword Planner (volume, CPC, competition), kept only when they fit the offer, and staged BOF, MOF or TOF. Left out, and why lists every search that was dropped and the reason.
Ad groupsThe AI proposes the themes; code checks every keyword shares a theme word, dedupes across groups, and caps 50 keywords a group and 50 groups a campaign. In the review, Drop a keyword or Move it to another group.
Landing pagesEach group gets its page, and the keyword or the product type must appear in the title, the H1 or the first paragraph. A page that does not fit is marked, and Change page checks another address. No fitting page? Build one with FunnelBuildr, Site Sniper or SaaS Magnets.
AdsResponsive search ads: up to 15 headlines of 30 characters and 4 descriptions of 90, mixed by the platform. Headline 1 is the keyword, pinned to slot 1; the benefit and the closer are pinned to slots 2 and 3; the rest are variations. The limits are enforced by code, a competitor's name is refused, and Rotate shows how the slots combine.
Competitor adsThe ads on Google's page for each group's main keyword: who advertises, their headlines and their addresses. Skipped, and the report says so, when live Google results are not connected.
NegativesCross-group negatives so the groups never steal each other's traffic (every other keyword as an exact negative in SKAG, the other themes' words as phrase negatives in STAG and SIAG), a generic list (jobs, logins, piracy, the trades you tick, and "free" only when the offer is paid), and the competitor names when you do not bid on them.
SettingsPhrase and exact only, never broad. A starting max CPC per stage from the Keyword Planner CPC of the keywords in that stage (ready to buy highest, learning lowest). Phones and tablets at minus 100 percent when the offer needs a desktop. The location set, the language, the schedule, and the conversion actions to set up, as instructions.
ExportGoogle Ads Editor CSV, Microsoft Advertising Editor CSV, the Search terms script (a Google Ads Script with paste-in instructions that posts last week's search terms back to this campaign every week) and the Campaign brief in Markdown. Every campaign is exported Paused.
PART 03

The search terms feed

0 of 3 done

Tony's method is two-step mining: start with the modifier combinations, read the real search terms, then build tighter groups from the queries with volume. The script brings the search terms back here every week.

  1. Download the scriptPress Search terms script on the export panel. The file carries this campaign's own feed key and the campaign name.
  2. Paste it into Google AdsTools and settings, Bulk actions, Scripts, the plus button. Paste the whole file, press Authorize, then Preview once, then Run.
  3. Schedule it weeklySave it and set the frequency to Weekly. Each run posts last week's search terms (term, ad group, impressions, clicks, cost, conversions) to your campaign here; the review shows them under Search terms received.
PART 04

Optimise a campaign from its reports

0 of 7 done

Tony's method: run single keyword ad groups on Microsoft Advertising and X Ads, see what converts after a few days, drop what does not, then build a Google campaign from the winners. The Ads Optimiser does the reading. Run it after a few days, once your keywords have about 20 clicks each and have spent about your target cost per conversion. Before that most keywords show as "Not enough data yet", which is the honest answer. It never connects to your ad accounts, never changes them and never spends. It reads the files you download, and everything it makes is a file or a checklist you apply yourself.

  1. Open the Ads OptimiserOn the Ad Campaigns page press Optimise at the top, or Optimise this campaign under What to do next on a finished campaign.
  2. Add the report filesCSV or Excel (.xlsx), several at once: the keywords, search terms and ads reports, the X ad groups and ads exports, and a GA4 exploration if the ad platform does not track conversions. Each file is read by its column headers; the page shows which column fed which number, and a file missing a column says which one and how to add it.
  3. Pick the campaign and the goalThe campaign they belong to: one you built in Ad Campaigns, or A campaign made elsewhere. The goal: Conversions, or Clicks (a traffic test). Set a Target cost per conversion; left empty, the files' own average is the target and the report says so.
  4. Press Analyse the reportsFree, no AI. The report is saved to Your work. Change the Thresholds and press Judge again to see the same files another way.
  5. Apply the changes yourselfDownload the Microsoft Advertising changes file (a bulk upload file: pauses, negatives, new exact keywords) or the Changes checklist, and apply them in your ad account.
  6. Build the Google campaignPress Build the Google campaign: one winning keyword per ad group, the winning ads cut to Google's limits, the negatives carried over and UTMs on every final URL, with a suggested budget and bid labelled as suggestions. Download the Google Ads Editor CSV; it arrives Paused.
  7. Run it again in a few daysAdd newer files under Re-run with newer files. The new version shows what changed: new winners, new pauses, the keywords judged for the first time.
PART 05

How the Ads Optimiser decides

Fixed rules in code, the numbers behind every call shown beside it. No significance claims: these are simple thresholds you can change.

Not enough data yetA keyword is judged only from 20 clicks, and one with no conversions also needs to have spent the target cost per conversion. Under that it is never cut.
PauseJudged and no conversions; or a cost per conversion more than 2 times the target.
Keep and WinnerConverting within 2 times the target is a keep. At or under the target with at least 2 conversions is a winner, ranked by cost per conversion, then conversion rate.
Search termsConverted and not a keyword yet: add it as a keyword. Spent the target with no conversions past 10 clicks: add it as an exact negative.
AdsIn each ad group, among ads with 300 impressions, the best by conversion rate (or click-through rate without conversions); an ad under half the best's rate is a pause. One ad alone is never paused.
Traffic modeNo conversion data (or the clicks goal): judged on cost per click and click-through rate against your target or the median, labelled as weaker evidence. Files with a conversions column that adds up to zero also run in traffic mode unless you tick My conversion tracking works, so nothing is cut for missing tracking.
GA4 key eventsWhen the ad platform has no conversions, GA4 key events count instead, matched to each keyword through the session manual term (utm_term). What cannot be matched is counted and said, never spread around.
The summaryOptional: Write a plain-English summary is one AI call on your Ad Campaigns allowance. A check refuses any figure that is not in the analysis, and any claim of significance. It is not available while an admin is signed in as you.
PART 06

Which files, and where to find them

  1. 1Keywords Open Reports, pick the Keywords report (under Dimensions or the standard reports), set the date range, keep Campaign, Ad group, Keyword, Match type, Impressions, Clicks, Spend and Conversions, add Keyword ID and Ad group ID for a changes file you can upload, and download it as CSV. The column names are Microsoft's own.
  2. 2Search terms The Search terms report, the same way (Microsoft's help): Search term, Keyword, Ad group, Campaign, Clicks, Spend, Conversions. Add Campaign ID and Ad group ID too.
  3. 3Ads The Ads report: Ad ID, Ad group, the headlines (Title part 1 to 3 or Ad title) and Ad description, Impressions, Clicks, Conversions. From the campaigns grid, the Download button on the Ads tab works as well.
PART 07

Set up conversion tracking

Without it the Ads Optimiser can only judge clicks. With it, every report judges on sign-ups and sales.

  1. 1Step 1 Create one UET tag (Conversions, UET tag in the left menu; Tools, UET tag in the older menu) and copy its code.
  2. 2Step 2 Add it to every page of the site, in the head section of the site-wide layout (or through Google Tag Manager).
  3. 3Step 3 Create a conversion goal: Conversions, Conversion goals, Create. Pick Website, then the action: a destination URL goal for a thank-you page (for example the page after sign-up), or an event goal for a button. Associate it with the UET tag.
  4. 4Step 4 Wait for the goal to show as recording, then run your ads: from then on the reports carry a Conversions column.
  5. 5The platform's help Open it
PART 08

X Ads, in plain words

X Ads is the second ad type: promoted posts on X aimed at the same buyer intent as your search campaign. Aha never spends money, never logs in to X and never posts ads for you.

What they are good forReaching people on X while they post, search and read about your topic: a new offer that needs eyes, testing which message lands, and buyers who have not typed a search yet.
When to use themWhen your buyers talk about the problem on X (software, marketing, money, creators, tech, news-led niches), and beside a search campaign rather than instead of it: search catches the people already asking.
How they work with search adsThe same intent on both. Each search theme becomes an X ad group with keyword targeting from the same keywords (X matches the words in what people search, post and engage with), the same countries, language and landing pages. Every X ad links with utm_source=twitter, utm_medium=paid_social, the campaign name and the ad group, so your analytics tells X visits apart from search clicks.
TargetingKeyword ad groups (X recommends at least 25 keywords and takes up to 750 an ad group, without punctuation), the follower look-alike campaigns below, your own followers if you tick it, and interests and conversation topics in their own campaign, as search words for X's own pickers and X's documented conversation types, never names Aha made up.
Target people like these accounts' followersX's follower look-alikes reach people SIMILAR to an account's followers, not the followers themselves. Paste the @handles you know into Competitors, Industry media and publications and Creators and experts in my niche (commas, spaces or new lines, with or without the @, x.com links work too); each group becomes its own campaign, as X advises. X suggests about 30 a campaign: under 10 the page warns the audience may be too small, over 100 it is more than X takes in one ad group. Tick My own followers for a separate warm campaign. Aha never picks handles: it suggests kinds of accounts to look up. Check these handles on X looks them up through your X connection in Social Publisher (followers, and a flag on accounts over a million followers, whose followers X says are not one topic); without that connection the page says it cannot check them, so check them on X.
RetargetingIts own campaign, judged apart from prospecting. Two audiences, only from what X documents: people who visited your landing page and did not convert (a Website Activity Custom Audience, with your converters excluded), and people who engaged with your prospecting posts (post engager targeting, 90 days back for promoted engagements). Its posts are a reminder, an objection answered from your offer, proof only if you give it under Retargeting details, and a deadline only if you give a real one. A smaller budget and a frequency note, labelled as suggestions.
Before retargeting can runThe X Pixel must be on every page and collecting first. Make the audiences in Audiences on the day it goes in (nobody is added from before), and come back when each shows Ready: X needs at least 100 people in a Custom Audience and recommends waiting at least a week after installing the tag. Visitors stay 90 days; X reaches those active on X in the last 30.
Customer listsUse my Leads inbox as a list gives you a file in the format X documents for a List Custom Audience (.csv, .tsv, .txt, one email per line, hashed by X during the upload) with only the leads whose sign-up recorded email consent. Upload it yourself, exclude it from prospecting, and only upload people who agreed to marketing, following X's policies. Lists take up to 48 hours to match. Aha never uploads anything.
The posts3 promoted posts per ad group, each within 257 characters (X allows 280 and a link takes 23, so they fit with or without a plain link), with a website card headline within 70 characters (50 avoids truncation). The limits are enforced by code, a competitor's name is refused, and each post has an image prompt with the exact words baked in.
The images1.91:1 at 1200 x 628. Make the image runs on your own OpenAI key (added under Keys and connections); without it, Copy prompt or Open in ChatGPT. Download PNG gives the file X takes.
Budget and bidsSuggestions, labelled as suggestions: the Website traffic objective with the Link clicks goal (Site visits once the X Pixel is in), Autobid, pay by link clicks so the cost per click compares with search, and the same daily budget as the search campaign. Type your own X budget or maximum bid on the form and they replace the suggestions.
The X PixelThe steps in plain words: Events Manager, the base code on every page, one Lead (sign-ups) or Purchase (sales) event on the thank-you or confirmation page, then check it shows Active.
The setup sheetX's bulk file (Ads Editor) needs IDs from your own account and X publishes no column list, so the export is a guided setup sheet: every field to type into X Ads Manager, in the order its form asks for them, with copy buttons. Download the sheet saves it; Open X Ads Manager opens ads.x.com.
What Aha does not doAha never spends money, never posts to X Ads, never logs in to your X account and never picks handles for you. After the first week, Optimise a campaign reads the report files you export from both and suggests the moves (what to pause, the winners, the search terms to add); it never changes your account. Building the X campaign from its winners is planned, not built.
PART 09

Run X ads alongside a Bing STAG campaign

0 of 4 done

Tony's plan: run X ads with Microsoft Advertising STAG campaigns to drive traffic, on the same intent, and keep what converts.

  1. Build the search campaignPick Microsoft Advertising (or both) as the platform, STAG as the group kind, and finish it as usual.
  2. Press Add an X campaign to matchOn the finished campaign, the Run X ads alongside panel adds an X campaign from the same themes, keywords, countries, language and landing pages. Paste the @handles you know by category first, and any proof or real deadline for retargeting. It reuses the search research, so it does not count as one of your campaigns this month.
  3. Set it up in X Ads ManagerInstall the X Pixel, make or copy the images, and type the setup sheet in. Nothing spends until you press Launch there.
  4. Check after a few daysGive both a few days on the same daily budget, then compare visits, sign-ups and cost per sign-up by utm_source in your analytics. Keep what converts and move the budget toward it.
PART 10

Google Demand Gen, in plain words

Google Demand Gen is the third ad type: image, carousel and video ads, the campaign that took over from Discovery ads, aimed at the same buyer intent as your search campaign. Aha never spends money and never publishes anything in Google Ads for you.

Where the ads showYouTube (Shorts, the home feed, Watch next, search results, and before or during other videos), the Discover feed, Gmail, Maps, and sites and apps on the Google Display Network, plus Google video partners. Google recommends keeping all Google channels on; you can pick them per ad group with Let me choose. Google is moving Display campaigns into Demand Gen, starting June 2026.
When to use itSearch ads catch people already asking. Demand Gen reaches the same kind of people before they search, while they watch and scroll: a visual offer, a new idea, retargeting your visitors. X ads reach people posting about your topic. Run Demand Gen beside your search campaign, not instead of it.
How to start onePick Google Demand Gen as the platform on the form, or press Add a Demand Gen campaign to match on a finished Google or Microsoft search campaign (it reuses the research, so it does not count as one of your campaigns this month).
Audiences from your search intentEach top search theme becomes a custom segment of "People who searched for any of these terms on Google properties" (Google recommends 10 to 15 search keywords; Aha takes up to 15 from the theme, by searches). Competitors you typed as web addresses become "People who browse websites similar to". Then a lookalike segment of your website visitors or your customer list (Balanced, about 5 percent, suggested), a retargeting ad group of your website visitors with the converters excluded, and Google's own affinity and in-market segments as an optional test, as search words only. Only audience types Google documents; Aha never names a segment or a competitor for you.
Customer MatchTick I have a customer list for a Customer Match ad group. Use my Leads inbox as a customer list gives you a CSV with Google's own column headers (Email, Phone), only real leads whose sign-up recorded consent, phones only when already in international format. Google needs at least 100 records in a file. Customer Match targeting needs an account with 90 days of Google Ads history and more than USD 50,000 total lifetime spend; other accounts in good standing can use a list for Observation and Exclusions only. Upload it yourself and confirm Google's policy statement; Aha never uploads anything.
The adsAn image ad per ad group with 5 headlines (up to 30 characters) and 5 descriptions (up to 90), a carousel of 2 to 10 square cards (card headlines up to 40), and a video ad when you paste your videos (long headlines up to 90, up to 5 videos an ad). Business name up to 25. Code enforces every limit and refuses a competitor's name or a number, proof or deadline you did not give. Every final URL carries Google's fallback tags (utm_source=google, utm_medium=cpc, a campaign name ending in cross-network) on top of auto-tagging.
The imagesEach image ad gets a prompt in Google's three shapes with the exact words baked in: landscape 1.91:1 (1200 x 628), square 1:1 (1200 x 1200) and portrait 4:5 (960 x 1200). Make the image runs on your own OpenAI key only; without it, Copy prompt or Open in ChatGPT. Your logo is yours to upload: Aha never makes one.
Video adsDemand Gen video ads play from YouTube: Google Ads cannot take a video file, so upload it to YouTube first. Public or unlisted both work. Paste vertical videos for Shorts and landscape videos for in-stream. At least 5 seconds; under 10 seconds does not show before or during other videos; Google suggests over 15 seconds. Make short vertical, landscape or square clips with ClipBuildr in Video Editr.
Budget and biddingSuggestions, labelled as suggestions: Maximize Conversions, and the same daily budget as your search campaign, or 10 times your target cost per action when you give one (Google recommends at least 10 times). Your own budget and target replace them. Google advises about 50 conversions before changes and at least 3 weeks before judging.
Conversion trackingThe steps in plain words: the Google tag on every page and one conversion action for your thank-you or confirmation page, then check its tracking status. Demand Gen learns from those conversions.
The setup sheetGoogle documents no Google Ads Editor import columns for Demand Gen, so the export is a guided setup sheet: every field to type into Google Ads in the order of its 6 creation steps, with copy buttons. Download the sheet saves it; Open Google Ads opens ads.google.com.
After it runsDownload the ad groups report from Google Ads and give it to Optimise a campaign: it judges each Demand Gen ad group on its cost per conversion. Judge the retargeting ad group apart from the cold ones.
PART 11

Grow my YouTube channel

0 of 4 done

Grow my YouTube channel: your videos play as ads on YouTube to people interested in your topic, and Google aims them at people likely to subscribe or watch more of your videos. It grows the channel. It does not send anyone to a website.

  1. Pick it on the formPlatform Google Demand Gen, then Grow my YouTube channel. Describe your channel in the offer box, add the channel address, and choose Subscribers or More views.
  2. Paste your videosYour YouTube video links: vertical ones for Shorts, landscape ones for in-stream. Unlisted is fine. Make short vertical, landscape or square clips with ClipBuildr in Video Editr.
  3. Link your channel to Google AdsYouTube Studio, Settings, Channel, Advanced settings, Link Account (or Google Ads, Tools, Data manager, YouTube). Allow up to 24 hours before you create the campaign. The review has every step.
  4. Type the sheet into Google AdsCreate a campaign without a goal's guidance, Demand Gen, campaign goal YouTube engagements, Maximize Conversions for the first 14 days. Audiences come from your niche: the people who searched for your topic on Google and YouTube, and people like your viewers. The final URL is your channel.
PART 12

How your ads are tracked

Every ad is tagged the way Google Analytics expects, in lower case: Google ads by auto-tagging with a small fallback tag, Microsoft ads by Microsoft's own UTM tagging, and X ads as paid social. Each campaign, ad group and ad shows up by name in your analytics, apart from the others.

Google Ads search campaignsLeave auto-tagging on in Google Ads (it is on by default for new accounts): Admin, Account settings, Auto-tagging, "Tag the URL that people click through from my ad". It adds a click ID (gclid) that Google Analytics reads. Link Google Ads to your Google Analytics 4 property (in Analytics: Admin, Product links, Google Ads links), so your ad clicks, costs and campaigns show in Analytics. Each final URL also carries utm_source=google, utm_medium=cpc, the campaign and the ad group: Google's own fallback for the few clicks it cannot tie to a click ID. With auto-tagging on, Analytics uses the click ID first, so nothing is counted twice.
Google Demand GenLeave auto-tagging on in Google Ads (Admin, Account settings, Auto-tagging) and link Google Ads to your Google Analytics 4 property. Analytics then files these ads under Cross-network, its channel for Demand Gen. Each final URL also carries utm_source=google, utm_medium=cpc and a campaign name ending in cross-network: the fallback Google suggests for Demand Gen clicks it cannot tie to a click ID, filed under the same channel. utm_term names the ad group and utm_content the ad.
Microsoft AdvertisingTurn on Microsoft's own UTM tagging: Campaigns, Settings, Account level options, Auto-tagging of UTM, tick "Add UTM tags to my destination URLs" and choose to replace all existing tags. Microsoft then adds utm_source=bing, utm_medium=cpc, the campaign, the ad group (utm_content) and the keyword (utm_term) to every click. The Editor file adds no tags of its own, so nothing is doubled. Analytics files these visits under Paid Search.
X AdsEvery X ad's link carries utm_source=twitter and utm_medium=paid_social: Google Analytics knows twitter as a social site (it has no entry for x), so these visits land under Paid Social. utm_campaign is the campaign name, utm_term the ad group and utm_content the post, so you can compare each post, and the Ads Optimiser can match sign-ups to each ad group.
Why these tagsThey are the values Google Analytics uses to sort visits into channels: Google ads by their click ID (Paid Search for search, Cross-network for Demand Gen), bing with cpc as Paid Search, twitter with paid_social as Paid Social. Every value is lower case, because Google Analytics treats Google and google as two different sources.
PART 13

Your limits

Starter allowance1search campaign in your first 14 days
Each month5campaigns of up to 50 ad groups on the full allowance. Unlimited with your own AI key and DataForSEO login after your first 14 days.
Search datameteredKeyword Planner lookups and live results checks count toward your monthly amount; your own DataForSEO key costs it nothing
FREE DEMO1 a dayone campaign of 3 ad groups, Google only, no export
PART 14

If something looks wrong

Still stuck? Email support@anthonyhayes.me or open the help desk.
Ready to build?Describe the offer or paste the page, pick the countries, check the estimate and press Build the campaign.Open Ad Campaigns