VEYLO
Example audit · Google Ads

The account is sound.
The signal is not.

This is an example audit. The client, markets, campaigns and every figure are invented. The structure, analysis and finding sizing are how a veylo review works.

About this audit.

Prepared for
Fernbrook Lawn & Landscape (fictional client)
Prepared by
veylo
Customer ID
000-000-0000 (example)
Report date
7 October 2026
Audit range
1 January to 30 September 2026. Weekly segmentation. The primary analysis window.
Trailing 28 days
3 to 30 September 2026. Quality Score, search terms and current-state settings.
Trailing 7 days
24 to 30 September 2026. Budget-limited diagnostic.
Account scope
Entire account, no exclusions. All figures USD.
Primary goal
Profitable growth, with the Charlotte metro the priority market (growth posture).
Monthly budget
Not supplied. Reallocation is framed as spend-share shifts, not dollar targets.

How AI is used

A live veylo audit is produced with AI assistance across tens of thousands of rows of account data. Every question and recommendation comes from senior paid media experience. AI amplifies that judgment; it does not replace it.

AI can produce confident errors, so every figure in a live audit is checked against the source export and linked to it. Flag anything that contradicts the account and it is corrected. In this example every figure is invented, so there is no export to check against.

Contents

Business context & audit standard.

One campaign carries most of the spend, and the measurement layer is cluttered and partly broken. The work is to fix the signal, stop the known waste, then retune, in that order.

Account
Fernbrook Lawn & Landscape, managed by the account’s agency
Services
Residential lawn care: fertilization and weed control, aeration and overseeding, mosquito and tick control, grub control. Lead generation by call, form and chat, not e-commerce.
Markets
Raleigh, Durham and Charlotte. The Charlotte metro is the stated growth priority.
KPI
Cost per lead and efficiency, not raw conversion volume. The client reports on qualified leads.
Service priority
Lawn treatment programs (volume) > aeration and overseeding (return) > mosquito and tick > grub control. This sets which efficiency gaps matter most.
Bidding
Maximize Conversions on all 13 Search campaigns, with a target CPA on the three core agency campaigns, $44.10 to $132.25.
Conversion basis
Blended cost per lead. A lead is a quote request (Quote Request Form), a call of 90 seconds or more (Ad Calls 90s+) or a new caller from call tracking (New Caller – Call Tracking). The §2 caveat applies to every cost per lead in this document.

Scope and constraints

  • Data. Full year to date, weekly segmented, plus a 28-day and a 7-day window for current-state reads. In a live audit each table links to its source export.
  • Visibility. Visible search terms are 58.4% of Search spend in the last 28 days. The rest sits in Google’s hidden “other search terms” bucket and cannot be audited term by term. Every search-terms figure carries this caveat.
  • Smart Bidding. All Search campaigns run Maximize Conversions, which ignores time-of-day and geographic bid modifiers. So every lever here is one of: an ad-schedule change, a budget move, a location exclusion, a negative keyword or a target review. None is a percentage modifier.
  • How to read it. Sequence matters more than volume. Fix tracking before touching targets, budgets or match types. Several items need a client decision, not an agency action. They are marked Client in the roadmap.

Executive summary.

  • $3,221,118.00 across nine months produced 61,984 conversions at a blended $51.97 cost per lead. That is before the §2 caveats, which push the true number in both directions: forms over-counted, calls under-counted.
  • The main campaign is 71.9% of spend and 79.3% of conversions, at the account’s best cost per lead of $47.12. It runs 214 keywords across 22 themed ad groups and cannot simply be switched off.
  • A cluster of nine smaller campaigns spent $655,251.20 at $75.70 a lead over the year to date, about 61% worse than the main campaign. All nine were wound down by mid-August as the new build launched.
  • Conversion tracking is not double-counting, but it is cluttered and partly broken: six primary actions in the bidding basket, three of them misconfigured or dead, the quote form counting every submission with a stale Enhanced Conversions feed, and the offline layer not flowing.
  • In the last 28 days, 41.0% of visible search spend ($95,123.60 across 3,144 terms) returned no conversion at all. That is a $103,412.94-a-month run rate, and the top 250 terms hold 44.9% of it.
  • The agency running this account knows the craft. The gaps are in measurement and housekeeping, not in the build.

Lin–Rodnitzky Ratio

