San Francisco SEO
I used to think San Francisco SEO was just about a Google My Business listing – until I saw a client drop three map spots because of a single NAP inconsistency.
Start here
- Claim and fully optimise your Google Business Profile with accurate name, category, hours, attributes, and quality photos.
- Audit your NAP across every directory (GBP, Yelp, Apple Maps, Bing, industry sites) and fix all inconsistencies.
- Build a unique, content-rich landing page for each neighbourhood you serve.
- Manage your reviews actively: respond to every review and aim for recent, high-quality customer feedback.
- Implement LocalBusiness structured data on your site, including areaServed for service-area businesses.
Plain-English take
If you run a business in San Francisco, local SEO is the difference between being found on Maps and being invisible. I have optimised for bakeries in the Mission, law firms in SoMa, and plumbers in the Marina, and the pattern is always the same: get your [Google My Business](/google-my-business/) right first. Use the exact business name, pick the most precise primary category, fill out hours and attributes, and add high-quality photos. Then audit your NAP across every directory via [Citation SEO](/citation-seo/). I once saw a chiropractor drop from the local pack because Yelp had "Suite 200" while his site said "Ste 200". That mismatch cost him calls for two months before I caught it. San Francisco has dozens of neighbourhoods, and Google uses those as ranking signals. A single generic page for "San Francisco dentist" will not rank for "dentist in the Castro". You need a dedicated page per area with unique content, local photos, and testimonials from that neighbourhood, supported by solid [Local SEO](/local-seo/) practices. Do not write thin pages. Each one must serve a real user looking for a service in that specific district. That is the core of San Francisco SEO: fix the fundamentals, then scale neighbourhood presence.
When it actually matters
San Francisco SEO matters most when your revenue depends on people searching while they are already out. A neighbourhood coffee shop, a locksmith, a moving company – these businesses live or die by Google Maps visibility. I track ranking data via a [Local SEO Audit](/local-seo-audit/) for a few clients in SF, and the difference between position 1 and 3 in the local pack can mean 60% fewer calls. That is a direct revenue hit. It also matters if you serve multiple neighbourhoods. A single generic page for "San Francisco plumber" will not appear when someone searches "emergency plumber Marina". You need a page for each district with its own content, testimonials, and citations – a key item on any [Local SEO Checklist](/local-seo-checklist/). I have seen a client in the Castro rank on page one for "Castro handyman" only after creating a dedicated page. Another scenario: you are a service-area business like a cleaning company. If you do not define your service area correctly in your [Business Profile](/business-profile/), Google may not show you for searches outside your street address. I have also learned that this matters more on mobile. Over 60% of local searches on mobile lead to a call or visit within 24 hours, so if your site is slow or your GBP is incomplete, you lose that window. In a city with thousands of businesses, reviews are a tiebreaker. A client with 4.8 stars and 100 reviews consistently outranks a competitor with 4.5 stars and 30, even though the competitor had been in business longer. The algorithm weights recent, high-quality reviews. So San Francisco SEO matters as soon as you have any competitor who is actively managing their reviews.
What I got wrong
I have made several mistakes in San Francisco SEO. First, I underestimated how strict Google is about NAP consistency. I left "Street" on GBP but used "St" on Yelp. Google treated them as separate locations, splitting the citation signal. It took me months to find and fix all inconsistencies. Second, I created thin neighbourhood pages. I wrote a 200-word page for "Marina dentist" with generic filler. It ranked for exactly nothing. The winning pages have unique content: local events, photos, staff details, specific services for that area. Third, I ignored the impact of Core Web Vitals on local ranking. A client's site had a 6-second LCP. After compressing images and removing a heavy slider, the site loaded in 2 seconds and the local pack position improved from 4 to 2 within three weeks. I also failed to implement LocalBusiness schema correctly. I used the wrong '@type' and omitted the 'areaServed' property. Once I fixed it, the business became eligible for more local search features. Finally, I once advised a client to use a virtual office address in SF for GBP because he lived in Oakland. Google removed the listing after a verification video. Service-area businesses must hide their address if they do not serve customers at that location. Learn from my mistakes.
Next step
Quick answers
Do I need a physical address in San Francisco to rank in the local pack?
Not necessarily. Service-area businesses can hide their address and define a service area. But you must verify with video that you operate in that area. Without a real SF presence, Google will eventually remove the listing. For ranking, proximity still matters, but a hidden address with a wide service area can work if you have strong reviews and citations.
How many neighbourhood pages should I create?
One per district you actively serve. Do not create pages for neighbourhoods where you have no customers or cannot provide service. Start with the most searched ones: Mission, SoMa, Castro, Marina, North Beach. Each page must be unique. I usually audit search volume first. If 'Mission dentist' gets 500 searches a month and you have 10 clients there, make a page. But avoid creating pages for every zip code – that looks spammy.
Can I use the same phone number on multiple neighbourhood pages?
No. Google expects a unique local phone number for each location or service area. Using the same number across pages can confuse the citation signal. For a single-location business serving multiple neighbourhoods, use the main number on all pages but make sure the address and GBP are consistent. For multi-location, each location needs its own number and profile.
Sources
Primary documentation is linked directly. Anything commercial is marked nofollow.
- Google Search Central — Backs up the importance of structured data and technical SEO for local visibility.
- Google Business Profile Help — Official guidance on profile optimisation and verification for San Francisco businesses.
- Moz Local SEO Guide — Reference for citation consistency and local ranking factors.
- Google Search Central: Core Web Vitals — Supports the claim that site speed affects local pack position.
- Google Search Central: Local business structured data — Details the correct LocalBusiness schema properties for SF businesses.
Notes from Callum Bennett.