The short version
Yes, some. How much depends almost entirely on how you embed it. A Vagaro widget is another company’s code running inside your page: it needs its own DNS lookup and connection, it downloads and runs its own JavaScript, and it usually arrives late and pushes your layout around when it lands. Above the fold it can drag out Largest Contentful Paint. With no space reserved for it, it causes layout shift. And while its scripts run, it makes taps feel sticky. None of that means leaving Vagaro. It means reserving the widget’s space, keeping it off the homepage, loading it only when someone taps Book, or simply linking out to your Vagaro page instead.
Vagaro gives you a snippet. You paste it in, the calendar appears, and the job feels done. Then someone tells you your site is slow, and the snippet is the first thing anyone points at.
They are half right. Here is what it actually costs, and how to keep it without paying full price.
What did you actually paste in?
Booking snippets come in two shapes. One is an iframe: a tag that says put a whole second web page right here, and load it from vagaro.com. The other is a script widget: a tag that downloads a JavaScript file from Vagaro’s servers and lets that file build the booking interface directly inside your page.
Either way, the part your client sees is not coming from your host. Your hosting can be flawless and the widget can still be the slowest thing on the page, because you do not control it.
The four costs, roughly in order
One: a whole new connection. Before a single byte of the widget arrives, the phone has to look up a new domain name, open a connection to it, and negotiate an encrypted handshake. Your own domain already paid that toll. The second domain pays it again, from scratch.
This is the piece owners underestimate, because it has nothing to do with file size. On cellular the bottleneck is rarely bandwidth. It is latency, the delay on every round trip. A second domain means a fresh set of them before anything can render. That is why a widget that feels instant on the salon Wi‑Fi can feel dead in a parking lot with two bars.
Two: third-party JavaScript. A booking widget is not a picture of a calendar. It is a small application: date logic, staff and service lists, availability lookups, a cart, a payment step. All of it has to be downloaded, parsed and executed, and execution happens on the main thread, the same one the browser uses to answer taps.
Three: rendering a second document. An iframe is not a box on your page. It is another entire page inside your page, with its own HTML, stylesheets, fonts and scripts. The phone is now loading two websites, and the older the phone, the more that second document hurts.
Four: the shove. The widget arrives after your page has already drawn itself. Its container was zero pixels tall a moment ago and is now six hundred. Everything underneath jumps down. If a client’s thumb was on its way to a link, she just tapped something else.
Which Core Web Vitals it hits, and how
LCP: Largest Contentful Paint. How long until the biggest thing in the opening screen appears. The embed only hurts it if the embed is up there. Put a booking calendar above the fold and your LCP is hostage to Vagaro’s servers rather than yours. Google’s threshold for good is 2.5 seconds, and third-party round trips are a poor way to spend it.
CLS: Cumulative Layout Shift. The shove, scored. A late embed with no reserved height is a textbook cause. Google’s threshold for good is 0.1, and it is the easiest of the three to fix.
INP: Interaction to Next Paint. How quickly the page answers a tap. While the widget’s JavaScript is executing, the main thread is busy and taps queue behind it. Nothing looks broken. It just feels stuck, which is what people call laggy. Google’s threshold for good is 200 milliseconds.
One nuance worth knowing: a cross-origin iframe usually gets its own process in a modern browser, so its scripts are less able to block yours. A script widget runs in your page, on your main thread, with no such wall. That is why the two are not equally expensive.
Three ways to put booking on your site, in cost order
Most expensive: the script widget. Its code runs alongside yours, competing for the same main thread. Most flexible, most likely to be felt in INP.
Middle: the iframe embed. Still a second connection and a second document, still slow to arrive, still a layout shifter. But better walled off from the rest of your page.
Cheapest by an enormous margin: a plain link. One anchor tag. No new connection, no script, no shift, no cost at all until someone taps it. And they land on Vagaro’s own booking page, which is built and tested for booking in a way an embed squeezed into your sidebar is not.
A styled link that says Book on Vagaro → weighs essentially nothing, cannot shift your layout, cannot block a tap, and cannot fail to load. If the embed is your suspect, this is the one-line fix. Try it for a week and re-measure.
Keeping the embed without paying full price
Reserve its space. Give the container a fixed minimum height that roughly matches the widget. The gap sits there quietly until the calendar fills it, and nothing jumps. That kills the CLS problem outright, in about a minute.
Move it off the homepage. An embed the homepage never loads cannot slow the homepage down. Your homepage gets a link; a dedicated booking page gets the calendar.
Load it on interaction. The best of both. Show a real button. When someone taps it, then insert the embed. Nothing loads for the visitors who came to check your hours, look at your balayage work, or find out whether you take walk-ins. And the ones who came to book get the whole widget the moment they ask for it.
Lazy-load the iframe. If the embed lives below the fold, adding loading=“lazy” to the iframe tells the browser not to fetch it until the visitor scrolls near it. Free, and supported everywhere that matters.
This is roughly the default on every hair salon website design I build: a fast link in the header, the real widget on its own page, its space reserved, nothing loading before someone asks for it.
How to measure it yourself
Go to pagespeed.web.dev, paste the URL of the page with the embed, and read the mobile tab. Desktop always flatters you and is not where your clients are.
Then do the part most people skip: run the same test on a page without the embed. Your About page will do. The difference between those two reports is the widget’s cost, in your setup, on your host, today. Everything else is guesswork.
Inside the report, two sections name names. Reduce the impact of third-party code lists each outside domain and how long it held the main thread. Vagaro appears by name if it is costing you. Avoid large layout shifts points at the exact element doing the shoving. And the panel at the very top, when it appears, is field data from real visitors over the past month. Trust it over any lab number below it.
Why a slow booking widget costs you appointments
Picture where booking actually happens. She is in her car between a school pickup and a meeting. One or two bars. She wants a fill before a wedding, a root touch-up, or the balayage she has been thinking about since March. She taps your link. Your page appears. And then there is a blank rectangle where the calendar should be.
Three seconds pass. Nothing errors. Nothing tells her to wait. She goes back to the search results and taps the next salon.
That is the whole cost, and you will never see it. No complaint, no missed call to return. The appointment simply never existed. A slow booking widget does not fail loudly. It quietly returns nothing, and something that returns nothing looks exactly like a salon that is closed.
What I would actually do
Reserve the space today. A minute of work, the ugliest symptom gone. Move the widget to its own booking page this week. Keep a plain, fast Book now link everywhere else, starting with the header, where people look first. Then measure again in a month, on mobile, and believe the field data.
Vagaro is not the problem. Vagaro on your homepage, above the fold, with no reserved space, is.
Booking-first sites that still load fast
Want the booking to be the fast part?
I build hand-written sites for beauty businesses and wire your booking platform in properly: Vagaro, Square, GlossGenius, whatever you already use. $1,999 flat, a year of hosting included, seven days from brief to launch.
Request a slot →