1.70latest 28-day window · 1.46 full period

The latest window sits in the well-managed band (1.5 to 2.0). The full-period figure is one notch lower, in the conservative band, pulled down by the main campaign’s strong early history. The rolling series has held between 1.50 and 2.08 all year with no runaway trend. Negative-keyword coverage is loose, but the winners carry it.

Caveat: the ratio is computed on visible terms only (58.4% of Search spend). Re-derive it after the §2 tracking fixes.

Account health

AreaRatingOne-line reason
§2 Conversion trackingAmber6 primaries, 3 recording nothing. Quote form over-counting, CRM import down.
§3 Campaign structureGreenNine weak campaigns already wound down. Spend now sits in the main campaign and the new build.
§3 BudgetAmberAll 3 core campaigns are limited by budget.
§3 Quality ScoreAmber35.8% of rated spend sits in Quality Score 4 or below.
§5 Search terms and wasteAmber$103,412.94 a month on terms that never convert (last 28 days).
§6 Ads and creativeAmberNo Excellent ad strength anywhere. $771,446.80 on duplicated RSAs.
§7 SettingsGreenEnhanced Conversions on. Network and location settings correct. One stray location target to remove.

Filled dot: needs work. Ring: sound.

Top five findings, ranked by dollar impact

#FindingImpact§
1Charlotte holds only 24.6% of its impressions+224 leads a month available10
2Zero-conversion search-term spend, loose negative coverage$103,412.94 a month5
3Curated hard-negative themes (jobs, wrong service, DIY, retail products, price, competitor). A subset of finding 2.$110,787.93 a year5
4Duplicated RSA creative splits Smart Bidding’s learning$771,446.80 on 64 ads6
5Conversion-signal integrity (6 primaries, offline layer down)Bidding runs on these six actions (§2)2

Conversion tracking.

Amber. There is no duplicate-conversion inflation: every candidate pair fails the correlation test. The problem is a cluttered, partly broken measurement architecture. It makes the optimisation target noisier than it should be and leaves lead quality unmeasured.

Tracking inventory

Conversion actionStatusVolumeAssessment
Quote Request FormPrimary26,640Keep, with fixes. Count one, not every. Remove the $250 placeholder value. Enhanced Conversions feed is stale.
Ad Calls (90s+)Primary25,984Keep. The primary call signal, with a 90-second threshold.
New Caller – Call TrackingPrimary9,360Keep. Goes blank for three weeks since July.
Live Chat LeadPrimary0Tag never fires. Demote to secondary.
Click-to-Call TapsPrimary0Not recording and not a lead. Demote.
CRM Sale ImportPrimary0Signed-program outcomes. The import is not flowing.
Universal Analytics goals (two)Secondary0Universal Analytics stopped collecting in 2023. Archive them.

Six primary actions sit in the bidding basket. Volumes cover 1 January to 30 September 2026. Source: conversion actions export.

Duplicate detection

Pearson correlation of weekly volumes and co-occurrence at campaign-month level, computed only over weeks where both actions were live. Confirmation needs r of 0.85 or more and co-occurrence of 80% or more.

Action pairPearson rCo-occurrenceVerdict
Ad Calls (90s+) × New Caller0.4159.1%Separate action: different capture methods.
Quote Request Form × New Caller0.4463.2%Separate action: form versus call.
Quote Request Form × Ad Calls (90s+)0.3964.8%Separate action: form versus call.

No cost-per-lead restatement for double-counting. Note the reverse risk. The low 0.41 correlation between the two call actions is itself a symptom: if both were catching calls cleanly it would be tighter. New Caller is only 36.0% of Ad Calls volume and goes blank in three weeks since July. Phone leads are more likely under-counted than over.

What is actually wrong

  • Six conversion actions are Primary and in the bidding basket. Maximize Conversions optimises to their sum, and that sum includes Live Chat Lead (tag never fires), Click-to-Call Taps (0 conversions) and CRM Sale Import (0).
  • Quote Request Form, the single largest form signal, counts every submission rather than one per person, carries a $250 placeholder value, and its Enhanced Conversions feed has not received data in over 60 days. It is the least trustworthy input to bidding.
  • The offline / CRM layer is not flowing cleanly. CRM Sale Import records nothing and New Caller goes blank for three weeks. Signed lawn programs, the real measure of lead quality, are not measured at all.
  • Two Universal Analytics conversion actions are still in the account. They stopped collecting data in 2023 and will never record again.

