Who this guide is for
Work through this guide yourself. Implement what you can. If you hit a wall - or want it done without spending six months learning it - we’re here. The knowledge is yours either way.
- Service and trades businesses (contractors, HVAC, plumbers, repair shops) whose phones aren’t ringing enough
- Professional-services practices (accountants, advisors, attorneys) with capacity to take on clients but not enough pipeline to fill it
- Wellness practitioners (med spas, massage therapists, healthcare agents) who depend on neighborhood trust and local discovery
Understanding the San Francisco search market
San Francisco isn’t a typical local search market. It’s one of the most competitive in the country, and the dynamics here are genuinely different from other metros.
Density is the core problem
Within a single neighborhood - Richmond, Noe Valley, SoMa - there can be a dozen businesses offering the same service. Google’s local algorithm has to decide who wins three Map Pack spots within a tight geographic radius. In a less dense market, you might be the only plumber in five miles. In SF, you’re competing against six within eight blocks.
Neighborhoods matter
SF residents search with neighborhood intent. “HVAC repair Inner Sunset” behaves differently than “HVAC repair San Francisco.” A healthcare agent in the Richmond District who ranks for “health insurance agent Richmond District San Francisco” is capturing intent that a city-wide term misses entirely.
The tech-savvy customer base raises the bar
SF consumers check reviews before calling. They compare ratings, read responses to negative reviews, and notice when a profile looks abandoned. A 3.2-star profile with no photos and outdated hours signals to a sophisticated local buyer that your business might be the same way. Trust signals matter more here than almost anywhere.
The good news
Most SF businesses are doing local SEO poorly. Their profiles are incomplete. Their websites aren’t optimized for local intent. Their content ignores the neighborhood-level queries their customers actually use. That’s your opportunity.
Google Business Profile optimization
Your Google Business Profile (GBP) is the single highest-leverage tool in local SEO. It’s free. It directly controls whether you appear in Google Maps and the Map Pack. And most SF businesses have it set up incorrectly - or barely at all.
1. Claim and verify your profile
Go to business.google.comand claim it. Complete verification - postcard, call, or email depending on category. Don’t skip this. An unclaimed profile can be edited by anyone.
2. Choose the right primary category
Your primary category is the most important field. “Plumber” outperforms “Home Services Contractor” for plumbing searches. “Medicare Insurance Agent” outperforms “Insurance Agency” for healthcare. You can add up to ten additional categories - use them all.
3. Write a description that tells Google (and customers) what you do
Your description (750 characters) should include your primary service, your location, and the types of customers you serve. Don’t stuff keywords. Write like a human. “Family-owned HVAC company serving the Sunset District, Inner Richmond, and West Portal” beats “HVAC services available” every time.
4. Add every service you offer
Each service you list becomes a searchable data point that expands what you’re eligible to rank for. A plumber who lists “water heater installation,” “drain cleaning,” “sewer repair,” and “emergency plumbing” is five times more rankable than one with a blank services section.
5. Upload photos - regularly
Profiles with photos get 42% more direction requests and 35% more website clicks. Upload exterior shots (so customers can find you), interior, your team, your work. Add new photos at least monthly. Google weights profile activity.
6. Accurate hours - including special hours
Incorrect hours are one of the most common GBP errors. If a customer shows up when you’re closed, or calls at 7 PM expecting you to answer because your profile says you’re open until 8, trust is broken. Set accurate regular hours. Add special hours for holidays. If you offer 24/7 emergency service, say so.
7. Use the Q&A section proactively
Google allows anyone to post questions. Business owners rarely respond. Post your own FAQs - “Do you offer free estimates?” “Do you serve the Bayview neighborhood?” - and answer them. This controls the narrative and populates your profile with natural language that matches real search queries.
8. Post updates consistently
Google Posts keep your profile looking active. Post at least twice a month. They expire after seven days for events - build it into your routine.
For a deeper dive into GBP strategy alongside technical SEO, see our local SEO services in San Francisco.
How to rank in Google Maps
Google’s local algorithm uses three primary ranking factors:
- Relevance - how closely your business matches what the searcher wants
- Distance - how close your business is to the searcher
- Prominence - how well-known and trusted your business is online
You can’t control distance. You can dramatically influence relevance and prominence. The Map Pack captures about 35% of all clicks for local-intent searches. If you’re not in the top 3, you’re essentially invisible for that search - not on page 2, off the board.
NAP consistency
Name, Address, Phone - these must be identical everywhere your business appears online. GBP, your website, Yelp, the SF Chamber of Commerce, industry directories. If your GBP says “J. Williams Designs” and Yelp says “JWilliams Designs,” Google sees inconsistency and trusts you less. Audit every citation. Fix every mismatch.
Citation volume and quality
Beyond the basics (Google, Yelp, Facebook), SF businesses should be listed in SF-specific directories: SF Gate business listings, SF Chamber of Commerce, neighborhood directories, and industry-specific platforms. Each accurate citation reinforces that your business is real, established, and trusted.
Website authority and relevance
Your website needs to clearly signal what you do and where. Local landing pages with neighborhood-specific content help Google understand your geographic relevance. A slow, mobile-unfriendly site hurts your local ranking directly.
Review signals
Quantity, quality, and recency all factor into Map Pack rankings. A competitor with 200 recent reviews and a 4.6 rating will outrank a competitor with 40 old reviews and a 4.1 rating, all else equal.
Behavioral signals
Clicks, calls from your profile, direction requests, and website visits from your GBP all tell Google users find your listing relevant. The more engagement, the more visibility.
Run a free NAP audit. Search your business name on Google, Yelp, Facebook, and three industry directories. Screenshot what you find. Fix every inconsistency. This alone can move your Map Pack ranking within 30–60 days.
On-page and technical SEO
Your website is the foundation everything else builds on. A well-optimized GBP pointing to a slow, thin, or poorly structured website will underperform. Google evaluates your site independently of your GBP - and the two need to reinforce each other.
Title tags and meta descriptions
Your page title is the first thing Google reads. Include your primary service and your location. “Plumber in San Francisco | [Business Name]” beats “Welcome to Our Plumbing Company.” Every page needs a unique 50–60 character title. Meta descriptions don’t directly affect rankings, but they affect click-through - write a compelling 155-character summary.
Heading structure (H1, H2, H3)
Every page should have exactly one H1 - the primary topic. Support with H2s for major sections, H3s for subsections. Clear structure = lower bounce rate = better engagement signals.
Local schema markup
Schema is structured data you add to your site’s code that tells Google exactly what your business is. LocalBusiness schema should include name, address, phone, hours, and service area. Without it, Google infers from page text. With it, you’re giving Google a confirmed source. Most SF business websites don’t have it - that’s a direct competitive advantage when you do.
Page speed
Google confirmed speed is a ranking factor. On mobile - where most SF local searches happen - a slow page means users leave before they see what you offer. Aim for a Lighthouse score above 80. Compress images. Minimize redirect chains. If your site loads in more than 3 seconds on mobile, you’re losing customers before they read your headline.
Mobile-first everything
Over 60% of local searches happen on mobile. Google indexes the mobile version first. If buttons are too small to tap, if your phone number isn’t a clickable link, you’re failing the test that matters most. Check your site on an actual phone, not a desktop browser window.
You can find free diagnostic tools for speed and mobile readiness in our free SEO tools section.
Content for local audiences
This is where most SF businesses leave ranking opportunities on the table. They have a website with five generic pages, none of them targeting the specific phrases their customers are typing.
Neighborhood-specific landing pages
One service-area page mentioning “San Francisco” isn’t enough to rank in 30+ neighborhoods. Build individual pages for the neighborhoods you actually serve: Richmond District, Inner Sunset, Mission, SOMA. Each page should reference specific local landmarks, customer types, and the kinds of jobs you do in that area. Don’t use a template-stuffing tool. Google detects those and penalizes them.
Service pages, not just a homepage list
Every distinct service you offer should have its own page - with its own keyword target, its own schema, its own call-to-action. A plumber with one page that lists 12 services will lose to a plumber with 12 pages, each fully optimized for one service.
Answer the questions your customers ask
What do prospects ask you on the phone before booking? Those questions are your content brief. Each one can become a blog post or FAQ entry. Pricing questions, scope questions, timeline questions - answer them publicly. That’s how you earn featured snippets, AI Overview mentions, and trust before the call.
Update existing content
Google rewards freshness. A 2022 blog post that still gets traffic is a candidate for a 2026 refresh - new stats, new examples, current pricing, updated screenshots. Re-publishing is often higher-ROI than writing something new from scratch.
Measuring whether it’s working
You can’t improve what you don’t measure. Three things to track monthly:
- Map Pack visibility - search your primary keyword + neighborhood from an SF location (or use a local rank tracker). Are you in the top 3? If not, where?
- GBP insights - Google gives you free data on profile views, searches you appeared in, direction requests, and calls from the profile. Watch these monthly.
- Phone-call attribution- the only metric that matters. Are you getting more calls than last month? Use call tracking if you can’t tell organically. Rankings are the mechanism - calls are the point.