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
| Area | Rating | One-line reason |
|---|---|---|
| §2 Conversion tracking | Amber | 6 primaries, 3 recording nothing. Quote form over-counting, CRM import down. |
| §3 Campaign structure | Green | Nine weak campaigns already wound down. Spend now sits in the main campaign and the new build. |
| §3 Budget | Amber | All 3 core campaigns are limited by budget. |
| §3 Quality Score | Amber | 35.8% of rated spend sits in Quality Score 4 or below. |
| §5 Search terms and waste | Amber | $103,412.94 a month on terms that never convert (last 28 days). |
| §6 Ads and creative | Amber | No Excellent ad strength anywhere. $771,446.80 on duplicated RSAs. |
| §7 Settings | Green | Enhanced 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
| # | Finding | Impact | § |
|---|---|---|---|
| 1 | Charlotte holds only 24.6% of its impressions | +224 leads a month available | 10 |
| 2 | Zero-conversion search-term spend, loose negative coverage | $103,412.94 a month | 5 |
| 3 | Curated hard-negative themes (jobs, wrong service, DIY, retail products, price, competitor). A subset of finding 2. | $110,787.93 a year | 5 |
| 4 | Duplicated RSA creative splits Smart Bidding’s learning | $771,446.80 on 64 ads | 6 |
| 5 | Conversion-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 action | Status | Volume | Assessment |
|---|---|---|---|
| Quote Request Form | Primary | 26,640 | Keep, with fixes. Count one, not every. Remove the $250 placeholder value. Enhanced Conversions feed is stale. |
| Ad Calls (90s+) | Primary | 25,984 | Keep. The primary call signal, with a 90-second threshold. |
| New Caller – Call Tracking | Primary | 9,360 | Keep. Goes blank for three weeks since July. |
| Live Chat Lead | Primary | 0 | Tag never fires. Demote to secondary. |
| Click-to-Call Taps | Primary | 0 | Not recording and not a lead. Demote. |
| CRM Sale Import | Primary | 0 | Signed-program outcomes. The import is not flowing. |
| Universal Analytics goals (two) | Secondary | 0 | Universal 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 pair | Pearson r | Co-occurrence | Verdict |
|---|---|---|---|
| Ad Calls (90s+) × New Caller | 0.41 | 59.1% | Separate action: different capture methods. |
| Quote Request Form × New Caller | 0.44 | 63.2% | Separate action: form versus call. |
| Quote Request Form × Ad Calls (90s+) | 0.39 | 64.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.
| Metric | Value | Read |
|---|---|---|
| Total calls | 49,504 | Over the period. |
| Median duration | 96 sec | Healthy for quote-led demand. |
| Under 30 sec | 16.8% | Junk or misdial proxy. Normal range. |
| Under 90 sec | 38.4% | Below the call threshold. Never becomes a conversion. |
| 120 sec or more | 41.7% | The realistic qualified ceiling. |
| Local area codes | 88.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
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.
| Group | Spend | Conv.* | CPL* | Note |
|---|---|---|---|---|
| Main campaign | $2,315,322.40 | 49,136 | $47.12 | One campaign, 22 themed ad groups. Best CPL. Thin ad strength (§6). |
| Nine wound-down campaigns | $655,251.20 | 8,656 | $75.70 | Greensboro test, Fall Promo, Mosquito Season, Snow Removal, Careers, Charlotte $40-off and others. The drag. |
| Core agency campaigns | $250,544.40 | 4,192 | $59.77 | Scoped 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:
| Group | Spend | Conv.* | CPL* | % of spend | Against year to date |
|---|---|---|---|---|---|
| Main campaign | $249,636.80 | 4,416 | $56.53 | 62.9% | CPL up from $47.12 |
| Core agency campaigns | $147,377.20 | 2,528 | $58.30 | 37.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
| Campaign | Daily budget | Spend, 4 weeks | Conv.* | CPL* | Target CPA | Status |
|---|---|---|---|---|---|---|
| Main campaign | $10,400.00 | $249,636.80 | 4,416 | $56.53 | None | Within budget |
| Core · Raleigh Lawn Treatment | $2,080.00 | $55,442.00 | 992 | $55.89 | $132.25 | Limited by budget |
| Core · Charlotte Lawn Care | $2,240.00 | $60,123.20 | 928 | $64.79 | $47.50 | Limited by budget |
| Core · Durham Aeration | $1,280.00 | $31,812.00 | 608 | $52.32 | $44.10 | Limited 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.
| Campaign | Rated cost (28d) | Weighted QS | Cost in QS 4 or below | % of rated cost | Priority |
|---|---|---|---|---|---|
| Main · Lawn Care Search | $158,884.00 | 5.3 | $44,897.20 | 28% | Medium |
| Core · Raleigh Lawn Treatment | $37,849.60 | 4.9 | $11,364.80 | 30% | Medium |
| Core · Charlotte Lawn Care | $47,842.80 | 3.9 | $29,921.60 | 63% | High |
| Core · Durham Aeration | $22,722.00 | 4.2 | $9,564.00 | 42% | 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
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-cluster | Distinct terms | Impressions | Clicks | Cost | Conv. | CPL | CTR |
|---|---|---|---|---|---|---|---|
| Mosquito and tick control | 568 | 26,480 | 2,128 | $33,748.80 | 656.0 | $51.45 | 8.0% |
| Aeration and overseeding | 472 | 16,368 | 1,184 | $18,651.20 | 336.0 | $55.51 | 7.2% |
| Spanish-language lawn care | 304 | 9,024 | 728 | $9,638.00 | 192.0 | $50.20 | 8.1% |
| Tree removal / stump grinding | 244 | 3,296 | 168 | $1,909.20 | 0.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 days | Value |
|---|---|
| Visible search terms | 4,016 |
| Visible search spend | $231,840.80 |
| Visible share of all Search spend | 58.4% |
| Terms returning no conversion | 3,144 |
| What they cost | $95,123.60 |
| As a share of visible search spend | 41.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
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
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 negatives | Terms | Cost to date | % of waste | Last 4 weeks | Annual run rate |
|---|---|---|---|---|---|
| Jobs / careers | 244 | $16,834.80 | 2.9% | $579.20 | $7,550.29 |
| Wrong service (tree removal, snow, pools) | 376 | $20,649.60 | 3.6% | $1,909.20 | $24,887.79 |
| DIY / how-to | 252 | $5,152.80 | 0.9% | $1,582.40 | $20,627.71 |
| Products / retail (seed, fertilizer bags) | 592 | $17,661.20 | 3.1% | $2,170.80 | $28,297.93 |
| Price shoppers | 488 | $11,914.40 | 2.1% | $951.20 | $12,399.57 |
| Competitor names | 164 | $11,014.40 | 1.9% | $1,306.00 | $17,024.64 |
| Total, six themes | 2,116 | $83,227.20 | 14.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, YTD | CPA, YTD | % spend, last 4 weeks | CPA, last 4 weeks |
|---|---|---|---|---|
| Broad | 61.8% | $50.70 | 59.2% | $55.95 |
| Phrase | 36.1% | $52.93 | 37.6% | $58.15 |
| Exact | 2.1% | $71.60 | 3.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 type | In account | Served | Impressions | Read |
|---|---|---|---|---|
| Sitelink | 284 | 0 | 0 | Large library, none serving. |
| Callout | 241 | 0 | 0 | Same. |
| Image | 266 | 0 | 0 | 198 are disapproved. |
| Structured snippet | 6 | 1 | 29,936 | Only the generic account-level set. |
| Call | 88 | 12 | 866,080 | 3 different numbers served. |
| Business name | 11 | 6 | 535,240 | Consistent. |
| Business logo | 5 | 2 | 1,107,360 | Serving. |
| Promotion, price, lead form, location | 0 | 0 | 0 | Not 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.
| Asset | Drafted | Note |
|---|---|---|
| Sitelinks | 10 | Anchor links. Each points at a different section of the same landing page. |
| Callouts | 14 | New, drawn from page copy. |
| Structured snippets | 5 sets | To split-test the current account-level set. Services and Neighborhoods. |
| Price assets | 3 | One ready. Two need a “from” price from the client. |
| Promotion | 1 | Needs 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.
| Setting | Current | Standard | Verdict |
|---|---|---|---|
| Search partners | Disabled | Off, to reduce low-quality traffic | Sound |
| Display network on Search | Disabled | Off | Sound |
| Location option | Presence | Presence | Sound |
| Enhanced Conversions for Leads | On, import stale | Essential, with a live import | Action |
| Location targets | One resolves outside the US | All resolve in market | Action |
| Audiences attached | None found in Search | Build, even if observation-only | Action |
| Value-based bidding | Not configured | Best practice | Future |
| Customer list uploads | Not yet pulled | Fresh list of 1,000 or more, refreshed quarterly | Future |
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.
| # | Action | Owner | Depends on |
|---|---|---|---|
| Phase 1: Fix the signal | |||
| 1 | Reconnect the offline / CRM conversion import (New Caller, CRM Sale Import)Agency + Client · depends on — | Agency + Client | — |
| 2 | Refresh the Enhanced Conversions feed for Quote Request FormAgency · depends on 1 | Agency | 1 |
| 3 | Set Quote Request Form to count one, not every; remove the $250 placeholder valueAgency · depends on — | Agency | — |
| 4 | Prune the primary basket: demote Live Chat Lead and Click-to-Call Taps, archive the two Universal Analytics actionsAgency · depends on — | Agency | — |
| 5 | Confirm which conversion actions define a lead and a signed programClient · depends on — | Client | — |
| Phase 2: Stop known waste (parallel to Phase 1) | |||
| 6 | Apply negative-keyword themes: jobs, wrong service, DIY, retail products, price shoppers, competitor namesAgency · depends on 7 | Agency | 7 |
| 7 | Confirm whether tree service is a wanted service lineClient · depends on — | Client | — |
| 8 | Remove the location target that resolves outside the United StatesAgency · depends on — | Agency | — |
| 9 | Decide which wound-down campaigns, if any, are rebuiltClient · depends on 5 | Client | 5 |
| 10 | Mosquito and tick, and Spanish-language queries: build out or excludeClient · depends on — | Client | — |
| Phase 3: Retune on clean data | |||
| 11 | Re-derive the LR Ratio and blended CPL; reset expectations on the true numbersAgency · depends on 1, 2, 3 | Agency | 1, 2, 3 |
| 12 | Set tCPA targets per campaign once there are about 30 conversions a month and a clean signalAgency · depends on 11 | Agency | 11 |
| 13 | Shift spend share toward the Charlotte metro as the core campaigns prove out; geo-split CharlotteAgency · depends on 9, 12 | Agency | 9, 12 |
| Phase 4: Creative and structure | |||
| 14 | Lift ad strength: a full asset set per ad group. No ad in the account is rated ExcellentAgency · depends on — | Agency | — |
| 15 | De-duplicate RSAs; add offer and numeral headlines; fix the 29 Charlotte ads that name only Raleigh; one tracked call number; rebuild sitelinksAgency · depends on 14 | Agency | 14 |
| Phase 5: Future | |||
| 16 | Customer Match, value-based bidding, audience layering, broad-match consolidationAgency · depends on 1, 13 | Agency | 1, 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
Cumulative extra leads, 1 Oct to 31 Dec 2026. Solid line: base case. Shaded band: conservative to upside.
The three cases
| Case | What has to happen | No extra budget | With budget | Total | Cost / lead |
|---|---|---|---|---|---|
| Conservative | Only the six curated negative themes; half the Charlotte headroom taken | +740 | +235 | +975 | $55.30 |
| Base | A quarter of zero-conversion spend recovered; Charlotte taken to 50.0% impression share | +2070 | +471 | +2541 | $52.32 |
| Upside | Two-fifths of zero-conversion spend recovered; Charlotte to 50.0% share | +3312 | +471 | +3783 | $49.88 |
Where the extra leads come from, base case
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
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
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 formhello@veylo.cc · veylo.cc