Call quality

The Google Ads call export gives duration, area code, source and campaign. That is enough for volume and junk-rate proxies, nothing more. It was not assessed against a CRM or recordings.

MetricValueRead
Total calls49,504Over the period.
Median duration96 secHealthy for quote-led demand.
Under 30 sec16.8%Junk or misdial proxy. Normal range.
Under 90 sec38.4%Below the call threshold. Never becomes a conversion.
120 sec or more41.7%The realistic qualified ceiling.
Local area codes88.2%Of calls with a known code (919 and 704 dominant). Some out-of-area volume is normal.

The core agency campaigns show a shorter median call (58 sec against 96 sec account-wide). That is expected while their broad match runs ahead of its negatives. Source: call details export.

Campaign level.

One campaign carries most of the account. Its cost per lead is not a fair benchmark for the smaller campaigns, which have different volume and structure. But the cluster running well above it needed reining in, and has been.

Structure and spend concentration

Where spend and conversions sit: one campaign carries most of the account

Main campaign214 keywords, 22 ad groups
71.9% · 79.3%
Nine wound-down campaignsStopped 12 August
20.3% · 14.0%
Three core agency campaignsThe new build
7.8% · 6.8%
Share of spendShare of conversionsThe finding

The main campaign takes 71.9% of spend for 79.3% of conversions. The core agency campaigns are 7.8% of spend. Values read spend, then conversions. Conversions are blended; the §2 caveat applies.

GroupSpendConv.*CPL*Note
Main campaign$2,315,322.4049,136$47.12One campaign, 22 themed ad groups. Best CPL. Thin ad strength (§6).
Nine wound-down campaigns$655,251.208,656$75.70Greensboro test, Fall Promo, Mosquito Season, Snow Removal, Careers, Charlotte $40-off and others. The drag.
Core agency campaigns$250,544.404,192$59.77Scoped to a clean “Qualified Leads” goal.

* Blended; the §2 caveat applies. Window: 1 January to 30 September 2026.

Year to date flatters the main campaign, because the nine smaller campaigns and the main campaign both ran for months before the new build existed. On the trailing four weeks the picture is different:

GroupSpendConv.*CPL*% of spendAgainst year to date
Main campaign$249,636.804,416$56.5362.9%CPL up from $47.12
Core agency campaigns$147,377.202,528$58.3037.1%CPL down from $59.77
Wound-down campaigns————No spend since 12 August

Trailing window: 3 to 30 September 2026. The two builds have converged. The main campaign is no longer the cheap one, and both now sit above the year-to-date blended figure of $51.97. That is the number to watch, not the annual average.

Budget is binding on the core campaigns

CampaignDaily budgetSpend, 4 weeksConv.*CPL*Target CPAStatus
Main campaign$10,400.00$249,636.804,416$56.53NoneWithin budget
Core · Raleigh Lawn Treatment$2,080.00$55,442.00992$55.89$132.25Limited by budget
Core · Charlotte Lawn Care$2,240.00$60,123.20928$64.79$47.50Limited by budget
Core · Durham Aeration$1,280.00$31,812.00608$52.32$44.10Limited by budget

Last four weeks, 3 to 30 September 2026. Source: campaign and budget exports.

All three core campaigns carry a Limited by budget status on a combined $5,600.00 a day. They spend $5,263.47 a day, 94% of the $5,600.00 budget. In the last seven days they lost 34% of eligible impressions to budget on a cost-weighted basis. They are turning away impressions they could afford at their current cost per lead. This is the clearest single argument for the reallocation in §8 and the Charlotte lean-in in §10.

Quality Score

Spend-weighted Quality Score is 4.9 on the rated share of 28-day spend: $267,298.40 of $397,014.00. Newer keywords are not yet rated. $95,747.60, or 35.8% of rated spend, sits in Quality Score 4 or below. It concentrates on generic “near me” terms in the main campaign and the new Charlotte ad groups. This is a landing-page and ad-relevance gap, addressed in §5 and §6. Treat Quality Score as a scoreboard for that work, not a target.

