05 — On-Page SEO
Page-by-page optimisation
This is where most "designers" stop and we start. Title tags ≤ 60 characters, meta descriptions 150–160, one keyword-led H1 per page, logical H2s, and the right JSON-LD schema for each template so you're eligible for rich results and AI answers. Australian English throughout. Service and location pages are templated — one spec each, with a variants table — so quality scales without duplication.
Home Decision
URL /
Keyword {primary service} {primary city}
Title {Service} {City} & {Region} | {Brand} (≤60)
Meta {Benefit-led summary with service, area, point of difference and a call to action.} (150–160)
H1 {Service}, {City} to {Region}
H2s Services · How it works · Why choose us · Areas we service · Reviews · FAQs
Schema LocalBusiness (industry sub-type) + FAQPage
Links → /services/ · /locations/ · /pricing/ · /reviews/ · /contact/
CTA Get my free quote (primary) · Call {phone} (secondary)
Services hub Consideration
URL /services/
Keyword {category} services {city}
Title {Category} Services {City} | {Brand} (≤60)
H1 {Category} Services in {City}
H2s One H2 per service (links to each spoke) · Why choose us · How it works
Schema ItemList of Service + BreadcrumbList
Links → every service page · /locations/ · /contact/
Service page — template Consideration
URL /services/{service-slug}/
H1 {Service} in {City} & {Region}
H2s What's included · What it costs · How it works · Areas we cover · {Service} FAQs
Schema Service + FAQPage + BreadcrumbList
Links → Services hub · 2 related services · nearest location · /contact/
CTA Get my free quote · Call now
| Service page | Target keyword (pattern) | Title tag (≤60, pattern) |
| {Service 1} | {service 1} {city} | {Service 1} {City} | {Brand} |
| {Service 2} | {service 2} {city} | {Service 2} {City} | {Brand} |
| {Service 3} | {service 3} {city} | {Service 3} {City} | {Brand} |
| {Service 4…} | {…} {city} | {Service …} {City} | {Brand} |
Locations hub & location pages Decision
Hub URL /locations/ · Keyword {service} {city} & {region}
Page URL /locations/{area}/ · Keyword {service} {area}
Title {Service} {Area} | {Brand}
H1 {Service} {Area}
H2s Your local {area} team · What we offer · Suburbs we cover · {Area} FAQs
Schema Service (areaServed = {area}) + BreadcrumbList + FAQPage
Links → Home · sibling location pages · relevant service pages · /contact/
Critical rule: every location page earns unique localised copy (real suburbs, a genuine local angle, its own FAQ). We never spin or duplicate — duplicate location pages are the fastest way to get a local site penalised.
Pricing / Comparison Consideration
URL /pricing/
Title {Service} Prices {City} | {Brand}
H1 What {service} costs in {City}
Schema FAQPage + BreadcrumbList
Focus Comparison table + what affects price + how quoting works
About Us Trust
URL /about-us/
Title About {Brand} | {Years}+ Years {City}
H1 About {Brand}
Schema AboutPage + Organization
Focus E-E-A-T: experience, team, credentials, area
Reviews Proof
URL /reviews/
Title Reviews | {Brand} {City}
H1 What our customers say
Schema Review + AggregateRating (real reviews only)
Focus Live Google reviews embedded
Contact / Quote Convert
URL /contact/
Title Get a Free {Service} Quote | {Brand}
H1 Get your free, obligation-free quote
Schema ContactPage + LocalBusiness
Focus Form + phone + hours + areas + map
Blog hub Capture — /blog/ · Schema Blog + ItemList. Each article: Article + BreadcrumbList (+ FAQPage / HowTo where relevant) so individual answers can win featured snippets and AI citations.