Yeti Design Co.
Four build slots open this month Request a slot
Home Work Approach Services Pricing Guides About Request a slot
← Back to guides

How to add a Book Now button to your site that actually works

The short version

Put one button labelled Book Now in the header of every page, visible on a phone before anyone scrolls, and at least forty-four pixels tall so a thumb can hit it. Link it straight to your booking platform. And wherever the platform allows, deep-link to a single service or a single stylist instead of the front door, which quietly removes two or three taps. Keep it in the same tab on mobile so the back button still works, and skip the embedded widget unless you have tested it inside Instagram’s in-app browser. Then verify the whole path by booking a real appointment on a real phone and cancelling it.

Every booking platform hands you a link. Getting a stranger from your homepage to a confirmed appointment is a different job, and it is where most salon sites quietly leak.

The button is the funnel. Everything else on the site exists to get somebody to press it.

Where should the Book Now button go?

Not only the homepage. People land deep: on your color page from a Google search, on a stylist’s page from a link in bio. Every one of those is somebody’s first page, so the button sits in the header of all of them, in the same place, never moving and never changing wording.

On a phone it has to be visible before any scrolling happens. Test that literally: pick up your phone, load your site, do not touch the screen. If you cannot see a way to book, that is the whole problem.

The rest of the navigation can collapse into the hamburger. The booking button never does. Menus exist to hide things. This is the one thing you do not hide.

Call it “Book Now”

The label is not a style choice. It is a promise about what happens next.

“Contact” promises a conversation: write something, wait for a reply, agree on a time. She does not want a conversation. She wants Thursday at two. “Appointments” is a category, not an instruction, and sounds like a page about cancellation policies. “Schedule” reads like admin. A chore for later.

“Book Now” says the action and the timing in two words. The honest exception is a med spa or tattoo studio that genuinely gates on a consultation. There, “Request a Consultation” is true. Pick the label that is true and use it everywhere. If the header says Book Now and the footer says Schedule, a stranger reads two different things.

Big enough to hit one-handed

Apple’s Human Interface Guidelines put the minimum touch target at forty-four by forty-four points. Google’s Material guidelines say forty-eight. Either is a floor, not a target.

Picture the client: phone in one hand, thumb swinging in an arc, standing in a grocery line. A thumb lands in an area, not on a point, and it is least accurate at the top of the screen. So the button needs real height, real padding, and clear space from anything else tappable. A mis-tap that opens Instagram instead of your booking page costs you the appointment. She is in an app now, and she is not coming back.

It also has to look like a button. Solid fill, real contrast. A text link that happens to say “book” is not a booking button.

Three ways to connect it, and only one is usually right

One: link straight to your booking page. The platform’s own URL, same window. Simple, fast, always works, and a good default.

Two: deep-link to one service or one stylist. Same idea, sharper aim. The trick most owners never learn.

Three: embed the widget in a frame on your page. Sounds like the premium option. Usually is not.

Deep links, and how to find yours

Square, Vagaro, Boulevard and GlossGenius all generate URLs that point at a single service or a single staff member inside your booking flow, rather than at the front door of your booking site.

That changes what a button can do. The one beside balayage on your color page opens the flow with balayage already chosen. A stylist’s photo on your team page opens her calendar and nobody else’s.

What it removes is not taps so much as decisions. A menu of thirty services (single process, root smudge, foilyage, toner, gloss) is where a first-time client stalls, because she has to know the right name for what she wants. If the page she came from already knew, the booking flow should already know.

How to find your own deep links

Open your public booking page in a normal browser and click through it as a client would, watching the address bar. At the moment a service or staff member is selected, the URL changes. Copy it at exactly that step, then paste it into a private window to confirm it works for somebody who is not logged in. Take the client-facing link, never one from your owner dashboard. Those need a login and dead-end a stranger. Naming varies; look in settings for a share, marketing or online-booking area. Re-check after any platform redesign, because URL formats change.