CampaignRated cost (28d)Weighted QSCost in QS 4 or below% of rated costPriority
Main · Lawn Care Search$158,884.005.3$44,897.2028%Medium
Core · Raleigh Lawn Treatment$37,849.604.9$11,364.8030%Medium
Core · Charlotte Lawn Care$47,842.803.9$29,921.6063%High
Core · Durham Aeration$22,722.004.2$9,564.0042%High

Source: Quality Score export.

Bid strategy and targets

All Search campaigns are on Maximize Conversions, and the three core campaigns carry a target CPA. Those targets were set against a noisy signal. Reset them once §2 is clean (roadmap row 12). Because Smart Bidding ignores time and geo modifiers, the sections below recommend exclusions, schedules and budget moves only.

Geo

  • No individual ZIP code qualifies for exclusion on statistical grounds. At the account conversion rate of 11.4%, a ZIP code needs roughly 25 clicks without a single conversion before that holds at 95% confidence. Only two ZIP codes reach it, with $5,940.80 between them. That is immaterial.
  • The lever is ZIP clustering or geo-split campaigns for Charlotte (roadmap row 13), not individual exclusions. A dedicated Charlotte campaign would need about 30 conversions a month to give its target enough signal.
  • One location target on Core · Charlotte Lawn Care resolves to a place outside the United States. It had no spend in the last 28 days, but it should be removed (roadmap row 8).

Time of day

Spend and cost per lead by hour: cost per lead is flat across the day

$0k$0$100k$25$200k$50$300k$75$400k$100Spend (bars)Cost per lead (line)0003060912151821blended $51.97

Spend follows demand from 07:00. Cost per lead stays within a narrow band all day and overnight, so there is no cheap window being starved and no expensive window to trim. The 02:00 spike sits on a handful of leads. The dashed line is the blended $51.97. Window: 1 January to 30 September 2026.

By weekday, cost per lead ranges from $48.10 (Monday) to $56.80 (Thursday) and $55.20 (Sunday). Thursday and Sunday run 15 to 18% above the best day, but on real volume, so the account needs no day-level change.

Ad group level.

Segmentation is sound. The account runs 486 keywords across 83 ad groups, 5.9 per group on average, themed by service and city. The gap at this level is asset quality inside the groups, not how they are cut.

  • Structure. The main campaign carries 214 keywords over 22 ad groups, 9.7 per group, named by service and city (“Lawn Treatment Raleigh”, “Weed Control Cary”, “Aeration & Overseeding”). That is a workable structure and does not need consolidating.
  • Each off-theme cluster is either built out or blocked. Recurring off-theme query clusters (tree removal, snow, hiring, retail products and DIY) are quantified in §5 as negatives, not as new ad groups. If Fernbrook wants a tree service line, that is a deliberate build with its own campaign, not broad-match spillover. That is a business decision to confirm.
  • Two themes worth a decision. Mosquito and tick, and Spanish-language queries, convert near the account cost per lead and are absorbed by generic ad groups. Whether to give them dedicated ad groups or exclude them is a client decision.
Sub-clusterDistinct termsImpressionsClicksCostConv.CPLCTR
Mosquito and tick control56826,4802,128$33,748.80656.0$51.458.0%
Aeration and overseeding47216,3681,184$18,651.20336.0$55.517.2%
Spanish-language lawn care3049,024728$9,638.00192.0$50.208.1%
Tree removal / stump grinding2443,296168$1,909.200.0—5.1%

Sub-clusters of visible search terms, last 28 days. Confirm which to lean into and which to lean out of. Source: search terms export.

Search terms, n-grams & the LR ratio.

Figures in this section are invented, like the rest of this example audit.

Nine campaigns stopped spending on 12 August, so year-to-date search-term waste is mostly spend from campaigns that no longer exist. This section uses the last 28 days (3 to 30 September 2026) across the four Search campaigns still running.

Amber, and sharper than the annual average suggests

In the last 28 days 41.0% of visible search spend, $95,123.60, went to terms that returned no conversion at all. It is now concentrated enough to act on. The top 250 terms now hold 44.9% of the waste, against 20.3% across the year to date.

Search-term waste, last 28 daysValue
Visible search terms4,016
Visible search spend$231,840.80
Visible share of all Search spend58.4%
Terms returning no conversion3,144
What they cost$95,123.60
As a share of visible search spend41.0%
Mean cost per wasted term$30.26
Run rate, monthly / annual$103,412.94 / $1,240,004.07

