Go-live checklist
Going live is a one-word change: the studio slug. The host, the SDK, the endpoints and your code stay the same. Before you flip it, walk through this list once.
1 · The studio is ready on its side
Section titled “1 · The studio is ready on its side”- The studio’s site is published in the dashboard (Studio → Web del estudio) and sandbox mode is off. The site payload answers
"site": { "sandbox": false }. - Every room you link to has
"bookable": true. Rooms are bookable once they are activated and have opening hours; the payload tells you per room. - Prices, minimum and maximum duration, step, notice and horizon look right — your UI inherits them from
/public/sites/{slug}, so a wrong number there is a wrong number everywhere.
2 · Captcha on writes
Section titled “2 · Captcha on writes”- The payload carries
captchaSiteKey. Attach a Turnstile token solved for the actionholdon the studio’s own host to everyPOST /holds; otherwise the API answersCAPTCHA_FAILED. The SDK’s embedded screen does this for you; the headless flow and raw API need the widget.
3 · Card deposits
Section titled “3 · Card deposits”- If the studio takes deposits,
stripePublishableKeyis present andcardappears inroom.paymentModes. Mount the Payment Element with that key and confirm with theclientSecretfrom/confirm— see Card payments. - Test with Stripe’s test cards on the studio’s own site before it is published, or ask us for a test session. Never test with a real card on a live slug.
- After a card confirmation, poll
GET /public/bookings/manage/{token}untilstatusisconfirmed; the webhook, not the browser, settles the booking.
4 · Messages reach real people
Section titled “4 · Messages reach real people”- The guest’s
localein the hold (es,ca,en) decides the language of the code, confirmation and reminders. Default it from your page’s language. - Validate phone numbers in E.164 (
+34…) before you send them: a wrong number burns a code and a rate-limit slot.
5 · Handle the unhappy paths
Section titled “5 · Handle the unhappy paths”-
SLOT_TAKENon hold → reload availability and ask for another time. The SDK exposeserror.slotIsGone. -
HOLD_EXPIRED/HOLD_NOT_FOUNDon verify or confirm → start again; unverified holds live 5 minutes, verified ones until 12 minutes after creation. (error.holdIsDead) -
RATE_LIMITED→ show “try again in a minute”, do not retry in a loop. The full list is in Errors & rate limits.
6 · Keep the manage link
Section titled “6 · Keep the manage link”- Show or email the
manageUrlyou get back. It is the guest’s only way to see or cancel the booking without calling the studio, and it means you never have to build cancellations.
That is the whole list. If something in it is unclear for your case, write to us with the request id of any response you are unsure about.