
About the client
The client is one of the largest physical therapy chains in the US with 100+ locations and growing. The identity of the client is protected for privacy purposes.
Summary of what I did
- Lead SEO Strategist for a large website redesign project
- Technical SEO, on-page SEO, and schema management
- WordPress backend architecture to support 100+ locations and 2,000+ pages
- Website UX and wireframes
- Liason with team of designers and developers
Highlights
Within short months of launching the new website:
- 11% growth in monthly organic website traffic
- 36% increase in Google visibility in the top 10 results for target keywords
- 15x website pages optimized for target keywords (from 200 pages to 3,000 pages)
The problem
The client wanted a complete redesign of their website which had become outdated. Many organizations make the mistake of focusing on just a cosmetic makeover when undergoing a website redesign. This organization’s savvy Marketing Director prioritized SEO and was open minded about the best way to build the new site to support SEO. 👍
I was chosen for this project because of my extensive experience in both SEO and WordPress development. We needed to build the site in a way that made it feasible to manage 100+ locations while prioritizing SEO. I had previous experience managing websites for multi-location businesses that had 10 or 20 locations, but never a site quite this large.
Choosing WordPress as the CMS
WordPress was an easy choice for this project. It is a very powerful and mature CMS (content management system) that can support custom post types/taxonomies and dynamic relationships between them. That’s exactly what we needed to support lots of locations and lots of pages. From previous experience building large and complex WordPress sites, I knew exactly how to architect the backend to make this project efficient in every way.
SEO strategy
The key to SEO for multi-location businesses is having dedicated service pages for each location in order to rank locally for those service keywords. Here is a diagram of how the old website was structured… notice how there is only one page for each location and there is only one page for each service. With this setup, the service pages are not connected to any specific location.

Here is how I structured the new website…

