Rebook a Past Vagaro Appointment with the Same Provider
Purpose
Given a signed-in Vagaro customer, re-book a previously completed appointment with the same service provider for a future date/time. The skill logs into the customer account, opens the appointment history, finds a past appointment, and uses Vagaro's built-in Rebook action — which deep-links to the original business's booking widget with the same service and same provider preselected — then selects a new future slot. This is a stateful, authenticated task: appointment history is gated behind a customer login and there is no public/API path to another person's booking history. Read-only by default — stop at the date/time selection screen; do not click the final Book/Checkout/confirm button unless the caller explicitly authorizes a real booking.
When to Use
- "Book me another appointment with the same stylist/barber/therapist I saw last time."
- "Rebook my last haircut with {provider} for next week."
- A concierge/assistant re-scheduling a recurring service (nails, massage, lashes, personal training) with the same person at the same business.
- Any flow that needs to reach a business's booking widget with the prior provider + service already pinned, for a returning customer.
Do not use this for first-time bookings (no prior appointment to rebook) or to browse availability anonymously — that's a plain booking/availability skill and needs no login.
Workflow
recommended_method: browser — this task is only possible through the authenticated consumer web app. Vagaro exposes no public API or unauthenticated deep-link for a customer's own appointment history, and the support.vagaro.com help pages that describe the flow are Zendesk-403'd to bots. A bare (non-stealth, non-proxied) Browserbase session is sufficient — the login page, business pages, and booking widget render cleanly with no Akamai/captcha.
Credentials are mandatory. Without the customer's Vagaro username/email + password (or a valid SSO session), the flow cannot start — myaccount/appointments redirects to /login. If no credentials are supplied, return {"success": false, "reason": "auth_required"} (see Expected Output).
-
Start a session and log in. Open
https://www.vagaro.com/login. Filltextbox: Username or Emailandtextbox: Password, then clickbutton: Login. (SSO buttons for Facebook/Google/Apple exist but require an interactive third-party session — prefer username/password.) Wait for the header to switch from aLoginlink to the account/profile menu. -
Open appointment history. Navigate directly to
https://www.vagaro.com/myaccount/appointments(also reachable via the profile dropdown → "Appointments"). This page lists Upcoming and Past appointments — switch to the Past view. -
Find the target past appointment. Match on provider name + service + business. Each past appointment row exposes a Rebook action.
-
Click "Rebook". This deep-links into the original business's booking widget at
https://www.vagaro.com/{business-slug}/book-now(observed canonical form.../appointments/book-now) with the same service and same provider already selected — this is the mechanism that guarantees "same provider." Confirm the provider's name appears in the booking header before proceeding. -
Select a future date/time. Use the Choose Date And Time control (Vagaro lets you "Select Up To 5 Dates"), or the First Available Time button, to pick a future slot offered for that provider + service.
-
Stop — read-only. Capture the selected slot(s) and the pinned provider/service, and return them. Do not advance to the checkout/confirm step unless the caller explicitly authorized a real booking.
Manual "same provider" fallback (when the Rebook button is unavailable)
If a past appointment row has no Rebook button (older records, cancelled/no-show items, or a business that changed its booking settings), reconstruct the booking manually:
- Open the business page
https://www.vagaro.com/{business-slug}(the business name is shown on the past appointment). - Open the Staff tab → find the same provider → click their Book action (pins the provider). URL becomes
/{business}/book-nowwith the provider carried in the header. - Open the Services tab → click Book Now on the same service you had before (services are grouped by category with prices).
- Pick a future date/time and stop, as in steps 5–6 above.
Site-Specific Gotchas
- Auth wall is the defining constraint.
https://www.vagaro.com/myaccount/appointmentsredirects unauthenticated requests to/loginwith an encoded return URL. There is NO way to see a customer's past appointments without their credentials/session. If none are provided, the honest outcome isauth_required— do not fabricate results. - Customer account route map (menu links are
display:nonein HTML until logged in):/myaccount/profile,/myaccount/appointments,/myaccount/products,/myaccount/bookmarks,/myaccount/points,/myaccount/reviews,/myaccount/gift,/myaccount/packages,/myaccount/memberships,/myaccount/invoices,/myaccount/payrollhistory,/myaccount/familyFriends,/myaccount/notification,/myaccount/paymentmethods. Appointment history is/myaccount/appointments. - "Same provider" is pinned by the Rebook deep-link, not by a checkbox. Rebook carries service + provider into
/{business}/book-now. Always verify the provider name in the booking header after clicking — if the business later removed that provider, Vagaro may drop the pin and you must re-select on the Staff tab. /{slug}is a business namespace. Paths like/appointmentsresolve to a business page (e.g. "Eleven Ten Studio"), not a customer feature. Don't guess customer routes — customer features live under/myaccount/*.- No public API / no bot-readable docs. The internal endpoints are behind the authenticated app;
support.vagaro.comhelp articles return HTTP 403 to non-browser fetches (Zendesk anti-bot). Don't waste time trying to script an API rebook — confirmed unavailable. - Bare session is enough — do NOT add stealth by default. The pre-run probe reported no anti-bot, and login/business/booking pages all rendered on a plain session (no
--verified, no--proxies). Only escalate if a specific business page or the login POST starts returning challenges. browse snapshotcan return an empty tree (it sometimes prints only thebrowse"Update available" banner). Recover withbrowse get text body+browse get url+browse get title, and re-issue the snapshot afterbrowse wait timeout 2000.- Booking widget needs settling time. After
browse wait loadon a business page, wait ~2–3s before interacting with the About/Staff/Services tabs or the date/time control. - READ-ONLY. Vagaro's booking widget can lead to a real reservation and, for some businesses, a deposit/card charge. Never click the final Book/Checkout/confirm button unless the caller explicitly authorized a real booking.
- SSO logins are impractical for automation. Prefer Vagaro-native username/password; Facebook/Google/Apple require an interactive third-party auth session.
Expected Output
// Success — rebook prepared with the same provider, future slot selected, stopped before confirm
{
"success": true,
"business": "Eleven Ten Studio",
"business_slug": "appointments",
"provider": "Jaqueline Villalpando",
"service": "Women's Haircut & Blow-Dry",
"original_appointment_date": "2026-05-14",
"selected_datetime": "2026-08-19T14:30:00-04:00",
"booking_url": "https://www.vagaro.com/appointments/book-now",
"provider_pinned": true,
"confirmed": false,
"notes": "Stopped at date/time selection; final Book/Checkout not clicked (read-only)."
}
// No credentials / not logged in — appointment history is gated
{
"success": false,
"reason": "auth_required",
"login_url": "https://www.vagaro.com/login",
"history_url": "https://www.vagaro.com/myaccount/appointments",
"notes": "Past appointments require a customer login; /myaccount/appointments redirects to /login when unauthenticated."
}
// Logged in, but the requested past appointment/provider could not be found
{
"success": false,
"reason": "past_appointment_not_found",
"searched_for": { "provider": "Jane Doe", "service": "Deep Tissue Massage" },
"notes": "No matching row in Past appointments for this account."
}
// Rebook unavailable and provider no longer offered by the business
{
"success": false,
"reason": "provider_unavailable",
"business": "Eleven Ten Studio",
"provider": "Jaqueline Villalpando",
"notes": "Rebook deep-link dropped the provider and the Staff tab no longer lists them; cannot pin the same provider."
}