Short answer

Often because the Business Profile isn't verified or is incomplete, or because other businesses are a closer match or simply closer to the person searching. Google ranks local results on three things: relevance, distance and prominence.

How Google decides who shows up

Google names three factors (Google Business Profile Help):

  • Relevance: “how well a Business Profile matches what someone is searching for.”
  • Distance: “how far each business is from the customer who's searching.”
  • Prominence: “how well-known a business is.”

Distance is why you can appear for one person and not another. Search from your shop and you may be first; search from across town and you may not appear at all.

Common reasons, and what to do

  • Not verified. Google says to verify “so it's more likely to show up in search results.”
  • Incomplete. “Businesses with complete and accurate info are more likely to show up in local search results.” Fill in categories, hours, services, website and photos.
  • Wrong category. Google asks you to “choose the fewest number of categories it takes to describe your overall core business”, so pick the one that matches what customers search.
  • Few reviews or replies. Prominence includes what others say about you. Google also notes that “when you reply to customer reviews, it shows that you value their feedback.”
  • A rule problem. Stuffing extra words into your business name can backfire: “Including unnecessary information in your business name isn't permitted, and could result in the suspension of your Business Profile” ( Google's guidelines).

No storefront?

If you travel to customers rather than having them come to you, you can still have a profile; you hide your address and list the areas you serve. Here is how that works.

Sources