3,144 terms took $95,124 and returned nothing, 3 to 30 September 2026

0%25%50%75%100%Cumulative % of wasted spend0100020003144Zero-conversion search terms, ranked by costTop 250 terms hold 44.9% of the waste

That gap is the difference between a problem spread too thin to chase and one a single negative-cut session can move.

Lin–Rodnitzky Ratio

The ratio compares what you pay for conversions across all queries with what you pay across converting queries only.The wider the gap, the more spend is going to queries that never produce anything. It is a loose indicator, best read as a band.

Rolling 28-day Lin–Rodnitzky Ratio, stepped weekly

ConservativeWell managedToo aggressiveMismanaged1.01.52.02.53.0FebMarAprMayJunJulAugSep1.70

Rolling 28-day windows stepped weekly, across 1 January to 30 September 2026. The ratio has held between 1.5 and 2.1 all year, squarely “well managed”, with no drift. Computed on visible terms only; re-derive after §2.

On the last 28 days, all-query cost per lead of $54.27 divided by converting-query cost per lead of $32.00 gives 1.70. Across the full period the same calculation gives 1.46. The account is disciplined; the negative list is just behind the volume broad match brings in.

N-gram findings

An n-gram analysis splits each search term into its words and phrases, then totals spend and conversions by phrase, not by query. “Lawn care near me” and “weed control near me” stop being two rows and become two appearances of “near me”.

Waste here is not concentrated in a few expensive queries: it is spread across 3,144 zero-conversion terms averaging $30.26 each. Individually invisible, grouped they cost $95,124. It also maps straight onto the fix: negative keywords can match on phrases, so a problem n-gram is the negative phrase-match keyword.

One pattern that never shows in a top-terms review

Search terms report: 218 separate rows, mostly small

  • lawn care near me$6,736
  • lawn service near me$4,888
  • lawn treatment near me$4,024
  • weed control near me$3,096
  • lawn mowing service near me$1,712
  • aeration near me$1,408
  • 212 more terms, each under $1,200$20,410

N-gram view: one row, one decision

“near me”.

$42,274.40 · 1456 conversions

$29.03 CPL. Protect it.

No single query is big enough to notice. The pattern only exists in aggregate.

The “near me” family, last 28 days. Group by phrase and the clearest decision on the page appears.

Negative-keyword themes

Theme: make these negativesTermsCost to date% of wasteLast 4 weeksAnnual run rate
Jobs / careers244$16,834.802.9%$579.20$7,550.29
Wrong service (tree removal, snow, pools)376$20,649.603.6%$1,909.20$24,887.79
DIY / how-to252$5,152.800.9%$1,582.40$20,627.71
Products / retail (seed, fertilizer bags)592$17,661.203.1%$2,170.80$28,297.93
Price shoppers488$11,914.402.1%$951.20$12,399.57
Competitor names164$11,014.401.9%$1,306.00$17,024.64
Total, six themes2,116$83,227.2014.5%$8,498.80$110,787.93

Cost to date covers 1 January to 30 September 2026. The last-four-weeks column covers 3 to 30 September and is annualised at that rate. Retail products and DIY are accelerating: both already cost more per week than they averaged across the year. Jobs / careers has collapsed, because the campaign feeding it stopped in August.

Protect from negatives: brand (“fernbrook lawn” and misspellings) and the core “near me” / “lawn care raleigh” / “weed control” family. These are fragments of converting head terms, not waste. They appear zero-conversion in places only because the offline call layer (§2) is not crediting the calls they drive.

Match type mix

Match type% spend, YTDCPA, YTD% spend, last 4 weeksCPA, last 4 weeks
Broad61.8%$50.7059.2%$55.95
Phrase36.1%$52.9337.6%$58.15
Exact2.1%$71.603.2%$74.80

YTD is 1 January to 30 September 2026. The trailing column is 3 to 30 September. The mix is stable, but every match type has got more expensive in the last four weeks. Broad is already the workhorse and tracks phrase closely, so there is no consolidation case today.

A later step: consolidate to broad match. It has two preconditions. Fix conversion tracking first, because broad amplifies whatever the conversion signal tells it. And plan for budget headroom, not just budget, because broad reaches more queries and needs room to spend.

