Where we are
Google Search Console, three months to 29 July 2026. Our own data, not a tool's estimate.
Where each commercial term sits. Further left is better. The shaded band is page one, the aqua line is the top 5, which is where we are trying to get.
| Term | Position | Impressions |
|---|---|---|
| ai seo agency | 9.7 | 13,224 |
| seo company | 10.3 | 28,333 |
| seo agency | 10.7 | 48,699 |
| seo services | 11.1 | 30,692 |
| ecommerce seo agency | 11.9 | 10,621 |
| ai seo | 16.8 | 41,546 |
| enterprise seo agency | 17.0 | 3,965 |
| seo consultant | 18.3 | 15,510 |
| Site totals, same period | Value |
|---|---|
| Impressions | 6,562,595 |
| Clicks | 9,864 |
| Click-through rate | 0.15% |
| Average position | 15.97 |
| Distinct queries | 24,761 |
| Sessions (Analytics, to 3 Aug) | 49,272 |
| Conversions | 1,635 |
| Conversion rate | 3.32% |
The one idea that explains everything else
Most people assume an SEO problem is a visibility problem. Nobody can find us, so we need more pages and more content.
That is not our problem. We appear in front of people 6.5 million times a quarter. We are on the last line of page one for the terms that pay.
Our problem is two positions and a click.
Position 11 gets almost no clicks. Position 8 gets some. Position 3 gets a lot. The distance between them is small. The difference in outcome is enormous.
So the plan is ordered around that. Convert what we already have before we build anything new. Every task either moves one of those six terms up a few places, or gets more people to click when we appear.
The number we do not chase: impressions
We have 6.5 million of them and they are not the constraint. If a change makes impressions go up and clicks stay flat, it did not work. This is the single most common way an SEO report tells a comforting lie.
How the work is ordered, and why
Five stages. Each one earns the right to the next.
| Stage | What it is | Why it comes here |
|---|---|---|
| 1. Measure | Find out what is working and what is dead weight | You cannot improve what you have not measured, and we have never measured our own quality ratio |
| 2. Convert | Title tags and click-through on pages that already rank | Fastest visible result on the whole plan. Nothing needs to be built |
| 3. Fix | Pages that are invisible or technically broken | No point sending authority to a page Google will not show |
| 4. Strengthen | Internal linking and the services hub | Multiplies the effect of everything already on the site |
| 5. Build | New pages, only where there is proven demand | Last, deliberately. Building first is the default mistake |
Most agencies start at stage 5 because building is visible and satisfying. It is also the slowest way to move a position.
The rules we work to
Not preferences. Each one exists because breaking it costs something real.
Every number states where it came from and when
"Position 10.7 (Search Console, 29 July 2026)", never "about ten".
Never mix two tools' numbers in one comparison
Different tools use different scales. Pick one per analysis and say which.
"Not measured" is not the same as zero
If we have never checked, write that. Do not estimate and do not round to nothing.
Check before asserting
Pull the live page, read the status code, look at the actual result. Tools are wrong often enough to matter. We have had a tool report position 92 when the truth was top 10.
Page count is not progress
Report movement in position and conversion, never pages shipped.
Copy changes go through the content workflow
Metadata, alt text, internal links and structured data are on-page fixes. Rewriting the body of a page is not.
One change at a time on a page we are measuring
Change the title and the copy together and you will never know which one did it.
Who does what
Lawrence finds the work. Lily does the work on the page. Both of us check it.
| Lawrence | Lily | |
|---|---|---|
| Finds the problem | Yes | . |
| Decides the fix | Yes, with her | . |
| Makes the change on the page | . | Yes |
| Checks it went live correctly | . | Yes |
| Measures whether it worked | Together | Together |
Every task is handed over by Loom
1. Why this matters. What the fix does and what happens if nobody does it. No jargon without explaining it once.
2. What to do specifically. The actual pages, the actual change, the actual place in the CMS.
3. What done looks like. Including how she checks her own work, so she can be sure before saying it is finished.
Each task also names the thing she will be able to do afterwards. The website improving is the by-product.
How changes get made
All AU on-page work happens in the HubSpot page editor. Never the Design Manager, because that edits the template and affects every page using it. Template and code changes go through the dev repo, and Lawrence handles those.
Zero-click recovery 12 months APAC Search Awards 2028
Opened 19 August 2026, runs to 19 August 2027. Australia only. Full plan in zero-click-programme/PROGRAMME.md.
The thesis
Zero-click search is almost always described as something that happens to you. We are going to treat it as something you can win, on our own site, and measure whether that is true.
The claim we intend to make in 2028: we took a defined pool of searches where we ranked and earned nothing, recovered a measurable share of the clicks, and can prove which mechanism did it.
The baseline, measured 19 August 20260.023% CTR
| Measure | Value |
|---|---|
| Queries in the pool | 1,050 |
| Impressions they generate | 333,496 |
| Clicks they produce | 78 |
| Click-through rate | 0.023% |
| Queries producing literally zero clicks | 981, carrying 283,367 impressions |
| Already top 3 and still earning nothing | 228, carrying 77,752 impressions |
That last row is the programme. We are not trying to rank. We already rank. We are trying to get paid for it.
| Cluster | Queries | Impressions | Clicks | In top 3 |
|---|---|---|---|---|
| Generic service | 550 | 143,237 | 28 | 59 |
| Location | 288 | 129,751 | 32 | 94 |
| Vertical | 143 | 46,310 | 13 | 47 |
| Pricing and cost | 69 | 14,198 | 5 | 28 |
Why the clicks are not arrivingVerified on live SERPs
The part most zero-click commentary skips. We checked the actual search results rather than assuming.
sydney seo services: 1,285 impressions, position 1.64, zero clicks
StudioHawk is organic position 1. A genuine top blue link. But a three-slot local pack sits above it: SEO Sydney, Top SEO Sydney, SEO North Sydney. We are not in that pack. Plus a People Also Ask box below.
aged care seo: 1,563 impressions, position 1.88, zero clicks
StudioHawk is organic position 2, with an AI Overview sitting above it and a People Also Ask box below.
We are winning positions that no longer receive the click. The click is being taken above us, by features we do not occupy. That reframes the problem: this is not a title tag exercise. Three different things are taking the click and each needs a different mechanism.
The four test bucketsOne mechanism per cluster
The design decision
Four buckets in parallel, whole-cluster treatment at 50+ pages, across all four clusters. Those are compatible, but only if each cluster receives exactly one mechanism. Run all four mechanisms across all four clusters and every page carries several changes at once, so we would know something moved and never know what.
So: one bucket per cluster. All four run in parallel, every cluster is in play, treatment is whole-cluster, and attribution survives.
Scope of change: title tags, meta descriptions and structured data. No content workflow gate, no dev. All of it ships from the HubSpot page editor.
| Bucket | Cluster | Mechanism | Pool | Why this pairing |
|---|---|---|---|---|
| A | Vertical | FAQ schema plus question-matched meta | 143 q 46,310 impr | Verified AI Overview above us on aged care seo. These queries are question-shaped |
| B | Location | Business Profile, off-page | 288 q 129,751 impr | Verified local pack above our organic position 1. Not a page change, so it cannot contaminate the others |
| C | Pricing | Title and meta only | 69 q 14,198 impr | The cleanest blue-link failure. No feature taking the click. Smallest and fastest to read |
| D | Generic service | Service, breadcrumb and Organization schema | 550 q 143,237 impr | Largest and weakest. Enlarge the listing rather than outrank the field |
Bucket B running off-page is genuine luck. It means the biggest cluster can be worked at full speed without touching a single page the other buckets are measuring.
Three things stated up front
- Bucket B has no clean holdout. You cannot complete a Sydney profile and withhold it from some Sydney queries. Its control is the untreated cities where we have no office: Gold Coast, Adelaide, Brisbane, Perth, Canberra, Hobart, Sunshine Coast. The entry should state that limitation rather than pretend a clean holdout exists.
- Bucket D is most likely to produce nothing. Largest, weakest, most contested. It is in because it is cheap at scale, and a null result across 440 pages is a finding worth publishing.
- Bucket C could win hollow clicks. Pricing searchers may be tyre-kickers. Watch conversions alongside clicks on that bucket specifically.
The rules the design depends on
One mechanism per cluster
The whole design rests on it, and it is the rule most likely to be broken under pressure. If a page needs a change from another bucket, it leaves the test.
Holdout frozen before any treatment
Roughly 20% per cluster, matched on impression band and starting position. Once frozen, untouched for twelve months whatever the temptation.
Stagger the ship by one week per bucket
Still parallel. A week between launches means that if something breaks at 50-plus pages, we know which bucket did it. Three weeks across the programme, cheap insurance.
Read at 28 and 90 days, never 14
Schema changes surface more slowly than title changes. And report absolute clicks alongside percentages, because the base is 78.
| Week | Action |
|---|---|
| 0 | Classify cause-of-zero-click for the top 100 queries. Freeze the holdout. Record before states |
| 1 | Bucket C ships. Smallest and cleanest. Proves the measurement pipeline works |
| 2 | Bucket A ships. FAQ schema on the vertical cluster |
| 3 | Bucket D ships. Schema at scale |
| 0 onward | Bucket B runs throughout. Off-page, so it starts immediately with the profile inventory |
| 4 | First read on bucket C |
| 12 | 90-day read on all four |
Full specification, including what exactly gets added per bucket: zero-click-programme/TEST-BUCKETS.md
The four workstreams
W1. The local pack
288 location queries, 129,751 impressions, 94 already organic top 3. Business Profile completeness, categories, reviews, posting, name-address-phone consistency, grid tracking. Hard prerequisite: we have never measured a single profile. The biggest lever in the programme.
W2. AI Overview citation
143 vertical queries, 46,310 impressions. Being the source the overview cites rather than the link beneath it. The least proven of the four. A genuine experiment with a real chance of no result, and it will be reported that way.
W3. People Also Ask capture
Question-shaped headings matching the PAA phrasing, direct answers in the first two sentences, FAQ schema.
W4. The blue link itself
Where no feature is taking the click, the failure is our own presentation. Pricing is the clearest case: 69 queries, 28 in the top 3, 14,198 impressions, 5 clicks. This is the L1 and L2 work pointed at this pool.
Cause classification: the answer93.1% is two causes
Run 19 August against live Australian results. 100 queries, one SERP pull each, carrying 117,044 impressions and 32 clicks, which is 35.1% of the whole pool.
| Cause | Queries | Impressions | Share | Already organic top 3 |
|---|---|---|---|---|
| Local pack | 56 | 71,134 | 60.8% | 45 |
| AI Overview, not cited | 36 | 37,810 | 32.3% | 27 |
| AI Overview, we are cited | 5 | 4,593 | 3.9% | 2 |
| Not in the top 20 | 3 | 3,507 | 3.0% | 0 |
| Blue link, our own presentation | 0 | 0 | 0% | . |
The two numbers that matter
We appear in ZERO of the 56 local packs. Not one. Those queries carry 71,134 impressions, and on 45 of them we already hold organic top 3.
We are cited in 7 of the 56 AI Overviews. The other 49 carry 53,960 impressions.
The clearest statement of the problem
| Query | Impressions | Our position | What sits above us |
|---|---|---|---|
seo company melbourne | 4,400 | 1 | Local pack we are not in |
seo services melbourne | 4,273 | 1 | Local pack we are not in |
seo agency gold coast | 2,680 | 2 | Local pack we are not in |
search engine optimisation agency | 1,890 | 1 | AI Overview that does not cite us |
We are organic position 1 on two Melbourne queries worth 8,673 impressions between them and earn nothing from either, because a map pack sits above us and we are not in it. We have a Melbourne office.
Across the top 100, 51 queries have us at organic top 3 earning zero clicks, carrying 56,974 impressions.
What is actually on these results
| Feature | Present on |
|---|---|
| People Also Ask | 98 of 100 |
| Related searches | 87 |
| Local pack | 56 |
| AI Overview | 56 |
| Video | 3 |
| Featured snippet | 1 |
What this does to the bucketsBucket C retired
Bucket C has no target
Bucket C was pricing, treated with title and meta only, on the reasoning that no SERP feature was taking the click and the failure was our own presentation.
Not one query in the top 100 classifies as a blue-link failure, and pricing appears twice. The premise does not survive the classification.
Retire it as a measured test. Keep title and meta as ordinary hygiene. Testing a mechanism against a cause that does not exist would spend twelve months proving nothing.
| Bucket | Was | Should be |
|---|---|---|
| B. Local pack | One of four, off-page | The primary programme. 60.8% of the pool, zero presence across 56 packs |
| A. AI Overview citation | One of four | The second half. 32.3%, cited on 7 of 56 |
| D. Schema at scale | One of four | Supporting. Feeds A by making us more citable |
| C. Title and meta | One of four | Retired as a test. No target |
| E. Social and video | Added | Unchanged. Feeds A, and E1 measures the platform properties |
One genuine surprise
People Also Ask on 98 of 100. That is not a cluster-specific opportunity, it is a universal overlay on the entire pool. FAQ schema should be applied across every bucket rather than confined to the vertical cluster.
The honest read
Most of this is not a website problem. 60.8% of it is a Google Business Profile problem, on a surface we have never once measured. We have been doing the SEO correctly, ranking organic top 3, and losing the click to a three-slot box we never claimed.
The second largest chunk is an AI citation problem, which is the least proven area in the programme and the one most likely to resist effort. Neither is fixed by rewriting a title.
Revised next actions
Bucket B starts immediately with the majority of the effort
Profile inventory, then completeness, categories, reviews, posts. 60.8% of the pool and our presence is zero.
Freeze the holdout split by CAUSE, not by cluster
Cause is what the treatment now follows, so the control has to be built the same way.
Apply FAQ schema across all buckets
On the strength of 98 of 100, not just the vertical cluster.
Re-run this classification at 90 days
Feature presence moves. If AI Overview reaches 70 of 100 by December, the weighting changes again.
Full write-up: zero-click-programme/CAUSE-CLASSIFICATION.md. Raw per-query output: cause-classification-2026-08-19.csv
Bucket E. Social, YouTube and short-formManual pull only
No tool can read this data. Not one
Google Search Console platform properties launched 7 July 2026 and are not exposed in the Search Console API. Verified 19 August: the sites list returns 26 properties and none of them are platform properties, and a direct query on sc-creator-profile:youtube.com/@StudioHawkSEO returns HTTP 400, invalid argument.
A 400 matters more than a 403. It means the API does not recognise the property type at all. So Semrush cannot read it, Ahrefs cannot, SEOtesting cannot, and neither can we. The only route that exists is a manual export.
That is the opportunity, not the obstacle. Anyone willing to do the manual pull holds a dataset the entire industry is blind to.
A correction, and the rule it produced
This programme recorded that StudioHawk had no platform properties claimed. That was wrong. The property exists and is visible in the interface. The conclusion came from the API returning nothing, which is not the same thing.
That is the third time in one session that absence in a tool was read as absence in reality. The others: hreflang coverage judged from a sample, and a competitor ranking judged from a single SERP pull that disagreed with the truth three hours later.
Rule: a tool not returning something is not evidence the thing does not exist. Before recording an absence, establish whether the tool can see it at all. This applies hardest to anything Google shipped in the last twelve months.
Why not a video SERP bucket
Because the video carousel is not on the results we are targeting. Tested on live Australian SERPs, 19 August:
| Query type | Video present |
|---|---|
| Commercial: sydney seo services, seo for lawyers, seo cost, aged care seo | 0 of 4 |
| Informational: how to do an seo audit, how to rank higher on google, black hat seo | 4 of 6 |
Video appears on informational queries. That sub-pool is 37 of 1,050 queries carrying 5,876 of 333,496 impressions, which is 1.8%. A bucket chasing the carousel would aim at under two percent of the problem.
So the bucket has two halves
E1. Measure the platform properties
Monthly manual export per property, establishing a baseline nobody else in the market can currently see. The one profile we have seen ran 35,585 impressions against 7 clicks. Structurally the same disease as the website, on a different surface.
E2. Social and video feed AI Overview citation
AI Overview appeared on 11 of the 12 zero-click queries tested, making it the largest single click-thief in the pool, ahead of the local pack. AI systems cite video and social sources. That is how social attacks the commercial pool: through citation, not through a carousel that is not there.
The metric decision this forces
The programme measures clicks recovered to studiohawk.com.au. A YouTube result in a Google search sends the click to YouTube. Captured searcher, not a site click.
Recommendation: widen the metric to searcher captured on any StudioHawk property, and restate the baseline before Q1 closes. Social cannot be inside the programme and outside the metric. It is also more honest about how search now works, and it unlocks the portfolio framing, which is a materially stronger entry: zero-click recovery across an estate rather than on one website.
The discipline it demands: website clicks and platform-property clicks are reported separately and never summed into one headline number. Different actions on different surfaces. Adding them would be exactly the comfortable arithmetic this programme exists to avoid.
Pull procedure and file naming: zero-click-programme/platform-properties/README.md. LinkedIn is not available as a platform property, so any LinkedIn measurement comes from elsewhere and must never be compared against these figures.
How we prove it workedHoldout group
A control group, frozen before treatment
We will not treat every query. A defined holdout set stays untouched for the full 12 months, matched on cluster, impression band and starting position, roughly 20% of each cluster.
Without it, any recovery can be explained away as a Google update, seasonality or brand growth. With it, we can show treated and untreated cohorts moving differently under identical conditions. Very few agencies bring a control group to an awards entry.
The metric: clicks recovered from the defined pool, measured per workstream, against a baseline of 78 clicks from 333,496 impressions.
The anti-metric: impressions
The pool already generates a third of a million and they are the problem, not the goal. If impressions rise and clicks stay flat, the programme has failed, however good the chart looks.
The 12 months, and what we have to be honest about
| Quarter | Focus | Milestone |
|---|---|---|
| Q1 Aug to Oct 26 | Baseline and local pack foundation | Full profile inventory and audit. Grid tracking live. Holdout frozen. Cause-of-zero-click classified for the top 100 queries |
| Q2 Nov 26 to Jan 27 | Local pack execution, blue-link fixes | Profiles complete and posting. Title and meta shipped on pricing and generic clusters. First 90-day read |
| Q3 Feb to Apr 27 | AI Overview and PAA | Entity map published. Structured answers on the vertical cluster |
| Q4 May to Jul 27 | Consolidate and measure | Full re-measurement. Treated versus holdout. Per-workstream attribution |
| Close Aug 27 | Write the entry | 12-month before and after, with the mechanism named |
What we have to be honest about
- Some of this pool is unwinnable. Part of the finding will be establishing what share is genuinely recoverable, and that number may be uncomfortable.
- AI Overview citation may not work. We are attempting it, not asserting it.
- The local pack may be the only thing that moves. That is still a real finding.
- 78 clicks is a small base. Percentage movements will look dramatic and must be reported in absolute clicks alongside.
- We have never measured a Business Profile. The biggest workstream starts from zero measurement, and the entry should say so plainly.
Immediate next actions
1. Confirm the APAC 2028 entry deadline so the final measurement window lands inside it. 2. Classify cause-of-zero-click for the top 100 queries. 3. Define and freeze the holdout set, before any treatment starts. 4. Start the profile inventory.
L0. The vertical toolkit programme Lawrence + Sian Now first
Three new vertical packs, extending the eCommerce one. Lawrence writes raw copy, Sian proofs and designs. Board items and info dumps already exist.
| Pack | Audience | Money-page wireframes |
|---|---|---|
| Local / Multi-Location | Retail chains, clinics, franchises, trades, hospitality | Location or store page; service-area page |
| SaaS / Software | B2B and B2C software competing on category and comparison terms | Comparison or "vs" page; feature or use-case page |
| Professional / B2B Services | Agencies, consultancies, law, finance, accounting | Service page; about, trust or team-expertise page |
Sian's structure is consistent across all three and should become the template: audience, two money-page wireframes, prompt themes in four categories, checklist emphasis, writing-guide angle. That repeatability is the point. Pack four should take a fraction of the time pack two does.
What the data saysChanges how these get built
1. These are paid-social assets, not SEO assets
Traffic to every toolkit and whitepaper landing page, 90 days to 3 August 2026:
| Channel | Sessions | Share |
|---|---|---|
| Paid Social | 3,566 | 82.4% |
| Direct | 402 | 9.3% |
| Cross-network | 104 | 2.4% |
| Organic Social | 61 | 1.4% |
| Referral | 59 | 1.4% |
| Organic Search | 55 | 1.3% |
They convert because they are advertised, not because they rank. The eCommerce toolkit earns 8 organic clicks a quarter from 2,037 impressions at position 33.2. Build them for the channel that works.
2. Do not budget for these to rank
| Term | Volume/mo, AU |
|---|---|
| local seo checklist | 40 |
| ecommerce seo audit checklist | 30 |
| ecommerce seo checklist | 20 |
| saas seo checklist | 0 |
I was going to recommend building these to rank as well as convert. The data does not support it. Adding SEO scaffolding to chase 40 searches a month is effort better spent on the pack. Keep them indexable and let ranking be a bonus, not an objective.
3. The download tracking is not wired
All 851 recorded downloads in 90 days fire on one page, via one event. The eCommerce pack has its own thank-you page which took 46 sessions and has no key event configured at all, so its downloads are not counted in analytics.
Sian's read that the eCommerce toolkit does well on downloads may be right, and she may be seeing HubSpot submissions directly. But it cannot be verified in analytics, and we cannot currently tell which pack outperforms which.
Wire the download event on every pack's thank-you page before the three new ones ship. Otherwise we build three more assets we cannot measure, and in six months we have four unknowns instead of one.
Why this goes first, when the plan says convert before you build
It is not speculative volume
It replicates an asset with a proven channel into three verticals, rather than adding pages hoping to rank.
It is the vertical wedge
SaaS, ecommerce, professional services and local are exactly the verticals StudioHawk positions on. Four packs is that positioning made tangible.
Someone else's time is on the critical path
Sian proofs and designs. Getting raw copy to her early means the design queue runs in parallel rather than blocking at the end.
The on-page work is unaffected
L1 through L8 are Lily's and run alongside. This does not push them back.
Sequence and what to watch for
| Step | Who | What |
|---|---|---|
| 1 | Lawrence | Wire the download events. Every pack's thank-you page. First, or the rest is unmeasurable |
| 2 | Lawrence | Lock the pack template from Sian's five-part structure, so pack four is fast |
| 3 | Lawrence | Raw copy: Professional / B2B first. Highest-value audience, closest to how we sell |
| 4 | Lawrence | Raw copy: SaaS |
| 5 | Lawrence | Raw copy: Local. Check against the existing local toolkit first, it may be a rebuild |
| 6 | Sian | Proof and design, running behind each pack as it lands |
| 7 | Lawrence | One video per pack, pointing at the download |
| 8 | Both | Measure at 30 days: downloads per pack, by channel |
- There is already a local toolkit.
/local-ai-seo-toolkit-downloadis live and earned 29 sessions and 1 conversion in 90 days. Decide whether the Local pack is new or a rebuild before writing. Two competing local packs is worse than one good one. - There is also
/ai-seo-toolkit, live, 16 sessions in 90 days. Same question. - Do not let this become a page-count exercise. Four packs done properly beats seven done thinly.
- These are reusable in the UK and US. Keep the market flavour in the examples, not the checklists, so regionalising later is a swap and not a rewrite.
What done looks like
Three packs live with their own landing and thank-you pages, download events firing and attributed per pack, one video each, and a 30-day read showing downloads by pack and by channel. And the thing we cannot do today: say which pack works best.
First: the eight words you need
You do not need to know SEO to start. You need these.
| Word | What it means |
|---|---|
| Impression | Our page appeared in someone's search results. They may not have looked at it. |
| Click | They clicked through to us. This is the one that matters. |
| Click-through rate | Clicks divided by impressions. Ours is 0.15%, which is low. |
| Position | Where we appear. Position 1 is the top. Position 11 is the top of page two, where almost nobody goes. |
| Title tag | The blue clickable headline in a search result. Not the heading on the page. |
| Meta description | The grey text under the blue headline. |
| H1 | The main visible heading on the page itself. There should be exactly one. |
| Canonical | A hidden tag saying "this is the real address for this page". |
The one to internalise early: a title tag and an H1 are two different things. The title tag is what a searcher sees before they arrive. The H1 is what they see after. People conflate these constantly.
L1. Ship the nine title tags Lily First task
Stage: Convert. The specs are already written and waiting.
Why this mattersThe Loom
We appear in search results about 6.5 million times every three months, and people click through 9,864 times. That is 0.15%. For every thousand people who see us, one and a half click.
That is not a ranking problem. We are on page one for the terms that matter. They are seeing us and choosing something else.
Think about how you use Google. You scan, you read three or four headlines, and you pick one. You are not evaluating websites, you are picking a headline. That headline is the title tag.
The nine are already written. Your job is to ship them and then find out whether they worked. That second part is the real lesson. Anyone can change a title and say traffic went up. Traffic goes up and down on its own.
What to do
Record the before state, all nine, first
Current title, current description, and clicks, impressions, click-through and average position for the last 28 days. Before you touch anything. You cannot recreate it afterwards.
Open the page in the HubSpot page editor
Settings, then the SEO panel. Never the Design Manager.
Swap in the specced title and description
From
title-tag-rewrites-phase1.md.Publish, and write down the date
Per page. Everything we measure later hangs off it.
Annotate each one in SEOtesting
What changed, which page, what date.
Re-measure at 14 days and 28 days
Same metrics, same length of window.
Check your own workNo need to ask
- Open the live page, right click, View Page Source, search for
<title>. Your new text should be there. If the old text shows, it did not publish or it is cached. - Check the length. Roughly 60 characters before Google truncates the title, about 155 for the description.
- A few days later, google the page title in quotes and see whether the new one is showing.
Watch for
- Change nothing else on those nine pages during the measurement window.
- Compare equal windows. 28 days against 28 days, never against "since we shipped".
- Watch position as well as click-through. If position moved too, the title may not be the cause.
- A title change can lose you clicks. That is normal, and exactly why we measure. If it drops we revert and we have still learned something.
A result of "no change" gets written up exactly the same as a win. A measured negative is worth more than an unmeasured positive.
What you will be able to do afterwards
Change something on a page and prove whether it worked. This is the skill that separates SEO from opinion, and most people never learn it.
L2. Fix the worst click-through pages Lily
Stage: Convert. Depends on Lawrence's W2 analysis.
Why this mattersThe Loom
One page makes the point. /seo-services/link-building/ gets about 84,000 impressions and 9 clicks. Google shows that page to a lot of people and essentially none of them want it.
Nothing is broken. It ranks. But when someone sees it, they choose something else. Every one of those 84,000 impressions is a chance we already earned and threw away.
The skill here is writing for the search result rather than for the page. Stop thinking "what is this page about" and start thinking "what did the person type, and what would make them feel this page answers it".
What to do, and what to watch for
- For each page, look at the top three search terms it actually appears for. Write for those, not for what you assume the page is about.
- Record the before state, same as L1.
- Aim for about 60 characters on the title, 155 on the description.
- Ship in batches of five, so if something goes wrong you know which batch.
- Annotate each batch. Measure at 14 and 28 days.
- Do not keyword-stuff. "SEO Agency Melbourne | SEO Services Melbourne" reads as spam to a person, and people are who click.
- Every title must be different. Two pages with the same title compete with each other.
- A page at position 25 with low click-through is normal. A page at position 6 with low click-through is a real defect. Those are the priority.
L3. Heading structure pass Lily
Stage: Strengthen. Self-contained, depends on nothing.
Why this mattersThe Loom
Headings are not decoration. They are how a page explains its own structure.
Google does not see your design. It sees an outline: this is the subject (H1), these are its sections (H2s), these are the parts within them (H3s). If that outline is a mess, the page is harder to understand and harder to rank.
Three problems come up constantly, and you will find all three on our site: more than one H1, skipped levels (an H2 followed by an H4), and headings chosen for how big the text looked rather than what the content is.
What to do, and how to check it
- List every heading in order with its level, for each priority page.
- Check: exactly one H1, no skipped levels, every heading describes what is beneath it.
- Fix by changing the heading level, not the styling. If something needs to look smaller, that is a CSS job.
The check: read only the headings, top to bottom, ignoring everything else. It should read like a sensible summary of the page. If it does not make sense on its own, the structure is wrong.
If fixing a heading level changes how the page looks, stop and flag it. That means styling is attached to the heading level, which is a template issue and Lawrence's side.
L4. Add internal links into body content Lily
Stage: Strengthen. Depends on Lawrence's W1 audit.
Why this mattersThe Loom
This is the least understood thing in SEO and it has the best return for the effort.
Every link on our site passes value to the page it points at. The way we link between our own pages is us telling Google which of our pages matter. Most websites never decide this on purpose, so all the value pools on the homepage and whatever the menu links to.
Direction matters. Blog posts and case studies are what other websites link to. Service pages make money. So the flow goes from blog posts and case studies towards service and location pages. Not the reverse.
A link inside body text is worth more than a link in the menu. The menu links to everything, so it says nothing about what is important. A link inside a sentence is a choice.
What to do, and what to watch for
- Work from the source-to-target plan Lawrence gives you.
- Find a place in the body where the link genuinely fits the sentence. If it does not fit naturally, do not force it. Flag it and move on.
- Vary the anchor text. First exact match, then partial, then branded or natural.
- Maximum two links to the same destination from any one page.
- Keep a record: source, target, anchor text, date.
- Do not link from dead pages. A page with no traffic has no value to pass. This is why W1 comes first.
- Do not link two different pages using the same anchor text. They will compete.
- Click every link you added on the live page. Confirm it goes where you meant and does not 404.
L5. Complete the Google Business Profiles Lily Never measured
Stage: Fix. The fastest feedback loop on the plan.
Why this mattersThe Loom
Everything else here is about the website. This one is not, and that is why it is worth doing.
Search "seo agency melbourne". Before the blue links there is a map with three businesses. That block is not driven by the website at all. It is driven by the Business Profile, the reviews, and whether the business details match everywhere they appear online.
We have never checked ours. Not once, for Melbourne or Sydney. We do not know whether the information is complete, whether there are photos, or whether there are old duplicate listings nobody is watching.
Website changes take weeks to show. Profile changes can show the same day.
What to do, and what to watch for
- Inventory first. Search the business name and each office address. Look for duplicates and old listings, not just the ones we know about.
- Record everything: name, address, phone, primary and secondary categories, hours, description, photo count, video count, last post date, review count, review replies.
- Consistency check. Compare the name, address and phone character by character against the website. "St" against "Street" counts as a difference.
- Fill the gaps. Photos matter more than people expect.
- Record who currently holds the three map slots for "seo agency melbourne" and "seo agency sydney".
Duplicate listings are the most damaging thing you will find. Flag them to Lawrence rather than deleting anything yourself. And never put keywords in the business name, which breaks Google's rules and can get the listing suspended.
L6. Fix the thin pages Lily
Stage: Strengthen. Depends on Lawrence's W1 audit.
Why this mattersThe Loom
A page with very little on it is not neutral. It costs you. Google forms a view of a website as a whole, so a site with a lot of thin pages is judged as a thinner site, and that drags on the good pages too.
Here is the comparison. An agency ranking number one for "seo agency" in the UK has zero pages under a thousand words. Not a few. Zero. Their median page is around four thousand. Not because long pages rank better mechanically, but because they decided every page has to earn its place and held to it.
The judgement I want you making: some thin pages should not be fixed, they should be merged or removed. If a page has nothing more to say, adding words to hit a count makes it worse. Adding filler is the failure mode here.
What to do
- Before writing anything, ask what the page is missing rather than how to make it longer. Usually one of: does not answer the obvious follow-up, has no examples, has no proof, does not say what happens next.
- This is body copy, so it goes through the content workflow. Lawrence walks you through it on the first one.
- If the honest answer is that nothing is missing, say so and send it back for merge or removal.
- Word count is a symptom, not a goal. A useful 700-word page beats a padded 1,500-word one.
- Never copy content from another page to fill space. That creates two pages competing.
L7. Refresh the six decaying pages Lily
Stage: Fix.
Why this mattersThe Loom
Rankings are not permanent. A page that did well two years ago and has not been touched is usually doing worse now, because competitors updated theirs and it stood still.
We measured in April. /seo-sydney/ went from 235 clicks a month to 143. The homepage from 590 to 531. /seo-services/local-seo/ went from 14 to zero.
Nobody did anything wrong, and that is the point. Doing nothing is a decision, and this is what it costs.
Counter-intuitive and important: a refresh can lose you rankings. If you strip out the part that was actually working, you go backwards. Before you change a page, find out what it currently ranks for. Protect that, then improve around it.
What to do
- Get the terms each page currently ranks for from Lawrence. That is what you are protecting.
- Record the before state and the date.
- Goes through the content workflow. This is a copy change, it does not skip the gate.
- Update what is factually out of date, examples that have aged, statistics with old years, and questions the page does not answer.
- Do not change the URL. If it has to change, that is a redirect job and Lawrence's call.
- Measure at 28 days. Refreshes are slower to show than metadata changes, so do not judge at 14.
L8. Add structured data Lily Last, most technical
Stage: Strengthen. Lawrence provides the code.
Why this mattersThe Loom
Structured data is a block of code that describes a page in a way machines read directly. A person reads "StudioHawk, 03 1234 5678, open 9 to 5". The code version says explicitly: this is an Organization, this is its phone number, these are its hours. No interpretation required.
It matters for two reasons. It is how you become eligible for the extra things in search results, like star ratings and FAQ dropdowns. And increasingly it is how AI systems read a page, because they read the structured version rather than guessing from the layout.
Our Australian and UK sites have this. Our US site has none at all, which is one reason it is close to invisible.
This is last on purpose. It will make far more sense after a few weeks of looking at how pages are built.
What to do, and what to watch for
- Add the code block Lawrence gives you, per page.
- Test the live page in Google's Rich Results Test. Fix errors. Warnings are usually optional fields and fine to leave.
- View source and confirm the block appears once. Duplicates cause conflicts.
Never describe something that is not on the page. Structured data claiming a rating the page does not show is a policy violation and can cost you the feature entirely. If the Rich Results Test errors and the fix is not obvious, hand it to Lawrence. Broken structured data is worse than none.
W1 to W7 Lawrence
These produce the work lists, or need a decision that is expensive to reverse.
| # | Task | Note |
|---|---|---|
| W1 | Quality node audit | 480 URLs against 12 months of Search Console. Produces the keep, merge and remove list, which feeds L4 and L6 |
| W2 | Click-through analysis | Produces the 20-page list for L2, with the top search terms per page |
| W3 | Canberra and Hobart diagnosis | Both show zero impressions despite tool-reported positions. 10,370 and 1,270 searches a month behind them. Two pages, same symptom, so diagnose once. May be site-level |
| W4 | Topical map build | Blocks the 239-post blog refresh. Without it, a refresh is 239 individual guesses |
| W5 | Services hub rebuild | About 3,180 searches a month recoverable |
| W6 | Keep, merge or delete decisions | The uncomfortable one. It means deleting work people did |
| W7 | Sydney suburb pilot scope | Three to five suburbs, not 67. Local tracking on before it ships |
Recoverable volume
Roughly 32,470 searches a month identified across 13 existing pages.
Read with a caveat
Built against a benchmark competitor who, on the 30 July 2026 overlap measurement, does not share our search results. The page-level volumes stand. The head-to-head framing does not.
| Page | Volume/mo | Note |
|---|---|---|
/seo-canberra/ | 10,370 | Invisible All 4 priority queries at zero impressions |
/seo-sydney/ | 7,750 | "seo consultant sydney" at 17 while the main term is top 3 |
/seo-services/ | 3,180 | Restructure as a hub with a child-page grid |
/seo-services/link-building/ | 2,750 | Worst click-through on the site: 84K impressions, 9 clicks |
/seo-services/seo-website-migrations/ | 1,950 | Refresh and reframe |
/seo-services/technical-seo/ | 1,850 | Already close. Push with internal links |
/seo-hobart/ | 1,270 | Invisible Same pattern as Canberra. Diagnose together |
/blog/enterprise-seo-tools | 1,150 | Already top 5, small lift |
/seo-services/b2b-seo/ | 970 | Real bug is /seo-brisbane/ cannibalising B2B terms |
/seo-services/saas-seo/ | 440 | Cross-link with B2B |
/seo-services/youtube-seo/ | 310 | Position 2, small lift to 1 |
/seo-services/ai-seo/ | 230 | Tighten on generative AI terminology |
/industry/seo-for-jewellery/ | 200 | Position 3, small lift |
The only genuine build gap: /seo-darwin/ at 4,070/mo.
Content decay
Clicks lost per month against a 12-month peak, measured 1 April 2026. Not re-measured since. Re-run before acting.
| Page | Peak | Then current | Clicks lost |
|---|---|---|---|
/seo-sydney/ | 235 | 143 | 92 |
/ | 590 | 531 | 59 |
/seo-services/ | 182 | 126 | 56 |
/seo-brisbane/ | 39 | 10 | 29 |
/seo-services/local-seo/ | 14 | 0 | 14 |
/seo-services/link-building/ | 15 | 2 | 13 |
/blog/what-is-ai-seo/ | 11 | 3 | 8 |
/blog/how-to-rank-in-searchgpt/ | 7 | 0 | 7 |
/seo-services/enterprise-seo/ | 7 | 0 | 7 |
Page inventory
Live sitemap crawl, 5 August 2026. Australia is the reference build for the other two markets.
| Type | Count |
|---|---|
| Total URLs | 480 |
| Blog posts | 241 |
| About us pages | 73 |
| Case studies | 59 |
| Service pages | 30 |
| Industry pages | 22 |
| Location pages | 13 |
The blog is the open question. 241 posts carrying 50.5% of site impressions at 0.09% click-through. W1 will tell us how many of them earn anything. That number decides whether the 239-post refresh is a refresh or a cull.
Eight-week schedule
| Week | Lily | Lawrence |
|---|---|---|
| 1 | L1 title tags, record before and ship | W1 quality node audit, W3 Canberra diagnosis |
| 2 | L3 heading structure pass | W2 click-through analysis, W6 decisions |
| 3 | L1 measure at 14 days, start L2 batch 1 | W4 topical map |
| 4 | L2 batches 2 to 4 | W4 continues |
| 5 | L1 measure at 28 days, L5 profiles | W5 services hub |
| 6 | L4 internal links, L6 thin pages | W7 suburb scope |
| 7 | L7 page refreshes | Review and re-plan |
| 8 | L8 structured data |
Week 3 is the date that matters. That is the first measurement on the title tags, and the first time Lily sees a number move because of something she did. Worth making a moment of.
Blockers and targets
Before week 1
- Lily needs Search Console access. L1 opens with pulling the before state, so she stalls on step one without it.
- Lily needs HubSpot page-editor access. Page editor, not Design Manager.
- Confirm the title tag specs are still current against W2, which is more recent evidence.
Open on the AU roadmap
- Does Contact Click count as a conversion? 1,366 in three months, currently counted as nothing.
- Glossary follow-up has no owner. 161 terms, Tier 1 is 132 of them.
- Website deploys wait on the deploy-day process.
What we are aiming at
Four of the six near-page-one terms inside the top 5. Site click-through from 0.15% towards 0.40%. Canberra and Hobart earning measurable impressions, from zero today. Every page classified keep, merge or remove.
And separately: Lily can run an on-page SEO audit on any site, explain why each finding matters, and prove whether a change worked.
Search data is Google Search Console for the three months to 29 July 2026. Behaviour data is Google Analytics to 3 August 2026. Page counts are a live sitemap crawl on 5 August 2026. Where something has never been measured, this page says so rather than estimating.
StudioHawk · Australia