With the new structure, instead of having one service page about vestibular therapy, every location that offers vestibular therapy has their own service page about vestibular therapy. This allowed us to properly optimize each service page by specifying a single business address associated with the page. Here is a summary of the key on-page optimizations for each service page:
- URL structure: domain.com/chattanooga-tn/vestibular-therapy/
- Meta title: Vestibular Therapy in Chattanooga – {Brand Name}
- Meta description: Vestibular Therapy in Chattanooga that features…
- h1: Vestibular Therapy in Chattanooga
- Body content: Content about their vestibular therapy services and their city/town/neighborhood.
- Schema: Single location schema for a physical therapy business with their address, local phone number, etc.
Are location-specific service pages really necessary?
Twenty years in SEO has taught me that there are no hard and fast rules. Every decision should be considered situationally. I can’t say that every multi-location business should use this strategy for all their target keywords. Creating location-specific service pages adds a lot of work because it makes a website exponentially larger.
So how did I decide that it was really necessary for this project? Whenever there’s a question about SEO, the answer usually lies in studying the Google SERPs (search engine result pages) for your target keywords.
When I did a search like “vestibular therapy in {city}”, I found that the top results had “Vestibular Therapy” in the title tag, and the pages were tied to a specific location that matched the location in the search query. I also saw that the client’s website was very low on the first page or not even on the first page in many cities for this keyword and other target keywords.
This was clear evidence that the client needed location-specific service pages in order to compete for many of their target keywords. The client had a stronger domain authority compared to smaller independent physical therapy businesses, yet they were getting outranked because their competitors had pages that were a stronger contextual match for the combination of service keyword and city in the search query.
Isn’t this strategy bad because of duplicate content and keyword cannibalization?
If you know SEO, you might be wondering if having lots of pages about the same service (one page for each location) will hurt SEO because of duplicate content or keyword cannibalization. Duplicate content is when you have the same or very similar content (text, images, etc.) on multiple pages. Keyword cannibalization is when you have multiple pages that are optimized for the same keywords.
Search engines don’t like when websites have duplicate content or keyword cannibalization because it confuses them. Search engines don’t know which of your pages to show in the SERPs, and they usually won’t show more than one page from the same website in the same SERPs. More importantly, search engines don’t want websites to abuse content for SEO and create a spammy experience for users. These are the main reasons duplicate content and keyword cannibalization are a concern for SEO professionals.
The problems of duplicate content and keyword cannibalization don’t actually apply to this situation, and I’ll explain why. These are the primary elements of a web page that search engines analyze to identify what the page is about:
- h1: The <h1> HTML tag on the page is visible to users and is supposed to contain the primary heading for the page
- Meta title: The <title> meta tag is not visible to users, it is placed in the code specifically for search engines and other aggregators to understand what the page is about
- URL: The page URL usually contains keywords matching the page content
- Text: The text on the page which usually includes one primary section with long-form content
- Media: Images, videos, or other types of media on the page which can be optimized for specific keywords
- Schema: Schema is meta data for search engines that might include the store location, services, and people associated with the page
Let’s say that 30 of the 100 locations offer vestibular therapy. We created 30 pages about vestibular therapy on the website. The section of text on the page that describes vestibular therapy services might be the same or very similar across all of these pages. However, by adding the name of the city/town/neighborhood to all the primary page elements, that is enough to make the pages meaningfully unique to search engines:
- The h1 tag would be something like “Vestibular Therapy in Chattanooga – {Brand Name}”
- The meta title tag would be something like “Vestibular Therapy in Chattanooga”
- The URL would be something like domain.com/chattanooga-tn/vestibular-therapy
- The schema would contain location-specific details such as business name, address, phone number
In addition to these primary elements, there is supplementary content that makes each location’s page about vestibular therapy even more different. Examples:
- Map of the location and text about the city/town/neighborhood
- Profiles for the therapists at each location
- Reviews and testimonials specific to the location
When search engines analyze the entire page, each page about vestibular therapy is actually quite different and maybe only 20% is duplicate content. It’s very normal for websites to have some duplicate content throughout multiple pages, especially with the trend of modular web design which is based on reusable pieces of content.
But is this still spammy? SEO professionals learn to avoid spammy tactics because they usually don’t work out in the long term. I agree that spammy tactics are usually a bad idea. 👉 But I don’t think having location-specific service pages is spammy at all. In fact, I would argue that both search engines and people prefer this website structure!
Keep in mind that it would be absolutely legit for each location of a chain or franchise to have their own separate website on their own domain. Most organizations choose to have a single website for the sake of operational efficiency and other benefits including SEO. By using the structure I created which has many service pages underneath each location’s primary landing page, we essentially created a mini website for each location.
This is a better experience for search engines and people because they can be more confident that a specific service is really supported at a location with all the location-specific info right on each service page. Conversely, having service pages that are not associated with a specific location confuses both search engines and people. Location-specific service pages provide a better user experience which improves conversion rates—it’s worth it for this reason alone!
The last thing I’ll say about the duplicate content concern is that the duplicate content penalty is a myth. Google and other search engines don’t apply a penalty to your website as punishment for having duplicate content. The only scenario I can think of where duplicate content could result in some type of penalty is when a domain steals content from other websites and uses it as their own. That is actually spammy—and illegal if the content is copyrighted.
Now that I’ve explained the SEO strategy of building mini websites for each location and why that’s important, I’ll move onto the technical details of how we accomplished this feat with WordPress.
How we built a WordPress site to manage 100+ locations
I normally develop websites on my own, but due to the size of this website we needed a team to get it done within a short amount of time. The team wasn’t excited that I needed 20+ pages per location for SEO purposes 😂. That’s 20+ pages multiplied by 100+ locations. It ended up being just under 3,000 pages in total. Luckily, I knew exactly how to make the development process managable.
Step #1: Custom post types and taxonomies
In WordPress, there are 2 main post types by default:
- Pages (regular web pages)
- Posts (blog posts)
And there are 2 main taxonomies (typically used for blog posts):
- Categories
- Tags
For this website, I registered 1 new custom post type:
- Team members (for therapists and office staff displayed on the website)
And I registered 2 new custom taxonomies:
- Locations
- Services
⚡ Developer tip: It would have also worked to make Locations and Services custom post types instead of custom taxonomies, but using them as taxonomies makes database queries faster in most cases because of how WordPress tables are structured. That means faster page load speeds.
Step #2: Adding 100+ locations
For each location, we added the relevant info into custom fields that we created using ACF (Advanced Custom Fields).
- Location name
- Address
- Phone and email
- Images of the location
- Map embed code
- Location description (1-2 paragraphs of text)

Step #3: Adding 20+ services
There were 20+ total services, but not every location offered all of them. For each service we added the relevant info into custom fields:
- Service name
- Service description (2-3 paragraphs of text)
- Service images
Step #4: Creating each location’s primary page
Next we created the primary landing page for each location—the “homepage” for each location since we are thinking of these as mini websites. This was as simple as creating a new page and connecting it to the location by selecting the location, similar to selecting the category for a blog post.
Step #5: Creating the service pages for each location
This is where everything will start to make sense, why we are building the site this way. Let’s use the example of creating the page for Vestibular Therapy in Chattanooga. We created a page with that title and selected the location (Chattanooga) and service (Vestibular Therapy), which is as simple as checking boxes.