Why embedding usually loses

An embedded widget keeps the client on your domain, which sounds better than it turns out to be. You are loading somebody else’s whole booking application inside a frame, so the page gets slow. The frame’s height fights your layout as the flow changes steps. On a phone the inner scroll traps the outer one, so the page feels stuck. And in a restricted browser, the frame breaks first.

Embed only if your platform offers a genuinely light one and you have tested it on a phone, on cell data, from your own Instagram bio. Otherwise link out. A clean handoff beats a frame that does not work.

The Instagram browser is where it breaks

A lot of your clients arrive from a link in bio, which means they never open Safari or Chrome. They open Instagram’s own in-app browser. It is a more restricted place, with tighter handling of third-party cookies, blocked pop-ups, and its own quirks about new windows.

Things that work on your laptop fail there with no error at all. The widget renders as a blank rectangle, the pop-up never appears, and nothing on screen says anything is wrong. She decides the site is broken and closes it.

Four habits survive that browser: keep the path short, never open pop-ups or new windows, prefer a plain link to an embed, and never require a login. Then test it the honest way: put the link in your own story and book from your phone.

Do not open booking in a new tab on a phone

Opening links in a new tab is a desktop habit, and the instinct behind it is protective: do not lose them, keep my site open behind.

On a phone it backfires. The back button no longer returns to your site, because there is nothing behind the new tab. In an in-app browser, a new window can open a stack she cannot get out of. And some block it outright, so the tap does nothing at all. The worst of the three. She taps twice and leaves.

Same tab. The back button is the most-used control on a phone, and it quietly keeps people from giving up.

Sticky mobile bars: when they help, when they annoy

A thin bar pinned to the bottom of the screen with one booking button in it. Done right it is among the highest-value things on a phone layout, because it sits where the thumb already rests. It earns its place on long pages where the header has scrolled away: a service menu, a price list, a gallery.

It annoys when it covers what she is reading, competes with a booking button already on screen, slams in over the hero like an ad, or hides your form fields with no way to dismiss it.

The rules that keep it honest: one bar, one action, appearing only after the first screen has scrolled past. Roughly fifty-six to sixty-four pixels tall. Add matching bottom padding so nothing sits under it permanently, and hide it when a keyboard is open. Never stack it with a cookie banner and a chat bubble. Three floating things is a website arguing with itself.

Now go book an appointment on your own site

This is the only test that counts, and almost nobody does it. Real phone, wi-fi off so you are on cell data like your clients. Book a genuine appointment through to a confirmation. Then cancel it.

  • Arrive from a Google result: search your own name, tap through, book.
  • Arrive from your Instagram link in bio: the path that breaks.
  • Start on a deep page, not the homepage. Is the button in that header too?
  • Tap a deep-linked service button. Did the right service arrive preselected?
  • Press back from the booking page. Does it return you to the site, or nowhere?
  • Check the confirmation lands, and reads like it came from you.
  • Cancel it, and confirm the slot reopens on your calendar.

Then have somebody who is not you do it while you watch and say nothing. You know where the button is, which is what makes you the wrong tester. Repeat after every platform update. Fifteen minutes, twice a year.

What good looks like

One label, used everywhere. In the header of every page. Visible on a phone without scrolling. Thumb-sized, with room around it. Same tab, never a new one. Deep-linked to the service or the stylist wherever the platform allows. Tested from inside Instagram’s browser by somebody who is not you.

None of that is a design problem exactly. It is a discipline problem. But it is the difference between a site that looks nice and a site that fills your chairs.

It is the first thing I set up in any hair salon website design, and the last thing I check before a site goes live.

Want somebody to walk the whole path with you?

I build the site and wire the booking in: Square, GlossGenius, Vagaro, Boulevard, Acuity and the rest. Deep links included, tested on a real phone before launch. $1,999 flat, a year of hosting included, live seven days after we start. Twenty minutes on the phone is enough to know whether it fits.

Request a slot →