City pages that are not duplicates.
Dedicated local pages outperform one generic service page. Thin copies of each other do not.
Why dedicated pages win
The consistent pattern across sources is that a single generic service page underperforms against dedicated city and neighbourhood pages. The mechanism is straightforward: a searcher in one suburb gets an answer about their suburb, and a crawler gets a page that is unambiguously about one place rather than twenty. The finding is directional. No percentage is published for it, so none is claimed here.
What a real city page contains
Seven things, none of which survive being templated.
The line between specific and thin
A thin page swaps the suburb name into the same paragraph twenty times. That is worse than not having the page, because near-duplicates compete with each other and dilute authority that should have concentrated in one place. The test is simple: if you cannot say something true about that suburb that is not true of the next one, do not publish the page.
How many to build
The limit is content, not count. Start with the suburbs that already produce work, because you have photographs, job history, and local knowledge for those. Add adjacent areas only when you have something real to say. Twelve strong pages beat forty thin ones, and the forty will actively hold the twelve back.
Consolidation usually comes first
Companies that grew by adding pages often hold dozens of near-duplicates competing with each other. The fix is a redirect map that retires the thin ones into fewer strong pages, so nothing that had earned authority loses it in the move. It costs nothing to write and it stops the site fighting itself, which is why it is frequently the highest-return item in an audit.
Structure and internal linking
One hub page per metro, with suburb pages beneath it, each linking up to its metro and across to its nearest siblings. Keep the URL shallow and readable, one page per place, and never generate combinations of service and suburb programmatically unless each result has genuinely distinct content behind it.
Where these pages fit against the profile
The Business Profile decides map-pack visibility. The city pages give it something relevant to point at and reach the searches the map pack never appears in. They are not substitutes, and a strong profile with no local content on the site is the most common half-finished version of this work.
The content-availability test
Before committing to a suburb, answer these from your own records. If you cannot answer four of the six, the page is not ready and publishing it will cost you rather than help.
Order of build
Start with the suburbs already producing work, because the material exists. Then adjacent areas where you have one or two jobs and can honestly claim coverage. Then, only if capacity justifies it, aspirational suburbs, and those get built last and slowest because they need content gathered rather than recalled. Most companies invert this and lead with the suburbs they want rather than the ones they can write about.
Keeping them alive
A city page written once and never touched decays as the work moves. Add each new completed job to its suburb page as it finishes, with a photograph and the roof type, so the page accumulates rather than ages. That habit turns twelve pages into a genuine local record over two years, and it costs one person ten minutes a job.
Related guides.
The setup that drives enquiries without ad spend, and the clerical errors that quietly cap a listing.
Seasonal pages have to be indexed before they are needed, not written during the event.
City pages, Google Business Profile, storm content, and what actually moves map-pack visibility for a roofer.
See what your market rewards.
$2,500, and you get the city-by-city order to build in.