Ad level & assets.

Amber. The bigger issue is not the ads themselves but the assets around them: of the seven asset types present in the account, only four served at all in the window.

Creative figures cover 1 January to 30 September 2026 against $3,095,313.60 of responsive-search spend. Asset figures cover 19 August to 30 September 2026.

Creative

  • Same copy, many groups. 21 headline-and-description sets run in more than one ad group: 64 ad-group instances carrying $771,446.80, 24.9% of responsive-search spend. 9 of those sets point at two different landing pages, so the same words sell two destinations. Smart Bidding learns each ad group separately, so duplicate copy splits the evidence it has to work from.
  • Weak offers. 71 of 148 ads ($947,218.80 of spend) carry no price or offer language, and 88 of 148 have no numeral in any headline. Headlines lean on credentials (locally owned, insured, satisfaction guaranteed) more than on a reason to act now.
  • Geo mismatch. 29 ads in Charlotte ad groups ($174,996.80) name only Raleigh in their copy. Each ad should name the market it serves.
  • Ad strength. No ad in the account is rated Excellent. Ad Strength is not a performance metric, and a Good ad can beat an Excellent one. But it feeds Ad Rank, and a fuller asset set gives Google more combinations to serve. It is cheap to improve.

Assets: presence is not coverage

The account holds a large asset library that is almost entirely dormant. No sitelink or callout recorded an impression in the window, while call, business-name and business-logo assets served heavily.

Asset typeIn accountServedImpressionsRead
Sitelink28400Large library, none serving.
Callout24100Same.
Image26600198 are disapproved.
Structured snippet6129,936Only the generic account-level set.
Call8812866,0803 different numbers served.
Business name116535,240Consistent.
Business logo521,107,360Serving.
Promotion, price, lead form, location000Not built.

Impressions are per asset: the count of ad impressions each one appeared alongside. They describe reach, not additive volume, and must not be summed across types. Source: asset report export.

  • First thing to check. Sitelinks and callouts exist in quantity and are not showing. Confirm in the interface before rebuilding. If they are attached only to campaigns that have stopped, the fix is attaching them to the live ones, which is quick. If they are attached correctly and still not serving, ad rank is the constraint, and that points back to §3.
  • Disapprovals. 199 assets cannot serve at all: 198 images and 1 sitelink, all disapproved, plus 4 more paused and disapproved. One clean-up pass.
  • Phone numbers. 16 phone numbers exist across the call assets and 3 of them actually served. Consolidating to one tracked number tightens call attribution and gives callers a consistent number.

Included in this package

A build sheet accompanies a live audit, with copy drafted for every missing asset type, character-counted against Google’s limits and sourced line by line to the landing page.

AssetDraftedNote
Sitelinks10Anchor links. Each points at a different section of the same landing page.
Callouts14New, drawn from page copy.
Structured snippets5 setsTo split-test the current account-level set. Services and Neighborhoods.
Price assets3One ready. Two need a “from” price from the client.
Promotion1Needs the discount amount confirmed.
  • Why anchor links. One landing page can carry a full sitelink set. Anchor links point at the pricing block, the service-area list, the FAQ and so on, so each click lands on the section that matches it. The anchor ids need confirming against the page source first.
  • What the client owes. 3 fields are deliberately blank: two “from” prices and the promotion amount. Google serves no price asset until 3 are live, so those two prices are the entry fee for showing any pricing at all.

Audiences & settings.

Nothing adverse shows in the account data. Three items in this layer are worth acting on.

SettingCurrentStandardVerdict
Search partnersDisabledOff, to reduce low-quality trafficSound
Display network on SearchDisabledOffSound
Location optionPresencePresenceSound
Enhanced Conversions for LeadsOn, import staleEssential, with a live importAction
Location targetsOne resolves outside the USAll resolve in marketAction
Audiences attachedNone found in SearchBuild, even if observation-onlyAction
Value-based biddingNot configuredBest practiceFuture
Customer list uploadsNot yet pulledFresh list of 1,000 or more, refreshed quarterlyFuture