Now that the page is connected to a specific location and service, we can dynamically pull in all the data for that location and service into the page template. We don’t have to re-enter the same content over and over again. 👉 If we ever need to update a piece of information such as the phone number for a location or the description for a service, we just have to update it in one place in the WordPress admin and it will update throughout the entire website. That is the key to building and managing a massive website like this. The backend architecture needs to be designed in a sophisticated, dynamic way.
Bonus: Generating pages with code instead of manually
Creating almost 3,000 pages in the typical manual way would take a massive amount of man hours. The power of WordPress is that it’s open source, and we can do powerful things like generate pages with code. That means spending only a few hours writing blocks of code that will automatically generate thousands of pages and automatically connect them to the right location and service. We can even generate meta tags and manage SEO at scale with code. Not only does this save huge time and cost, it minimizes mistakes otherwise caused by human error. 😅
Did the SEO strategy work?
We chose a handful of locations and monitored their keyword rankings before and after the new site launch. Here’s what we saw in their rankings in the first few months after launching the new website…
Keywords previously ranking #1-5:
When doing a website redesign, the first priority is making sure you don’t hurt the rankings for keywords already ranking high and driving traffic to the site. Even though the old website had only one page for each location, there were many keywords it was ranking well for. These were more general keywords like “physical therapy near me”, while it was struggling to rank well for specialized keywords like “vestibular therapy”. Hence our decision to create location-specific pages for those specialized keywords.
The keywords previously in the top 5 maintained similar rankings after the new website launch with minimal fluctuations within 1-2 spots in both directions. In other words, the new website didn’t damage any existing rankings. I knew that keywords already ranking in the top 5 results would be the most difficult to move up through on-page SEO alone.
However, we did see some of the new service pages replace the previously ranking location pages with a higher ranking in the top 5. Further movement within top 5 rankings (like moving from #3 to #1) usually requires link building and is largely based on behavioral metrics rather than on-page SEO. At this point in the project, we didn’t do any off-page SEO, and I was very happy with the results we achieved from just a website redesign.
Keywords previously ranking #6-10:
This segment of keywords was one of our top targets. Moving from the bottom half of the first page into the top 5 is a big deal because click-through rates are drastically higher in this range. Several keyword rankings moved up into the top 5 skipping over competitors that also had matching location/service pages but not as strong domain authority as this client. This was a big win that worked exactly as I’d planned.
Keywords previously ranking #11-20:
Targeting keywords ranking on the second page of SERPs is a common strategy of SEO professionals. These are keywords that are generating little traffic currently but have the potential to make an impact with better visibility. We saw that several keywords in this range made the critical leap from the second page to the first page. Of course, the next goal is to move the keywords into the top 5, but getting onto the first page is a big first step in the process.
Keywords previously ranking #20+:
We saw the most movement in this segment. The old website wasn’t ranking anywhere in the top 20 for many of their target keywords—many keywords weren’t even in the top 50. At the beginning of this project, I went through an extensive keyword research process to find a deep and accurate list of bottom and mid-funnel keywords to prioritize for the new website. All it took was adding lots of new pages optimized for those exact keywords/locations to start ranking for them.
After the new website launch, most of these keywords moved into the top 20, many of them into the top 10 in less competitive cities. Even though these weren’t the highest volume keywords, if you add up the organic traffic from all these new keywords across all their locations, it adds up to a significant amount of traffic and revenue growth for the company.
In conclusion
This large physical therapy chain’s website was grossly underutilizing SEO with less than 200 total pages. I turned the website into an SEO beast with 3,000 keyword-optimized pages. That’s 15x total pages.
Of course, having tons of pages doesn’t matter if the pages don’t rank high for your target keywords. We achieved 36% increase in Google visibility in the top 10 results for target keywords. Monthly organic traffic grew 11%. We were able to see these compelling results within short months of launching the new website, without off-page SEO efforts during this time.
This was just the beginning, and the ROI from the new pages will continue to increase as their rankings and organic traffic improve over time. If you want to follow this strategy for your multi-location business, I would also recommend link building and driving traffic to these new pages (such as Google Ads or Meta Ads) to help expedite their ability to rank in the top results. Focus on the keywords/pages that are most valuable to each location.
Your call to action
If you don’t already have location-specific service pages for your multi-location business, it’s something you should definitely consider as a foundational part of your SEO strategy. As a chain or franchise, one of your competitive advantages over single-location businesses is that you should be able to garner more press and backlinks to your website which gives you stronger domain authority. Without location-specific service pages, your smaller competitors may still outrank you for many valuable keywords because their whole website is tied to a specific location.
If you are interested in my help, I’m a Freelance WordPress Developer with experience building and managing websites for multi-location businesses. I know how to create the SEO strategy and architect the WordPress backend to make content management scalable for any number of locations and pages. I can help you build an SEO powerhouse 💪 that will be one of the greatest investments for your business.









