Loading…
Loading…
Health & Fitness · 7 months
FitLife Gym Chain — Multi-location fitness chain — five gyms across one metro
FitLife ran five gyms in the same city, all pointed at one website and one set of ad campaigns. The branches bid on identical keywords, so the chain was effectively buying the same click twice and pushing up its own cost per membership. Over seven months we rebuilt the funnel branch by branch, with separate landing pages, geo-fenced campaigns, and content shot inside each gym, so every rupee worked for one location instead of against another.

+215%
New members
−52%
Cost per join
5
Locations
Top 3
Local pack ranking
18L+
Reel views
Tap any screen to open the gallery — arrow keys, zoom and all.
Every gym targeted the same city and the same fitness keywords, so FitLife's own campaigns competed in the same Google auction. The chain paid a premium to outbid itself, and cost per join crept up every month.
One website served all five locations. Someone searching for a gym in their specific area landed on a generic homepage, had to hunt for the nearest branch, and often left before finding it.
Sign-ups came in without a clean signal of which gym they belonged to, so the team couldn't tell which locations were profitable and which were quietly burning budget.
Ads and social ran on generic fitness visuals. Prospects couldn't see the actual rooms, equipment, or floor they'd be training on, so the creative did little to pull walk-ins from a specific neighbourhood.
We split the map: per-location landing pages, geo-fenced campaigns that stop bidding against each other, and Reels shot in the rooms people would actually train in.
One page per gym, each leading with its address, hours, floor, and a single call to action: book a trial at that branch. Local schema markup made each page eligible for its own neighbourhood searches.
Google and Meta campaigns split by branch catchment, so ads for each gym only served in the area that gym could realistically convert, with no metro-wide overlap.
Location exclusions plus shared negative-keyword lists across all five accounts, engineered so two FitLife branches can never bid on the same impression.
Google Business Profiles cleaned up and optimised per location — categories, photos, service areas — to push each gym into the local pack for its own neighbourhood.
Short-form video filmed inside each gym showing the rooms, classes, and equipment members would actually use, then routed to the campaigns for that specific branch.
A single view tracking cost per join, sign-ups, and spend for each of the five locations, so budget could shift toward the branches returning the best cost per membership.
+215%
New members
−52%
Cost per join
5
Locations
Top 3
Local pack ranking
Cost per membership halved while joins climbed.
Audited all five accounts and mapped where branches were bidding against each other.
Drew catchment areas per gym and defined the geo-fence for each campaign.
Shipped five per-location landing pages with local schema and single-action booking.
Rebuilt Google and Meta campaigns with location exclusions and shared negatives.
Shot Reels inside each gym's real rooms and matched them to the right branch.
Went live, tracked cost per join per branch, and shifted budget to the winners.
Book a consultation and we’ll map the fastest path from where you are to a result worth writing up.