Source: account settings export.

  • Enhanced Conversions. Enhanced Conversions for Leads is on (Google tag, verified), but the lead import that feeds it is stale, so it is enabled without doing its job. Fix the import (§2) and it starts working with no further change.
  • Bid targets. Targets are set on the three core campaigns, and two of the three are running above theirs. Core · Raleigh Lawn Treatment sits at $132.25, more than twice the account cost per lead, and is worth challenging directly. Once §2 is clean and a campaign has about 30 conversions a month, reset each target from the clean converting-query cost per lead rather than leaving it where it was set.
  • Future. Customer Match lists, value-based bidding and audience layering are all future items, listed in §8 Phase 5. Not now.

Prioritised roadmap.

Every row has an owner. Client rows are decisions, not tasks. Dependencies use row numbers.

#ActionOwnerDepends on
Phase 1: Fix the signal
1Reconnect the offline / CRM conversion import (New Caller, CRM Sale Import)Agency + Client · depends on —Agency + Client—
2Refresh the Enhanced Conversions feed for Quote Request FormAgency · depends on 1Agency1
3Set Quote Request Form to count one, not every; remove the $250 placeholder valueAgency · depends on —Agency—
4Prune the primary basket: demote Live Chat Lead and Click-to-Call Taps, archive the two Universal Analytics actionsAgency · depends on —Agency—
5Confirm which conversion actions define a lead and a signed programClient · depends on —Client—
Phase 2: Stop known waste (parallel to Phase 1)
6Apply negative-keyword themes: jobs, wrong service, DIY, retail products, price shoppers, competitor namesAgency · depends on 7Agency7
7Confirm whether tree service is a wanted service lineClient · depends on —Client—
8Remove the location target that resolves outside the United StatesAgency · depends on —Agency—
9Decide which wound-down campaigns, if any, are rebuiltClient · depends on 5Client5
10Mosquito and tick, and Spanish-language queries: build out or excludeClient · depends on —Client—
Phase 3: Retune on clean data
11Re-derive the LR Ratio and blended CPL; reset expectations on the true numbersAgency · depends on 1, 2, 3Agency1, 2, 3
12Set tCPA targets per campaign once there are about 30 conversions a month and a clean signalAgency · depends on 11Agency11
13Shift spend share toward the Charlotte metro as the core campaigns prove out; geo-split CharlotteAgency · depends on 9, 12Agency9, 12
Phase 4: Creative and structure
14Lift ad strength: a full asset set per ad group. No ad in the account is rated ExcellentAgency · depends on —Agency—
15De-duplicate RSAs; add offer and numeral headlines; fix the 29 Charlotte ads that name only Raleigh; one tracked call number; rebuild sitelinksAgency · depends on 14Agency14
Phase 5: Future
16Customer Match, value-based bidding, audience layering, broad-match consolidationAgency · depends on 1, 13Agency1, 13

Business impact to year-end.

Against today’s run rate ($431,610.93 a month at $57.17 a lead), the roadmap is worth an estimated 2,541 extra leads by 31 December, an 11.1% lift. Most of it needs no extra budget.

Example figures for the fictional client.

Base case

+2,541 leadscost per lead $57.17 → $52.32 · December exits at +13.7%

2,070 of those leads come from recovering wasted spend at today’s budget. 471 come from buying Charlotte impression share the account already qualifies for, which needs $22,178 of additional spend across the three months. Baseline: 22,816 leads over the remaining 92 days.

Extra leads by year-end, against the current run rate

01,0002,0003,0004,0001 Oct1 Nov1 Dec31 Dec+3,783+975+2,541
01,0002,0003,0004,0001 Oct1 Nov1 Dec31 Dec+3,783+975+2,541

Cumulative extra leads, 1 Oct to 31 Dec 2026. Solid line: base case. Shaded band: conservative to upside.

The three cases

CaseWhat has to happenNo extra budgetWith budgetTotalCost / lead
ConservativeOnly the six curated negative themes; half the Charlotte headroom taken+740+235+975$55.30
BaseA quarter of zero-conversion spend recovered; Charlotte taken to 50.0% impression share+2070+471+2541$52.32
UpsideTwo-fifths of zero-conversion spend recovered; Charlotte to 50.0% share+3312+471+3783$49.88

Where the extra leads come from, base case

02,5005,0007,50010,000Leads in month8,161Oct8,457Nov8,739Dec
02,5005,0007,50010,000Leads in month8,161Oct8,457Nov8,739Dec
Current run rateNegative keywords (same spend)Charlotte impression share (needs budget)

