{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Fire Pixel: Advanced Google Ads",
  "home_page_url": "https://firepixel.co.uk/",
  "feed_url": "https://firepixel.co.uk/feed.json",
  "description": "Articles on advanced Google Ads: deriving values from unit economics, capturing calls from the search results, feeding CRM outcomes back to Google, and running the weekly loop.",
  "authors": [
    {
      "name": "Ben Luong",
      "url": "https://firepixel.co.uk/about"
    }
  ],
  "language": "en-GB",
  "items": [
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/ai-agents-google-ads",
      "url": "https://firepixel.co.uk/advanced-google-ads/ai-agents-google-ads",
      "title": "AI agents for Google Ads: the ones I use, and the ones I don't",
      "summary": "Google already runs an agent inside your account. External bidding agents lose on its home territory. Where AI agents actually earn their keep in Google Ads: the inputs and the audit.",
      "content_text": "Three weeks ago I posted this on LinkedIn:\n\n> I think agents are overrated. I just manage everything in the interface. PMax and smart bidding are already agents, so it doesn't make sense to layer another agent on top. The agents I've seen peddled are actually harmful. No external agent is going to outperform Google's AI on home territory.\n\nThis site says AI does the volume in every account I run. Both statements are true at the same time, and the reason they are both true is the most useful thing I can tell you about AI in Google Ads.\n\nThe line that resolves them: it depends which side of the auction the agent works on.\n\n## Google already runs an agent in your account\n\nStrip the branding off Smart Bidding and Performance Max and describe what they do: they observe context, make decisions toward a goal, act without asking, and learn from the results. That is an agent. It has been an agent since before the word was fashionable.\n\nAnd it is an agent with home advantage. At auction time, Google's bidder sees signals that are never exposed to you or to any tool: the individual query in full, the user's session context, device and location detail, time patterns, and everything its models infer from them. It sets a bid per auction, billions of times a day, with feedback from every auction it has ever entered.\n\nThat is the machine this site keeps saying we trust. Day to day, I let it run. Bidding decisions, query matching, the moment-to-moment allocation inside a campaign: interface untouched. Not because attention is expensive, but because intervening there is trading against better information.\n\n## Why external bidding agents lose on home territory\n\nThe agent products being peddled to advertisers mostly work inside the auction's territory: tools that adjust bids on a schedule, robots that add negatives daily from the search terms report, layers that promise to \"optimise your campaigns with AI\" by nudging the same levers you can see in the interface.\n\nThink about what such a tool can actually observe: the reporting API. Aggregated, delayed, and a fraction of what the bidder acted on in real time. Every decision it makes is made with less information than the system it is trying to correct, and its corrections arrive after the fact, to be re-learned around by the bidder on the next cycle.\n\nAt best, that is noise the bidder absorbs. At worst it is actively harmful: bid nudges that fight auction-time bidding, daily negative-gardening that starves match types of the queries they needed to learn from, budget shufflers that reset learning for a rounding error. The account pays for the tool, then pays again in the interference.\n\nThere is a simple test for any AI tool being sold to you: does it act on levers inside the auction, or does it work on what the auction cannot see? The first kind is competing with Google in the one arena where Google cannot lose. The second kind is doing a job Google has left undone.\n\n## What Google's agent cannot see\n\nBecause here is the other half, and it is the half this whole practice is built on. Google's agent is blind outside its own platform.\n\nIt does not know that the call closed at 50 per cent and the form at 20. It does not know the £300 job completed, or that the caller was an existing customer chasing an update. It cannot read your CRM, listen to a call, or derive a conversion value from your close rates and margins. It optimises brilliantly toward whatever it can see, and what it can see, in most accounts, is a pile of proxies: form fills, thirty-second calls, clicks on a WhatsApp button.\n\nAn agent with perfect execution and wrong objectives produces the wrong result flawlessly. That is the actual state of most Google Ads accounts: not a bidding problem, an input problem.\n\n## Where agents earn their keep: the inputs and the audit\n\nSo the AI in my accounts works entirely outside the platform, on the two jobs Google's agent structurally cannot do.\n\n**Feeding.** [Deriving conversion values from unit economics](/targets-from-unit-economics), so the bidder optimises toward worth instead of count. [Scoring calls](/qualified-call-tracking), an LLM reading the transcript and answering one question: was this a lead? Joining every route into the business to [the CRM, and sending only the qualified outcomes back](/crm-feedback-loop) as offline conversions with values attached. All of that is agent work, and none of it touches a bid.\n\n**Auditing.** Google's agent will never mark its own homework. Every week, [automation pulls the numbers](/advanced-google-ads/the-weekly-loop): spend against budget, value against the trailing period, conversion mix by action type, search term composition, the offline upload log, all reconciled against what the CRM says actually happened. The machine flags what moved. A person decides what to do about it. Where a change is needed at scale, [AI drafts it and a human approves it in the interface](/api-management) before it stands.\n\nNotice the shape: the agents propose, score, reconcile and flag. They do not decide. The one agent making autonomous decisions inside the account is Google's, because inside the account, Google's is the best there is.\n\n## What this looks like day to day\n\nHonestly: the interface mostly gets left alone. Bidding runs itself. Negatives are structural, built once at account level as [brand lists and the three standing exclusion lists](/advanced-google-ads/brand-lists-vs-negative-keywords), not gardened daily from the search terms report. The work happens outside: the tracking, the values, the call scoring, the landing pages, the warehouse, the weekly reconciliation. The platform is the engine; everything I do is the fuel line and the dashboard.\n\nThat is also why \"we manage your bids daily\" has quietly become an anti-signal when you hear it from an agency. Daily bid management inside a Smart Bidding account is either not happening, or it is happening and hurting.\n\n## The rule\n\nInside the auction: trust the machine. It is an agent with better information than you, and layering another agent on top of it is paying to interfere.\n\nOutside the auction: the machine is blind, and everything that matters to your business lives there. Feed it real values and real outcomes. Audit what it bought against what your CRM says. Use all the AI you like for that work, because there, the comparison is not against Google. It is against not doing the work at all, which is what most accounts choose.\n\nWe trust the machine, and we feed it. The LinkedIn post is the first half. This site is the second.\n\n[The weekly loop](/advanced-google-ads/the-weekly-loop) · [CRM feedback loop](/crm-feedback-loop) · [What is advanced Google Ads?](/advanced-google-ads/what-is-advanced-google-ads)",
      "date_published": "2026-08-26T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/google-reps-second-pair-of-eyes",
      "url": "https://firepixel.co.uk/advanced-google-ads/google-reps-second-pair-of-eyes",
      "title": "Google reps: a second pair of eyes, not a strategy",
      "summary": "Working solo on confidential accounts means few people can ever look at them. Google reps can, and they see data the interface does not show. How to use that without taking the script.",
      "content_text": "Ad accounts are confidential. I cannot post a screenshot in a Slack community, hand the login to a friend, or talk a problem through with another consultant who can actually see the numbers. Working solo, the list of people who are allowed to look at an account with me is very short.\n\nGoogle reps are on that list. So I use them, deliberately, as a second pair of eyes.\n\n## What a rep can see that you cannot\n\nReps sit on internal diagnostics that never appear in the interface. On one review call, a rep flagged that Quality Score in an account was being held back by a restricted click strategy: a diagnosis pulled from data on their side of the glass, not mine. That is not something any amount of staring at the interface would have produced.\n\nThat is the real value of the channel. Account-level diagnostics you cannot pull yourself. Beta access. An escalation path when something in the account is genuinely broken and support-by-form would take weeks. A human who can look at the same screen, legitimately, and say what they see.\n\n## Why I am not a Google Partner\n\nThe Partner badge is earned partly through spend thresholds and adoption of Google's recommendations. That is an incentive structure, and incentive structures shape advice. A partner agency has targets to hit that have nothing to do with your account.\n\nI skipped the badge on purpose. No quota to hit, no recommendation score to protect, no reason to switch anything on except that the numbers say so. And the reps still take the calls, because the accounts spend money. Total freedom, plus Google's eyes when I want them. That is the trade, and it is a good one.\n\n## The discipline\n\nThe same channel that hands you a diagnosis will also hand you a script. Reps are expected to raise certain options because some advertisers fear certain numbers; I have written up [a call where the suggested target refuted itself in one column](/advanced-google-ads/no-right-number-for-the-target-box) once the rep committed to a number. Both things are true at once: the diagnostics are real, and the suggestions answer fears rather than maths.\n\nSo the rule is simple. Reps are a diagnostic and escalation tool, never a strategy. Every suggestion gets held against the account's own numbers before it goes anywhere near a setting, the same as any other input to [the weekly loop](/advanced-google-ads/the-weekly-loop). Most suggestions fail that test. The ones that pass usually started as something the rep could see and I could not, which is exactly what a second pair of eyes is for.\n\n[The weekly loop](/advanced-google-ads/the-weekly-loop) · [There is no right number for the target box](/advanced-google-ads/no-right-number-for-the-target-box)",
      "date_published": "2026-08-26T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/no-right-number-for-the-target-box",
      "url": "https://firepixel.co.uk/advanced-google-ads/no-right-number-for-the-target-box",
      "title": "There is no right number for the target box",
      "summary": "Why Google's August 2026 bidding change has no fix you can type into the target box. The maths, the failure modes, a Google rep put on the spot, and what to actually do.",
      "content_text": "One week after the change I have had time to reflect and see what is happening. There are complaints about campaigns tanking, budgets not spending, and lower quality leads. Personally I have seen a lot of fluctuation in CPAs and I am hoping it will settle down, but I fear the step up in CPA is going to be the new normal.\n\n## What changed\n\nOn 17 August 2026, Google changed how bidding works for campaigns that are limited by budget and use a target-based bid strategy such as Target CPA or Target ROAS. The change applies to Search, Shopping, Performance Max, Demand Gen and Travel campaigns. Display and Hotel campaigns already worked this way. App and video campaigns are excluded.\n\nBefore the change, a budget-limited campaign with a target behaved like a bargain hunter. The system bought the cheapest conversions available first, and the budget usually ran out before the average cost ever approached the target. Google's own example: a campaign with a Target CPA of $10 that was actually converting at $5. The target sat in the settings doing nothing. The budget was the real constraint.\n\nAfter the change, the target means what it says. Google's help documentation states that budget-limited campaigns \"will more consistently perform toward your bid target.\" In the same example, the campaign \"will deliver more closely to a $10 actual CPA.\" The target has changed from a ceiling into a setpoint. The system now delivers to it from both sides.\n\n## Why this matters: the same budget buys less\n\nCost per acquisition is simple arithmetic. CPA equals budget divided by conversions. If the budget stays fixed and the CPA rises from $5 toward $10, the number of conversions falls. Same money, higher prices, fewer results. Spend does not change. What changes is what the spend buys.\n\nThis is why the framing of \"more consistent and predictable performance\" deserves scrutiny. The performance becomes predictable at the level you typed into the box, which for an overachieving campaign is a worse level than the one you were getting.\n\n## The obvious fix, and why it fails\n\nGoogle's recommended response is a tool called the Bid Target Adjustment Tool. It offers to lower your target to match your recent actual performance. Target was $10, actual was $5, so set the target to $5 and nothing changes. That is the advice most of the industry repeated.\n\nIt fails for two reasons.\n\nFirst, the $5 was an average produced by a system that was free to hunt below it. Cheap auction days, quiet weeks, seasonal dips: the old system followed prices down and those savings accrued to you. Set $5 as a target under the new rules and the system delivers to $5 from both sides. When auctions dip cheaper, you no longer follow them down. The drift that produced your $5 is the exact behaviour you have switched off. The target now blocks the mechanism that created the number you set it to.\n\nSecond, the $5 average came from skimming the cheapest inventory. The marginal conversion, the last one your budget bought, cost more than $5. Meanwhile every other affected advertiser is repricing upward at the same time, because their campaigns are also being walked toward their targets. Auction prices inflate. A $5 target in an inflating auction starts to bind, the campaign underdelivers, and budget goes unspent.\n\nSo a target tuned to your actuals caps your upside and keeps your downside. Every branch of that decision lands at $5 or worse.\n\n## There is no correct number\n\nPut the two failure modes together. Leave the target loose and the system spends your budget at worse efficiency, and volume falls. Tighten it to your actuals and you freeze yesterday's cream-skimmed average into a moving auction: unable to do better, still able to do worse.\n\nA theoretical right answer exists: your marginal CPA at the point of budget exhaustion. That number is not shown anywhere in the interface, it moves every day with auction conditions, and being wrong in either direction costs you. A number you cannot observe and cannot hold is not a number you can type into a box.\n\nThe conclusion is that the box itself is the problem, for one specific group of advertisers.\n\n## No account has one CPA\n\nEverything so far treats the account as if it has a single cost per acquisition. Real accounts do not. Performance varies across campaigns, across channels, and across days, and that variance is where a target does its worst work.\n\nTake a live example. A travel account running three campaign types side by side: over the last seven days, Demand Gen converting at $23, Search at around $32, Performance Max at $40. The account's trailing average sits at roughly $40 for the month.\n\nNow set a single target at that average, which is exactly what the adjustment tool and the trailing data will suggest. The Performance Max campaign delivering at $40 keeps delivering at $40. The Search campaign at $32 gets walked up to $40. The Demand Gen campaign at $23, the best thing in the account, gets walked up to $40. A target can never pull anything down below the number, and after 17 August it pulls everything beneath the number up to it. A target set from an average locks your worst campaign's economics onto your best campaigns.\n\nThe same logic runs through time instead of across campaigns. Auction prices fluctuate. Some days conversions are available at $20, some days at $50. That fluctuation is usually described as a problem the target will solve, and it is the opposite: the fluctuation is cheap days existing, and the ability to buy them is worth money. On expensive days the target stops you spending, and that volume never comes back. On cheap days the system now delivers at your number instead of the market's. An uncapped campaign harvests the cheap tail of the distribution automatically. A target is the act of selling that option back to Google for nothing.\n\n## Putting it to a Google rep\n\nOn a routine account review call, a Google rep suggested adding a Target CPA to the Demand Gen campaign above, to control its fluctuating cost per conversion. So the argument got tested live. Screen shared, one question asked: you name the number. What target goes in the box?\n\nThe rep checked the account data and suggested around $40, the trailing average. Which would walk the $23 campaign to $40, the $32 campaign to $40, and leave the $40 campaign at $40. When that was pointed out, the rep conceded the mechanics in full: whatever had been described was correct, \"it works like this only.\" Then came the more revealing admission. Targets get suggested because some advertisers are afraid of cost per acquisition rising, so reps are expected to raise the option. The suggestion is a script written for advertisers who fear an uncapped number, and it answers the fear rather than the maths.\n\nNothing about that account is special. The same spread, with a trailing average sitting above the best performers, exists in almost every multi-campaign account, so the same demonstration works almost everywhere. Ask anyone recommending a target to commit to a specific number, then hold that number against your best campaign's current CPA. The recommendation refutes itself in the time it takes to read one column.\n\n## The optimisation argument\n\nHere is the core of it, and it takes four sentences.\n\nCall the budget B. Maximise Conversions is asked to get the most conversions possible while spending B. A Target CPA adds a second constraint to that same problem. A constraint can never improve the optimum of the problem it is added to: at best it does nothing, at worst it removes auctions you would have won and the volume goes with them.\n\nSo the decision comes down to one question. Is your real objective to get the maximum output from a fixed budget? If yes, the target should come off. Switch to Maximise Conversions, or Maximise Conversion Value for revenue-based accounts, and let the budget do the constraining. That is what a budget is for. If your real objective is an efficiency number, then CPA is your true constraint, the budget was never the binding one, and you have a different problem with a different answer.\n\nThis is Google's own documented option. The help page lists switching to Maximise Conversions or Maximise Conversion Value as a way to \"capture the highest volume of conversions or conversion value for your set budget.\" It appears fourth in a list of five, after three variations of adjusting the number, and it is the only option printed with a warning attached.\n\n## Honest limits of the argument\n\nThree concessions keep this claim honest.\n\nThe argument is about the objective, and it says nothing about next Tuesday. Google's bidder is a learning system. Removing a target triggers a settling period of days to weeks, and performance during that window proves nothing in either direction. Judge the change after the system has resettled.\n\nThe proof is a single-period argument and the system is a learner, so what it observes shapes what it can do next. The effect should be small when the budget binds, because both strategies buy from the top of the same ranked list of auctions, but it cannot be shown to be exactly zero.\n\nAnd a target can be a legitimate stop loss. If your business genuinely cannot survive the top end of the CPA range that an uncapped campaign might produce, or if you are contractually held to a CPA number, then CPA is a hard constraint for you and keeping a target is defensible. The August change makes that insurance more expensive than it used to be, but for some businesses insurance is worth buying. The same applies to campaigns that are only intermittently limited by budget: on the days the budget has headroom, a target is doing real work.\n\nNone of these change the core answer for the advertiser whose budget genuinely binds and whose goal is maximum output. They define who that advertiser is.\n\n## Why the right answer stayed buried\n\nNo conspiracy is required. The incentives explain it.\n\nFor Google, a budget-limited campaign pays the same regardless of bidding strategy, so the money is somewhere else: the next budget conversation. An account with no target is capped at its budget, and the only way to grow it is to send more money and hope. An account with a target and headroom scales on rails: spend rises with auction prices, with query volume, and with every recommendation that says more conversions are available at your target. The entire help page funnels toward \"confidently increase your budget.\" The change converts budget-constrained accounts into candidates for target-constrained accounts, and target-constrained is the posture where Google holds the growth lever.\n\nFor agencies and consultants, \"remove the target\" is self-erasing advice. Nothing to tend, nothing to optimise, no number to report against. Client accountability is denominated in CPA targets, and deleting the target moves accountability onto the budget, which the client owns.\n\nFor the industry conversation, \"here is the number to set before the deadline\" makes an actionable post. \"The box should be empty\" makes a worse one, so it lost the distribution war.\n\nAnd underneath all of it, loss aversion. A cap that has never once bound still feels like protection, and removing it feels like risk. Nobody gets fired for keeping a decorative safety rail.\n\n## What to do\n\nPull every campaign with a Limited by Budget status running Target CPA or Target ROAS. For each one, answer the question: is the objective maximum output from this budget?\n\nIf yes, remove the target. Switch to Maximise Conversions or Maximise Conversion Value, expect a settling period of one to two conversion cycles, and judge the result after it. If the resulting CPA is genuinely unacceptable, that reaction is information: it means CPA was your real constraint all along, and you should manage it as one.\n\nIf no, because a contract, cashflow, or genuine tail risk makes CPA a hard limit, keep a target and set it deliberately as the constraint it now is, knowing it will bind. Or reduce your budget and use that to limit the CPAs.\n\nPortfolio bid strategies and shared budgets are in scope, and changes there happen at the portfolio or shared-budget level. Multi-channel campaigns such as Performance Max may also shift how traffic distributes across channels, which is worth watching separately.\n\nThe one thing not to do is nothing. Any target is bad if you are working with a fixed budget and over-performing. Most advertisers are in that category and should remove the targets.\n\n[17 August: Google converted a setting into a job](/advanced-google-ads/17-august-setting-into-a-job) · [Budget is the limiter](/advanced-google-ads/budget-is-the-limiter) · [Targets from unit economics](/targets-from-unit-economics)",
      "date_published": "2026-08-26T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/17-august-setting-into-a-job",
      "url": "https://firepixel.co.uk/advanced-google-ads/17-august-setting-into-a-job",
      "title": "17 August: Google converted a setting into a job",
      "summary": "Google's August 2026 change to how targets behave on budget-capped campaigns turned a set-and-forget setting into a weekly task. What it means for fixed-budget advertisers.",
      "content_text": "On 17 August 2026 Google changed how a bidding target interacts with a campaign that is limited by budget. The announcement came with a FAQ listing the options for advertisers, and the fourth option was to remove the target altogether.\n\nMost of the industry spent the weeks before it debating the mechanics. Our position, posted a week before the date, was that for most advertisers the answer was in plain sight: almost every account is on a fixed budget, so do what Google's own FAQ says and take the target off. Everything else was noise.\n\n## Why most advertisers are budget-limited\n\nWe have run accounts for twenty years, and outside a spell in lead brokering where the model was \"buy everything at this price\", every single one has had a fixed budget. Five current clients, all fixed. The uncapped advertiser who will spend whatever converts at target is the exception Google's tooling is designed around and almost nobody is.\n\nFor a fixed-budget advertiser the target was always doing a second job: holding spend below the budget by refusing auctions. After 17 August, that job stopped working the way it did. Complaints arrived the next day. CPCs went up for people who had kept a tight target on a capped campaign.\n\n## What changed for the work\n\nBefore, a target was a setting. You chose a number, and you could leave it for months. The account did roughly what the number said.\n\nAfter, on a capped campaign, the relationship between target, budget and bid cap has to be watched. Where does the campaign actually land against the budget this week? Has the CPC run up? Is the portfolio bid limit binding, and should it? Those are weekly questions now. Google converted a setting into a job.\n\nThat job is the [weekly loop](/advanced-google-ads/the-weekly-loop). A warehouse pulls the numbers, an automation flags what moved, a person decides. It is the part of Google Ads that cannot be set and forgotten any more, and it is where the fee is earned.\n\n## What to do if you are budget-capped\n\nRemove the target, or move to maximise conversions or maximise conversion value with no target, and let the budget limit spend. That is Google's own advice for the constrained case. Give every conversion action its real value first, so \"maximise value\" has something to maximise. Keep a maximum CPC bid limit on the portfolio as a backstop. Then check it weekly.\n\nThe full argument, including the failure modes of every number you could type into the box and a Google rep conceding the mechanics live on a call, is in [There is no right number for the target box](/advanced-google-ads/no-right-number-for-the-target-box).\n\n[API management](/api-management) · [Budget is the limiter](/advanced-google-ads/budget-is-the-limiter)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/calls-from-the-serp",
      "url": "https://firepixel.co.uk/advanced-google-ads/calls-from-the-serp",
      "title": "Why calls from the search results page never get tracked",
      "summary": "The biggest lead source in a trades account is the phone icon on the search results. Standard tracking never sees it. How Call Details Forwarding and CallRail fix that.",
      "content_text": "Search \"emergency locksmith\" on a phone. There is a call button on the ad. Tap it and the call connects. No website loaded, no page viewed, no tag fired.\n\nFor a locksmith, a windscreen fitter, a plumber, that call is the business. In the accounts we see it is the largest single conversion source. And the tracking that most agencies sell, however sophisticated, lives on the website. It cannot see a call that never got there.\n\n## What Google gives you\n\nGoogle does count these calls, through call reporting. A call lasting longer than the threshold you set, commonly thirty seconds, is recorded as a conversion. That is all it is: a duration. The person booking a £300 replacement and the person asking whether their job is still on for Thursday both count.\n\nThere is no quality layer. Nothing goes back to Google saying which calls mattered, so the bidding treats them all as equally desirable and buys more of whatever is cheapest.\n\n## What closes the gap\n\nGoogle's Call Details Forwarding passes the click ID for calls to call assets and call-only ads that last over fifteen seconds, delivered with the call along with the campaign and ad group. A call tracking number on those assets receives it. CallRail does this well.\n\nWith the click ID attached, the call can be scored and matched to what happened next. Was it a new enquiry? Did it book? Did it complete? That answer, with a value, goes back to Google as an offline conversion. The machine now learns from calls that became jobs, not calls that lasted thirty seconds.\n\nThe Google Business Profile is the other route. CallRail can swap the listing's primary number for a tracking number while keeping the real one as secondary for citation consistency. Those calls carry no click ID, so they stay reporting-only, but for the first time you know how many there are and what they were.\n\n## Details that catch people out\n\nAccount-level call reporting has to be on. The mobile click-to-call integration must be disabled before enabling Call Details Forwarding or calls double count. Google's own call reporting stays on beside it. UK tracking numbers need identity verification on signup, so allow a week.\n\nSite-side click ID capture is table stakes. Capturing the call that never touched the site is the difference.\n\n[Qualified call tracking](/qualified-call-tracking)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/budget-is-the-limiter",
      "url": "https://firepixel.co.uk/advanced-google-ads/budget-is-the-limiter",
      "title": "Budget is the limiter",
      "summary": "Why the daily budget should control spend in a Google Ads account, and why the target box on a budget-capped campaign should now be empty.",
      "content_text": "Two controls limit spend in a Google Ads campaign: the budget and the target. Most accounts use both, and use the wrong one.\n\nUsing the target as a brake means setting it tight enough that Google refuses auctions and the campaign underspends. It works, in the sense that spend stays down. It also means the campaign is passing on the clicks that would have been the best ones, because a tight average target can only be held by buying cheap.\n\nUsing the budget as the limiter means setting the daily budget from what you can spend and letting the values steer the bidding. The machine spends the budget on the best available outcomes and the budget stops it there.\n\n## How this used to work, and what changed\n\nBefore 17 August 2026 there was a comfortable halfway house: a target set with enormous headroom. An account we ran had a target CPA of £1,000 on a portfolio strategy with an actual CPA around £300. The target never bound, the budget controlled spend, and one number changed when the client changed what they could afford.\n\nGoogle's [17 August change](/advanced-google-ads/17-august-setting-into-a-job) ended that arrangement. On a budget-limited campaign the target is now a setpoint, not a ceiling: a campaign delivering well under its target can be walked up toward it. Headroom stopped being free. The honest version of this page's advice is now simpler than it used to be: on a fixed budget, the target box should be empty. Maximise conversions, or maximise conversion value where the values are real, and let the budget do the constraining. The full argument, including why there is no safe number to type instead, is in [There is no right number for the target box](/advanced-google-ads/no-right-number-for-the-target-box).\n\nA maximum CPC cap on the portfolio can stay as the backstop against a runaway auction, checked weekly, because a backstop that starts binding has become a second constraint.\n\n## What \"everything else is noise\" means\n\nMost of the industry debate around 17 August was about advertisers with unconstrained budgets and how their targets would behave. Almost nobody is that advertiser. If you have a fixed budget the setup is: budget limits spend, no target, values are real, check it weekly.\n\n## Where a target does still matter\n\nIf the budget genuinely does not bind, a target ROAS derived from your margin is the instruction that connects the account to the economics: you are telling the machine to buy all the value available at that return. And if a contract or cashflow makes efficiency a hard limit, a target is a deliberate stop loss, kept in the full knowledge that it now binds. Both are choices about your objective, not default settings.\n\n[Targets from unit economics](/targets-from-unit-economics) · [There is no right number for the target box](/advanced-google-ads/no-right-number-for-the-target-box)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/brand-lists-vs-negative-keywords",
      "url": "https://firepixel.co.uk/advanced-google-ads/brand-lists-vs-negative-keywords",
      "title": "Brand lists vs negative keywords",
      "summary": "Keyword negatives match strings. Brand lists match Google's entity for a brand and catch every variant. Why most accounts need both and have neither at account level.",
      "content_text": "A negative keyword matches a string. A brand list matches a brand.\n\nThat distinction cost a trades client a lot of money. Search terms in the account were full of a national repair franchise's name and its variants: the name with a town, the name run together as one word, the name inside longer phrases. The owner had added the obvious version as a negative keyword. The variants kept coming through, because a negative keyword controls terms according to negative-match rules, and synonyms, combined forms and related phrasings still need adding by hand.\n\nA brand list works differently. Google maintains an entity for each brand in its index, with the ways people write it. Adding the brand to a list and excluding the list blocks at the entity level, so it covers the variants, misspellings and related forms a single negative never will. When the thing you want to exclude is a brand rather than a phrase, it is the more complete control.\n\n## Why this matters for Performance Max\n\nWithout exclusions, PMax can serve against brand demand and take credit for it, both your own brand and competitors'. On that account's PMax campaign, two thirds of the visible search terms were competitor brand names. It looked efficient because those clicks were cheap and some of them converted. Most were people trying to reach the other company.\n\nBrand exclusions on PMax are the proper fix. One caveat: if you exclude your own brand from PMax, a Search campaign has to cover it, otherwise you have just handed your brand traffic to competitors.\n\n## The account-level gap\n\nIn every account we have audited this year, nobody had built a brand list. Very few had an account-level negative list either. Negatives lived in campaigns, added one at a time from the search terms report, and lost when the campaign was rebuilt.\n\nWe build three lists once, at account level: job seekers, competitors, and complaints traffic. Every campaign inherits them. Then a brand list for competitors and, where PMax is running, a brand exclusion.\n\nOne wrinkle since May 2025: brand settings for Search campaigns live in the AI Max panel, so adding a new brand list to a Search campaign needs AI Max on. PMax brand exclusions are unaffected. If you have turned AI Max off, as many did, you need to know that before you go looking for the setting.\n\n[API management](/api-management)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/clarity-and-n8n-tracking",
      "url": "https://firepixel.co.uk/advanced-google-ads/clarity-and-n8n-tracking",
      "title": "Clarity and n8n instead of server-side tracking for lead gen",
      "summary": "For lead generation the lead is the server-side event. Why we capture it in n8n, watch behaviour in Microsoft Clarity, and save server-side GTM for ecommerce.",
      "content_text": "Server-side tracking got sold hard for a few years. For ecommerce it earns its place: purchase events with real values, browser loss recovered, ad blockers partly sidestepped. We run it there, on managed hosting, and leave it alone.\n\nFor lead generation the case is weaker, because the event that matters happens off the site. A form submission is a proxy. The real event is a lead becoming a customer, and no amount of server-side tagging captures that.\n\n## What we do instead\n\nThe form posts to an n8n webhook. n8n stores the lead with its click IDs, landing page and timestamp, scores it, writes it to the CRM and fires the conversion to Google Ads with a value. One submission, one workflow, and every lead sits in a table you can query. When the page changes, the webhook does not care. When the CRM changes, one node changes.\n\nMicrosoft Clarity watches behaviour. It is free, records sessions, draws heatmaps, and it is how you find out that the chat widget opens itself over the call button on mobile, or that the form is abandoned at the same field every time. It does the job of the expensive behaviour tools for lead gen sites.\n\nGTM stays for GA4 and the odd third-party tag, with a measurement plan and a dataLayer spec so the next developer knows what fires. Consent Mode is wired in with Cookiebot from the start, because a tracking setup that breaks when Google's compliance email arrives is a setup built on ground that will move.\n\n## What you give up\n\nSome browser-level loss on the GA4 side, which for lead gen is an analytics problem and not a bidding one, since the bidding learns from the n8n upload. A hosting bill and a container you do not have to maintain.\n\n## When we still recommend server-side\n\nEcommerce. High-volume lead gen where the ad platforms' own tags are losing enough data to matter. Anywhere a client already has it working. It is a tool, and the lead gen tool is the webhook.\n\n[Tracking](/tracking)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/crm-only-sends-form-leads",
      "url": "https://firepixel.co.uk/advanced-google-ads/crm-only-sends-form-leads",
      "title": "Your CRM only sends form leads back to Google",
      "summary": "Offline conversion uploads matched on GCLID miss every phone-originated customer. What that teaches Google, and how enhanced conversions fix it.",
      "content_text": "A lot of well-run accounts have an offline conversion upload. Completed, paid jobs go from the CRM back to Google Ads, matched on the click ID that was captured when the lead came in. It is the right idea and it is better than most accounts manage.\n\nAsk one question: how does a phone lead get a click ID into the CRM?\n\nUsually it does not. The receptionist takes the call, types the name and number into the CRM, and there is no click ID because there was no form. When the job completes, the upload looks for a click ID to match on, finds none, and skips it. Every phone-originated customer is invisible to the upload.\n\n## What Google learns from that\n\nForms produce customers. Calls produce nothing. So bid on whatever produces forms.\n\nIn a trades business where calls close at over 50 per cent and forms at about 20, that is the machine being taught the opposite of the truth. An owner we worked with spotted this himself once we described the mechanism. His CRM to Zapier upload had never sent a phone job back in two years.\n\n## The fix\n\nEnhanced conversions for leads. The upload matches on hashed email or phone number as well as click ID, so a customer with no click ID still gets attributed to the click that produced the call. Google hashes the same fields on its side.\n\nCall tracking that captures the click ID on the call itself, so ad calls arrive with one. [Calls from the search results](/advanced-google-ads/calls-from-the-serp) covers how.\n\nAnd a loop rather than a one-way upload. Google to call tracking to the automation to the CRM and back to Google. Stage changes trigger the upload. New customers join the exclusion audience so their update calls stop counting. The CRM stays current because the automation does the boring part.\n\n## The second leak\n\nExisting customers ring the number in the ad. That call counts as a conversion. The account is paying to be phoned by people it already has. A Customer Match exclusion, refreshed from the CRM on a schedule, stops it.\n\n[CRM feedback loop](/crm-feedback-loop)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/landing-pages-are-not-your-website",
      "url": "https://firepixel.co.uk/advanced-google-ads/landing-pages-are-not-your-website",
      "title": "Landing pages for ads are not your website",
      "summary": "Why paid traffic should land on a fast static page built for one job, and why the SEO site is the wrong place for it.",
      "content_text": "The website has a job: rank, explain the company, serve existing customers, carry the blog. It has navigation, a history page, four hundred words of introduction and a chat widget someone added last month.\n\nAn ad has one job: turn a click that cost money into an enquiry. The page it lands on should have the same job and nothing else.\n\n## What goes wrong\n\nAds pointed at the homepage, so the visitor who searched \"emergency boiler repair leeds\" has to find the right page themselves. Ads pointed at the SEO page, which loads in eight seconds on a phone and has a WhatsApp widget that opens over the call button. A client-built page in a page builder that does not talk to the tracking, so the leads it produces never reach the account.\n\nAttachment is the usual cause. The site was expensive, it ranks, and the owner does not want a second version of it. So the ads keep landing on it and the page never gets tested.\n\n## What works\n\nA static page, no CMS. Under a second on mobile, nothing to hack, negligible hosting cost. One page per job: the service, the area, the price from, a tracking phone number, a short form. Navigation stripped. The form posts to n8n with spam protection and the lead arrives in the CRM with its click ID, the conversion fired with a value, all from one submission.\n\nNoindexed, so it does not compete with the SEO site. Branded. Focused is the point.\n\nWhere there is a real angle, a page for it. A local specialist whose real advantage is something the national franchise cannot offer deserves a page saying exactly that to the people searching for that franchise's name.\n\n## How it gets better\n\nClarity recordings show where people stop. The form field that gets abandoned goes. The button nobody sees moves. Changes are made one at a time and the numbers decide. If the existing page beats the new one, the existing page stays. That happens, and it is fine, because now it has been tested.\n\n[Landing pages](/landing-pages)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/microsoft-ads-holds-its-target",
      "url": "https://firepixel.co.uk/advanced-google-ads/microsoft-ads-holds-its-target",
      "title": "Why Microsoft Ads holds its target when Google doesn't",
      "summary": "In our accounts, budget-capped Microsoft Ads campaigns deliver above their target ROAS instead of drifting. What that means for how you set them up.",
      "content_text": "We run Microsoft Ads ourselves, and one behaviour stands out. A budget-capped campaign set to a target ROAS delivers above that target. It does not drift toward the number the way a Google campaign does, buying whatever cheap traffic is needed to hold the average.\n\nWe do not have Microsoft's internals and will not pretend to. The practical reading is that the auction is thinner, the bidding is less aggressive about filling budget, and the target behaves closer to how people assume a target behaves: as a bound the campaign stays inside.\n\n## What that changes\n\nOn Google, a fixed-budget advertiser is best served by removing the target and letting budget limit spend, with values doing the steering. On Microsoft, a target on a capped campaign is still a usable control. The setup is different and importing Google's settings gets it wrong.\n\nThe other difference is LinkedIn. Microsoft owns it, and Microsoft Ads lets you adjust bids on search campaigns by company, industry and job function. For B2B, where no search query tells you the searcher's company spends £50,000 a year on anything, that is the closest available signal to what you want. Google does not have it.\n\n## How we run it\n\nBuild for Microsoft's auction rather than importing. Use the new-account promotional credit as a measured test, with tracking live from the first click. Feed it the same CRM outcomes and enhanced conversions Google gets, so it learns from the same reality. Report it in the same warehouse so the two are compared on the same terms.\n\nFor older demographics and B2B it is usually worth it. For a young consumer audience, sometimes not. The credit and the numbers decide.\n\n[Microsoft Ads](/microsoft-ads)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/target-cpa-is-an-average",
      "url": "https://firepixel.co.uk/advanced-google-ads/target-cpa-is-an-average",
      "title": "Target CPA is an average, not a ceiling",
      "summary": "Google treats target CPA as an average to hit, so junk leads end up funding good ones. How the mechanism works and what to do about it.",
      "content_text": "People set a target CPA believing it caps what Google will pay for a lead. It does not. It sets an average Google must hit across the campaign, and the algorithm is free to hit it any way it can.\n\nThat means it will happily pay £30 for a click it thinks is a good lead, provided it can buy enough £3 clicks that also register as conversions to bring the average back to target. When every form, call and chat counts as one conversion, cheap junk qualifies. Wrong numbers, existing customers ringing about a job, people trying to complain to a national brand: if the call lasts thirty seconds, it counts.\n\nThe junk funds the good leads. The more competitive the auction gets, the more junk has to be bought per good lead to hold the average, which is why an account on a fixed target gets worse as CPCs rise even though the reported CPA stays flat.\n\n## What this looks like in an account\n\nThe reported CPA is on target. Conversions are steady. The owner says the phone rings less with real jobs. The search terms report shows the best query losing volume faster than the account overall while the worst query holds up. Job numbers in the CRM are flat or falling while the ads report nothing wrong.\n\nWe saw exactly this on a trades account: account clicks down 20 per cent, the best converting term down 31 per cent, the poorest term down 19 per cent. The mix had shifted toward the cheap stuff because that was the only way to hold the number.\n\n## What to do\n\nGive each conversion its real value and switch to value bidding, so the average is now an average of value and junk stops qualifying. Raise the call length threshold at the same time, so a thirty second call is not carrying an £80 value into the new objective. Put the CRM outcomes back into the account so the machine learns what actually closed. And let the budget, not the target, decide how much gets spent.\n\n[Targets from unit economics](/targets-from-unit-economics) · [CRM feedback loop](/crm-feedback-loop)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/what-is-advanced-google-ads",
      "url": "https://firepixel.co.uk/advanced-google-ads/what-is-advanced-google-ads",
      "title": "What is advanced Google Ads?",
      "summary": "A definition of advanced Google Ads: derived targets, per-action values, calls captured from the search results, CRM outcomes returned, budget as the limiter, checked weekly.",
      "content_text": "Advanced Google Ads means giving the bidding algorithm the inputs it needs to do its job: conversion values derived from your unit economics, qualified outcomes returned from your CRM, calls captured from the search results page, and budget as the only limiter. Then checking its work every week.\n\nThat definition needs unpacking, because \"advanced\" gets used to mean clever bid scripts, seventeen campaign types or a bigger management fee.\n\n## What the machine is good at\n\nGoogle's smart bidding predicts the probability that a given auction ends in the outcome you have told it to want, and bids accordingly. It does this across signals nobody can see or set manually. It is very good at it. Almost every attempt to outsmart it with manual bids or elaborate structure has lost for years now.\n\nSo the job of the advertiser has changed. Bidding is done. What is left is deciding what to tell the machine to want, making sure it can see the outcomes that matter, and checking that what it bought is what you asked for.\n\n## The five inputs\n\nTargets derived from economics. A target CPA someone made up tells the machine to hit an average by any means. A value derived from close rates and job value tells it what each outcome is worth. [Targets from unit economics](/targets-from-unit-economics).\n\nPer-action values. A completed job, a form fill, a thirty second call and a WhatsApp message have different values. Under target CPA they are all worth one. Under value bidding the machine reads the difference.\n\nCalls from the search results. In trades and local services the biggest lead source never visits the website. If it is not captured and scored, the machine is buying it blind. [Qualified call tracking](/qualified-call-tracking).\n\nOutcomes returned. The CRM knows what became a customer. Until that goes back to Google, phone leads included, the machine learns from form fills. [CRM feedback loop](/crm-feedback-loop).\n\nBudget as the limiter. Spend is controlled by the budget. The target is set with headroom so it guides rather than brakes. [Budget is the limiter](/advanced-google-ads/budget-is-the-limiter).\n\n## The weekly check\n\nThe machine bids, the outcomes come back, and every week the numbers are checked. Spend, value, search terms, conversion mix, impression share. A warehouse and an automation do the first pass. A person does the second and decides. [The weekly loop](/advanced-google-ads/the-weekly-loop).\n\n## What it is in one line\n\nWe trust the machine, and we feed it.",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/your-target-cpa-is-made-up",
      "url": "https://firepixel.co.uk/advanced-google-ads/your-target-cpa-is-made-up",
      "title": "Your target CPA is a made-up number",
      "summary": "Most Google Ads targets come from a feeling, a previous agency or whatever the account happened to be doing. Here is how to derive one from your unit economics instead.",
      "content_text": "Ask where the target came from. Every account has one, and the answer is almost always some version of \"it seemed about right\".\n\nIt was what a previous agency ran. It was what the account was doing the month someone set it. It was a figure the owner felt they could afford per lead, which is a fine instinct and a poor target, because affordability per lead depends on which leads, and the target treats them all the same.\n\nWe took over an account recently with a £9 target. Forms and phone calls were both counted at £9. The owner told us forms closed about 20 per cent of the time and calls closed over 50 per cent, and that 90 per cent of what closed became a completed job worth a couple of hundred pounds. Nobody had put those figures next to the target. When we did, the form was worth about £37 and the call about £94. Under a £9 target the machine had no way of knowing.\n\n## How to derive one\n\nFour numbers.\n\nWhat proportion of each lead type becomes a customer. Forms, ad calls, website calls, chat. Your CRM has it, or your receptionist does.\n\nWhat a customer pays, on average, for the first job. Or the first order, for ecommerce.\n\nWhat proportion of booked work actually completes.\n\nWhat you can spend.\n\nValue per lead type is close rate, times completion rate, times job value. That number goes into the conversion action. The campaign moves to value bidding. The target ROAS, once there is enough data to set one, comes from your margin, not from a hunch.\n\n## Why it matters\n\nA target is an instruction. \"£9\" says: buy anything that looks like a conversion at an average of £9. \"£37 for a form, £94 for a call\" says: buy calls, and pay more for them. Those produce different accounts from the same budget.\n\n[Tell us your unit economics and we'll work out your targets.](/targets-from-unit-economics)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    },
    {
      "id": "https://firepixel.co.uk/advanced-google-ads/the-weekly-loop",
      "url": "https://firepixel.co.uk/advanced-google-ads/the-weekly-loop",
      "title": "The weekly loop",
      "summary": "The weekly process behind an advanced Google Ads account: a warehouse pulls the numbers, an automation flags what moved, a person decides and signs off.",
      "content_text": "We trust the machine to bid. We do not trust it unchecked. The weekly loop is what the checking looks like.\n\n## Monday, before anyone opens the account\n\nThe warehouse has last week's data: Google Ads, Microsoft Ads, GA4, the CRM outcomes, the call scores. An n8n workflow runs the checks. Spend against budget, by campaign. CPA and conversion value against the trailing four weeks. Conversion volume by action type, so a jump in thirty second calls or a drop in forms shows up as itself and not hidden inside a total. Search term mix, with the share of brand, competitor and junk terms. Impression share and lost-to-budget. The offline upload log: what went back, how many matched, what value.\n\nAnything outside its normal range is flagged with the number, the previous number, and the change. That is the machine's half of the loop.\n\n## Then a person\n\nThe flags get read. Most weeks there are two or three and they take twenty minutes. Some weeks there is one that matters: the best converting query losing volume faster than the account, the CRM saying jobs are flat while conversions are up, a competitor appearing in the Transparency Centre with a new landing page.\n\nDecisions get made and written down. Values updated from last month's CRM data. A negative list extended. A budget moved. A conversion definition corrected where the CRM says the mix has shifted. Changes go through the [API](/api-management) where they are bulk, or the interface where they are not, and either way they are reviewed in the interface before they stand.\n\n## Why weekly\n\nMonthly is too slow. Since [17 August](/advanced-google-ads/17-august-setting-into-a-job) the relationship between target, budget and bid cap on a capped campaign has to be watched, and a month is long enough for CPCs to run away. Daily is theatre; the data is too noisy to act on and the machine needs room to settle. Weekly is the rhythm that catches a real change without reacting to a Tuesday.\n\n## What the client sees\n\nA short note each week if something changed, and silence if nothing did. The dashboard, on the warehouse, whenever they want it. A log of every change and why.\n\n[Data warehouse](/data-warehouse)",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Ben Luong"
        }
      ]
    }
  ]
}