Mobile Click-to-Call Small Business: Hours, Maps
Opening answer (BLUF)
A mobile visitor who already wants you can still leave empty-handed. The page looked fine on a laptop. On a phone, the number is plain text they have to copy, the Call and Directions links sit on top of each other, hours are buried in the footer, and the map is a tiny embed they cannot pinch without losing the listing. That is not a speed problem. It is a booking problem.
Mobile click-to-call small business work is the last ten seconds of a local visit: can they tap the number and actually dial, see whether you are open (or what to do if you are not), and open directions in the maps app they already use. We design those choices on purpose. Below is how we lay out phone links, tap targets, hours modules, and map links so a local visit turns into a call or a visit, including after you have locked the door.
The phone number has to be a real call
If the number is only text, you are asking a one-handed visitor to select, copy, switch apps, and paste. Many will not. The fix is a `tel:` link: the same number they can read, wrapped so a tap opens the phone app.
Apple documents the `tel` URL scheme for web pages and native apps. On iOS, tapping a telephone link in a webpage shows a confirmation alert, then dials if the person accepts. Safari also auto-detects numbers that look like phone numbers, which is handy until it turns an invoice ID or a suite number into a fake call button. If that happens, Apple’s guidance is to turn detection off with a `format-detection` meta tag and then create explicit phone links for the real number.[1]
The internet standard behind those links is RFC 3966 (December 2004). It defines the `tel` URI as an identifier for a telephone number, not a guess about how someone dials from a hotel PBX. For a public page, use the global form that starts with `+` and the country code. Visual separators (hyphens, parentheses) are allowed in the URI for people who read the code. Spaces are not. The spec also says the visible link text should be the number itself, so visitors can predict what will happen when they tap.[2]
What that looks like in practice for a Charlotte shop:
- Visible text: the local formatted number (area code in parentheses)
- Link target: `tel:+1-` plus the same digits, no spaces
- A second control that says Call now, pointing at the same `tel:` URL, sized as a real button
RFC 3966’s HTML examples use that global `+` form in the `href` even when the visible text is a local format.[2]
Put that pair in the header, on the contact block, and near the service they just read. Do not hide the number inside an image. Do not make “Contact us” the only path if the next step is a phone call. Google’s own ads guidance is blunt on this: display phone numbers prominently for desktop visitors and enable click-to-call for mobile visitors, because people who land on the site still need a way to dial.[3]
One more owner detail: schedule the expectation, not just the link. Google’s call-ad advice is to drive calls when someone can answer, so you do not spend money (or trust) on a ring nobody picks up.[3] The same rule belongs on the website. If you close at 5 p.m., the Call button can stay. The copy next to it should not pretend a person is sitting there at 9 p.m.
Tap targets: the Call button has to be hittable
A perfect `tel:` link still fails if the hit area is a 12-pixel line of blue text sitting on top of Directions. Fingers are large. Screens shake in a parking lot. One-handed thumbs miss.
WCAG 2.2 Success Criterion 2.5.8 (Target Size Minimum, Level AA) requires pointer targets of at least 24 by 24 CSS pixels, or enough spacing that a 24-pixel circle around an undersized target does not hit a neighbor. The intent is fewer accidental activations for people with tremors, limited dexterity, or a phone on a bus. W3C notes that 24 is a floor, and that important controls should aim at the stricter 2.5.5 Target Size (Enhanced) size of 44 by 44 CSS pixels.[4]
That enhanced size (Level AAA) is the one we treat as the working target for Call, Text, and Get directions. W3C calls out touch as a coarse pointer: a finger is larger than a mouse cursor and it covers the spot you are trying to hit. Larger targets matter more when the control is used often, when a miss is hard to undo, or when the control sits near the edge of the screen.[5]
Apple’s Human Interface Guidelines match that instinct. For iOS and iPadOS, the default control size is 44 by 44 points, with a hard minimum of 28 by 28. Spacing is treated as part of the size: about 12 points of padding around bezeled controls, and about 24 points around elements that have no bezel, so two buttons do not steal each other’s taps.[6] Apple’s buttons guidance repeats the same 44 by 44 point hit region as a general rule for fingertips, pointers, and other inputs.[7]
Nielsen Norman Group’s 2019 touch-target article goes one step further into physical size. Citing a one-handed thumb study, they recommend a minimum rendered size of 1 cm by 1 cm (about 0.4 in), because pixel numbers lie across screen densities. They also document “view-tap asymmetry”: labels you can read but cannot hit, plus slips when targets are stacked too tightly. Crowded map pins are a classic fail. A list of locations, or a single Get directions button, is usually kinder than a cluster of tiny markers.[8]
Google’s web.dev tap-target note (last updated March 2020) recommends about 48 device-independent pixels on a properly set mobile viewport, which is roughly 9 mm, close to a finger pad. Extra padding can grow a 24-pixel icon up to that 48-pixel hit area. They also recommend about 8 pixels of space between targets, and a `pointer: coarse` media query so you enlarge hit areas on touchscreens even when a tablet is wide.[9]
How we apply that on a local page:
- Call, Text, and Directions are separate buttons, not three text links in one sentence.
- Each is at least the 44-pixel class, with gap between them.
- Primary action (usually Call during open hours, or Book / Request a callback when you are closed) is the largest.
- We do not park a tiny phone icon next to a 10-pixel number and call it done.
Sticky call bars: useful, if they stay small
A sticky Call bar at the bottom of a phone screen is one of the highest-leverage mobile click-to-call small business patterns we ship. The person who scrolled through services should not have to hunt back to the header. The risk is chrome that eats the page.
Nielsen Norman Group’s 2021 sticky-header research is about top bars, but the tradeoffs apply to a bottom call bar too. Persistent chrome steals content. On a small screen, keep it as short as you can while still meeting tap-target size, use an opaque high-contrast bar so it does not melt into the page, and skip theatrical slide-in motion. If the bar is not helping a real task, do not keep it.[10]
What we like on local service sites:
- A slim footer bar with Call and Directions (or Call and Book).
- The same `tel:` and maps URLs used in the header, so you are not maintaining two numbers.
- Enough bottom padding on the last section of the page so the bar never covers hours, the form submit button, or a legal line.
- No second floating widget fighting it for the thumb zone.
If you already have a sticky header with a hamburger, a second sticky bar is a lot of chrome. In that case we often keep the header thin and put the Call control in the bottom bar only. Two fat sticky regions leave almost no room to read.
Hours that tell the truth after 6 p.m.
People look you up after work, on Saturday morning, and on holidays. If the site says “Open” when the door is locked, they drive over and leave a one-star review. If the site hides hours, they assume you are closed and call the shop that posted a schedule.
Show hours where a phone user will see them without a scavenger hunt: near the phone number, on the contact block, and in a short “today” line near the primary Call button. A full week still belongs on the contact page. The “today” line should name the day, the open and close times, and the time zone if you serve more than one.
Google Business Profile Help tells owners to publish regular customer-facing hours, to split a day into two ranges when there is a lunch break, and to use special hours for holidays or short closures (six days or fewer). Separate “more hours” can cover delivery, takeout, or other service windows that are not the main door hours.[11] Google’s representation guidelines add that hours should be the regular customer-facing hours, and that some businesses (appointment-only, venues with showtimes) should not fake a simple open/close grid.[12]
Keep the website in lockstep with that profile. Name, address, phone, and hours should match Google Business Profile, the contact page, and the footer. That is the whole pairing note. The rest of the work is the page in the visitor’s hand.
On the site itself, we also mark hours in `LocalBusiness` structured data. Google Search Central treats `telephone` and `openingHoursSpecification` as recommended properties. The docs show how to encode weekday ranges, overnight close times, 24-hour days, fully closed days, and seasonal `validFrom` / `validThrough` windows. They also show departments with their own phone numbers and hours, which matters if the shop and the service bay are not the same clock.[13]
After-hours copy is part of the hours module, not a separate “nice to have”:
- If you are closed, say so, and say when you open next.
- If you return voicemail in the morning, say that next to the Call button.
- If an after-hours emergency number is real, link it with its own `tel:` and label it as emergency, not as the main line.
- If you take web requests overnight, put Request a callback or the form above the fold on mobile, and tell people you will reply when the shop opens.
A Call button with no closed-state message trains people to hang up angry. A form with no hours trains them to wait for a reply that will never come tonight.
Maps: link out more often than you embed
A live map embed feels complete. On a phone it is often the worst control on the page. Pins sit closer than a thumb. The embed steals scroll. A visitor who wanted “how do I get there” now has to fight the map instead of opening Apple Maps or Google Maps.
W3C even carves map pins out of the 24-pixel target rule when the pin must sit on the real coordinates (the “essential” exception). That is honest: a dense map cannot give every pin a 24-pixel island. The recommended follow-through is equivalent functionality, such as a list or a directions link.[4] NN/g’s 2019 testing saw the same thing: users make a “focus face” on crowded mobile maps, and a list view is the kinder default.[8]
What we put on most local pages:
- The street address as real text (suite, floor, “around back,” parking note).
- A Get directions button that opens a maps URL.
- Optional static map image that is not the only way to get the address.
Google’s Maps URLs are cross-platform. One `https://www.google.com/maps/dir/?api=1&destination=...` link opens the Google Maps app when it is installed, or Maps in the browser if it is not. You can pass a place name, address, or coordinates. If you need the exact listing, add a Place ID so the pin does not snap to the wrong shop in a strip center. `api=1` is required.[14]
Apple’s archived maps URL scheme uses ordinary `http` links (typically `maps.apple.com`) and opens Safari or the Maps app. For “from here to our door,” the useful parameter is `daddr` (destination). You can omit the start address so the phone uses the visitor’s location. `dirflg` can prefer driving, walking, or transit.[15]
We usually ship both a Google directions URL and an Apple maps URL, or one directions button that uses a Google Maps URL (which still works in a browser on iPhone) plus the written address. The point is not brand loyalty. The point is: they should not retype your suite number while standing in a parking lot.
Skip the full interactive embed unless the page is a store locator with many sites. If you do embed, keep the Get directions link outside the iframe. Iframe chrome is a poor tap target, and some visitors block third-party maps entirely.
After hours is when a lot of booking decisions happen
The visit that matters is often not during your Tuesday lunch rush. It is 8:40 p.m. on a Sunday, when a homeowner is standing in a wet basement or planning tomorrow’s errands. They will call the business that makes the next step obvious.
Design the closed state as carefully as the open state:
- Truthful status. “Closed. Opens Monday at 8:00 a.m. ET.” beats a green dot.
- One next action. Voicemail, text, or a short form. Not all three fighting.
- A voicemail script that matches the site. If the site says you return calls by 9 a.m., the greeting should say the same thing.
- Holiday exceptions on the page, not only on Google. Special hours that exist only on the profile leave the website lying.
Google’s hours tools exist so customers see temporary changes. Special hours cover holidays and short closures. More hours cover service-specific windows.[11] Mirror those on the site the same day you change the profile. A visitor who came from Search still lands on your pages. If the page disagrees with the listing, they trust neither.
This is also where tap targets and `tel:` links earn their keep. An after-hours visitor is often tired, outside, or holding something. They get one clean Call control, one Directions control, and a sentence about what happens next. That is the whole conversion.
Practical takeaways
Use this as a mobile pass on your homepage and contact page:
- Every public number is a `tel:+1-...` link whose visible text is the number, plus a Call button that uses the same URL.[1][2]
- Call, Text, and Directions are large, spaced targets (plan for 44 CSS pixels or better, closer to 48 on coarse pointers), not a stack of tiny text links.[4][5][6][9]
- If you use a sticky Call bar, keep it thin, high contrast, and clear of the form and the hours line.[10]
- Hours include today, the full week, breaks, and the closed-state next step. Structured data matches the text people see.[11][13]
- Name, address, phone, and hours match your Google Business Profile. Then stay on the page and make the buttons work.[12]
- Prefer a Get directions link (Google Maps URL and/or Apple `daddr`) plus a written address over a cramped embed.[14][15]
- After hours, the primary action may be “request a callback,” not a silent ring.
If you only change one thing this week, make the number tappable and the hours honest. That pair books more work than another hero slideshow.
How we can help
We build this into the page, not as a plugin afterthought. On a Forged Site we ship WCAG 2.2 AA checks, including target size, on every deploy. On custom web design work we treat Call, hours, and directions as conversion UI: real `tel:` links, sized buttons, an hours module that can flip to a closed state, and map links that open the app on the phone.
If you serve Charlotte and the surrounding metro, the same layout choices support local SEO because the visible NAP and hours stay consistent. If you want us to walk your current mobile homepage and contact page, contact Idea Forge Studios and we will tell you what is blocking the tap.
Citations
- Apple Developer Documentation Archive, “Phone Links” (iPhone URL Scheme Reference). https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html
- IETF RFC 3966, “The tel URI for Telephone Numbers” (December 2004). https://datatracker.ietf.org/doc/html/rfc3966
- Google Ads Help, “Drive more calls to your business.” https://support.google.com/google-ads/answer/6175276?hl=en
- W3C WAI, “Understanding SC 2.5.8: Target Size (Minimum) (Level AA).” https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html
- W3C WAI, “Understanding SC 2.5.5: Target Size (Enhanced) (Level AAA).” https://www.w3.org/WAI/WCAG22/Understanding/target-size-enhanced.html
- Apple Human Interface Guidelines, “Accessibility.” https://developer.apple.com/design/human-interface-guidelines/accessibility
- Apple Human Interface Guidelines, “Buttons.” https://developer.apple.com/design/human-interface-guidelines/buttons
- Aurora Harley, Nielsen Norman Group, “Touch Targets on Touchscreens” (May 5, 2019). https://www.nngroup.com/articles/touch-target-size/
- web.dev, “Accessible tap targets” (last updated March 31, 2020). https://web.dev/accessible-tap-targets/
- Page Laubheimer, Nielsen Norman Group, “Sticky Headers: 5 Ways to Make Them Better” (April 4, 2021). https://www.nngroup.com/articles/sticky-headers/
- Google Business Profile Help, “Edit your business hours.” https://support.google.com/business/answer/15300403?hl=en
- Google Business Profile Help, “Guidelines for representing your business on Google.” https://support.google.com/business/answer/3038177
- Google Search Central, “Local business (LocalBusiness) structured data.” https://developers.google.com/search/docs/appearance/structured-data/local-business
- Google Maps Platform, “Get Started | Maps URLs.” https://developers.google.com/maps/documentation/urls/get-started
- Apple Developer Documentation Archive, “Map Links” (iPhone URL Scheme Reference). https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html