Leads per month. October is a part month for both levers because each one takes weeks to settle.

What drives it, and what the number is not

  • Negative keywords, same budget. $103,412.94 a month currently lands on search terms that return nothing, measured on the same four weeks as the run rate. The base case recovers a quarter and redeploys it at the converting-query cost per lead of $32.00. It assumes the negative lists take two weeks to bed in.
  • Charlotte share, needs budget. Charlotte keywords already converting at or under target hold about a quarter of their available impressions. Taking them to half is worth 224 leads a month for $10,548.31 a month more spend (§10). It assumes four weeks for Smart Bidding to adjust to higher caps.
  • Not double-counted. The nine smaller campaigns that dragged the year-to-date average were wound down by mid-August, so that reallocation has already happened. It is not counted here, and the current run rate already reflects it.
  • This counts leads. It counts quote requests and qualifying phone calls, not signed programs or revenue. Early growth partly reflects leads already happening but unrecorded, since the offline call import is down (§2); expect the reported figure to rise faster than real demand at first.

Where to lean in.

Restricted to the 4 campaigns still spending. An earlier cut included campaigns that stopped in August and overstated the opportunity by more than half.

Charlotte holds only 24.6% of the impressions it competes for. It is not the cheap market: its keywords convert at $53.87 against $47.80 for the rest of the live account. But a defined set of them already beats the account average and has room to grow.

Charlotte metro: 24.6% impression share, $53.87 a lead

214 Charlotte keywords took $149,122.40, 5.8% of spend in the four live campaigns, for 2,768 leads. 41.2% of the impressions they miss are lost to ad rank rather than budget, so bids and Quality Score carry as much of the fix as money does.

Charlotte keywords that already convert and still have room

Extra leads, audit period

lawn care charlotte$50.50 CPL · 19% impression share
+496
lawn treatment service$48.00 CPL · 22% impression share
+272
lawn service near me (south)$49.00 CPL · 23% impression share
+256
weed control charlotte$36.00 CPL · 22% impression share
+208
lawn fertilization near me$35.00 CPL · 23% impression share
+208
lawn care near me (east)$34.00 CPL · 18% impression share
+176
grub control service$19.00 CPL · 14% impression share
+160
lawn company$33.00 CPL · 22% impression share
+144
aeration and overseeding$31.50 CPL · 26% impression share
+64
lawn care matthews$42.00 CPL · 27% impression share
+32

Each already converts at or below the account cost per lead of $57.17. Extra leads over the audit period at 50% impression share. Taking them from today’s share to 50.0% is worth about 224 extra leads a month for $10,548.31 a month of additional spend.

Charlotte keywords: bubble size is spend

$0$10$20$30$40$50$60$700%10%20%30%40%50%60%Impression share heldCost per leadaccount $57.1750% shareBuy zonelawn care charlottelawn fertilization near megrub control service
$0$20$40$600%10%20%30%40%50%60%Impression share heldCost per leadaccount $57.1750% shareBuy zonelawn care charlottelawn fertilization near megrub control service

The shaded area is the buy zone: cheap leads, little of the auction held.

What to do

  • Raise the caps. The core campaigns read Limited by budget on a combined $5,600.00 a day. Lifting the Charlotte caps is the first move, because those campaigns hold the converting keywords at a quarter of the available impressions.
  • Rank matters more than budget here. 41.2% of missed Charlotte impressions go to ad rank, not budget. The generic “near me” terms carrying this spend sit at Quality Score 3 to 4 (§3), and dormant sitelinks and callouts (§6) add to it.
  • Be clear-eyed about the trade. Charlotte costs about 13% more per lead than the rest of the live account: the price of growth in a more competitive market, not a fault. Make it a deliberate decision, not a surprise.
  • The account has room beyond Charlotte. Account-wide, 138 keywords in live campaigns already deliver 35,680 leads at $44.05 while holding under half their available impressions. Charlotte is the stated priority.

Headroom is modelled at 50.0% impression share, not full coverage. Incremental cost per lead rises 15% as buying deeper costs more. Both are modelling choices, not promises.

Begin quietly.

veylo reviews paid media for enterprise teams that already pay a large agency. An audit starts with one or two channels. Findings come in writing and in person.

Open the intake form

hello@veylo.cc · veylo.cc