Zedule.
PILLAR GUIDE · 14 min read

How to set up an online booking page in 30 minutes | Zedule

A booking page is a public URL where your customers pick a service and a time and book themselves in. Setting one up well takes thirty minutes, costs nothing for the first 45 days on Zedule, and replaces every back-and-forth phone call you currently take.

Updated May 5, 2026


We’re going to walk through setting up a booking page from scratch. The end-state is a URL you can share, customers can book at, and you can hand to your front desk staff without explaining anything.

Total time: about thirty minutes. We’ll skip the marketing fluff and just go through the screens.

What you need before you start

  • A Google account (any — personal or Workspace).
  • A list of the services you offer with their durations and prices.
  • A list of the people who take appointments with their working hours.
  • A logo or business name. The logo is optional; the name is required.

That’s it. You don’t need a website, a domain, a card on file, or a designer.

Step 1 — Sign up (90 seconds)

Go to app.zedule.app, click Continue with Google, pick the Google account you want as the workspace owner. Land on a “Choose a business” screen. Click Create your first business.

A small form: business name, slug (URL path), address, phone, contact email, time zone. The slug is the part that ends up in your booking URL — book.zedule.app/your-slug. Pick something short and obvious: riverstone-chiro, not business-id-12345.

If you have a Google Business Profile, you can search for it in the Find your business on Google field at the top. The form auto-fills from Places — name, address, phone, website, geo. Faster than typing.

Click Create business. The system provisions a fresh tenant database for you (your data lives in its own Cloudflare D1, not a shared table) and lands you on the onboarding flow.

Step 2 — Add services (5 minutes)

Onboarding step 1 prompts you for up to three services. Each row: name, duration in minutes, price in dollars (or your business currency).

A few rules of thumb that make booking pages convert better:

  • Be specific in service names. “Therapeutic massage 60 min” reads better than “Massage”. If you have variants (30/60/90 minutes), make each variant its own service rather than asking the customer to pick a duration.
  • Set duration as the appointment block, not the hands-on time. If a 60-minute massage actually needs 75 minutes (15 between clients to flip the room), set duration to 75. Saves you from over-booking.
  • Use whole-number prices unless you have to. $89 reads cleaner than $89.50. Customers don’t haggle on a booking page; you’re not losing anything to round numbers.
  • Set price to 0 for free consultations. The booking page displays “Free” instead of “$0”, which reads better.

You can add the rest of your services from the Services page after onboarding — don’t try to enter twenty during the wizard.

Step 3 — Add staff (5 minutes)

Onboarding step 2 prompts you for up to two staff members. Each row: name, email (optional), phone (optional).

A staff member doesn’t need their own login to be on the calendar. You can add someone as a calendar resource — “Sofia, LMT, Mon-Fri, 9-5” — and they show up on the booking page without ever signing in.

After onboarding, on the Staff page, click Schedule on each staff card to set their working hours. The hours editor is one row per day of the week with a checkbox and a time range. Most providers have the same shape every week — Mon-Fri 9-5, off Saturday and Sunday — so it takes about thirty seconds per person.

If a provider has different hours on different days (Tuesdays they work 12-8, Saturdays they’re 10-2), set each day independently. The booking page only offers slots inside the staff member’s working hours intersected with your business hours.

For one-off blocks — vacations, lunch every day, a half-day for a workshop — use blocked time, not modified working hours. Block-time treats those windows as unavailable on the booking page even if they’re inside working hours.

Step 4 — Brand the booking page (5 minutes)

Settings → Booking Page. Three sections: Booking Template, Branding, Share.

Booking Template is the flow the customer sees. Five options:

  • Classic — Service → Staff → Date/Time. Default. Works for almost everyone.
  • Provider-First — Pick a provider before picking a service. Use this if customers come in asking for a specific person.
  • Date-First“When are you free? Let’s see what’s available.” Good for high-volume services where people want the soonest slot.
  • Simple — Just a calendar. No service picker. Use this if you only have one offering.
  • Catalog — Browse and bundle multiple services into one booking. Use this for spas, multi-service appointments.

You can change the template anytime — past bookings aren’t affected.

Branding has four fields. The most important one is Primary Color. Match your existing brand exactly. If your storefront sign is #6366f1 indigo, type #6366f1 and the booking page picks it up.

The other three fields:

  • Font — Inter (default, neutral), Source Serif 4 (editorial, premium), or system (whatever your customer’s OS prefers).
  • Corner Radius — Sharp (4px), Rounded (12px), or Pill (20px). Pick whichever matches the rest of your site.
  • Logo URL / Cover Image URL — both are URLs to images you host elsewhere.

Save. The page picks up the changes immediately.

In the same Settings → Booking Page tab, the Share your booking page section gives you two artefacts:

  • Copy link — your direct URL: https://book.zedule.app/your-slug. Paste it in:

    • Your Google Business Profile (the Booking link field — most impactful single placement, customers searching your business on Google get the booking flow inline).
    • Your Instagram bio.
    • Your email signature.
    • The About section of your Facebook page.
    • Anywhere a link works.
  • Copy embed code — a one-line iframe snippet you drop into your existing site. The embedded version (?embed=1 query param) strips the Zedule chrome so the widget feels native. Set your container width and the iframe handles its own height.

Drop the embed snippet on every page of your website where someone might want to book — a sticky button at the bottom of your homepage, a “Book now” button at the top of every service page, the bottom of every blog post.

<iframe
  src="https://book.zedule.app/your-slug?embed=1"
  width="100%" height="820"
  style="border:none;border-radius:12px;max-width:720px;"
  loading="lazy"
  title="Book an appointment"
></iframe>

Step 6 — Verify it works (5 minutes)

Open the booking page in a private/incognito window so you’re not logged in as yourself. Walk through a real booking end to end:

  1. Pick a service. Make sure the price and duration look right.
  2. Pick a staff member or let the system auto-assign.
  3. Pick a time. Make sure the slot offered is one your staff is actually available for.
  4. Fill in the customer form with your own email so the confirmation lands somewhere you can read it.
  5. Confirm. Watch the confirmation email arrive within a few seconds.
  6. Click the cancel link. Make sure it works.

If any step felt slow or confusing, that’s something to fix — not something to “train your customers around”. Booking pages live and die by the first 45 seconds.

Step 7 — Set up reminders + email (10 minutes, optional but worth it)

Settings → Messaging is where you configure who actually sends the confirmation and reminder emails.

Zedule is BYO-provider — you bring your own Resend, SendGrid, Mailgun, Postmark, or AWS SES API key. Your domain, your deliverability. We don’t send anything on our infrastructure on your behalf, ever. Your customer sees the email arriving from [email protected], not [email protected].

Same model for SMS — Twilio, MessageBird, Vonage, Plivo, or AWS SNS. Recommended setup:

  • Email: Resend if you don’t already have a provider — it’s the easiest to verify a domain on. SendGrid or Postmark if you do.
  • SMS: Twilio. Buy a number from your country, $1/month + per-message.

Settings → Messaging → What to send is where you toggle which lifecycle events fire on which channel: confirmation by email, cancellation by email + SMS, reminder by both, etc. Defaults are sensible — confirmations and cancellations email-only, reminders on both.

If you skip this step, the booking page still works — confirmations and reminders just won’t send until you configure a provider. Worth doing on day one if you’re at all serious.

After thirty minutes

You have:

  • A live booking URL at book.zedule.app/your-slug.
  • Five staff with their actual hours.
  • Six services with real prices.
  • A booking page that matches your brand colour.
  • Confirmations and reminders going out from your domain.
  • An iframe snippet you can paste anywhere.

The first real booking you take from a customer will be more satisfying than any setup wizard you’ve ever finished. Probably the fastest your business has felt in a while.

If you got stuck anywhere, the full Getting Started docs walk through each step in more depth, and there’s a short video on each page. And the FAQ at the bottom of this page covers the questions that come up most often.

Frequently asked questions

Do I need a website to have a booking page?
No. Every Zedule account ships with a hosted booking page at book.zedule.app/your-slug from the moment you sign up. Your customers can book directly there — no website required. If you do have a website, you can also embed the booking flow as an iframe so customers never leave your domain.
How do I share my booking page with customers?
Copy the URL from Settings → Booking Page (Copy link button) and paste it in your Google Business Profile, Instagram bio, email signature, business card, anywhere a link works. The cleanest pattern is to put the link in three places: Google, Instagram, and your email reply-to footer.
Can I embed the booking page on my own site?
Yes. Settings → Booking Page → Copy embed code gives you a one-line iframe snippet you drop into your existing site. The embedded version (?embed=1) strips the Zedule chrome so the booking widget feels native. Works on Squarespace, Wix, WordPress, custom HTML — anywhere you can paste an iframe tag.
How do I customize the booking page colors and font?
Settings → Booking Page → Branding lets you set a custom hex color for the primary button, pick a font (Inter, Source Serif, or system), and choose a corner radius. The dashboard ships with four accent templates; the customer-facing booking page is fully open — any hex color works.
What if a service is only offered by one staff member?
On the service edit form, you can assign which staff can perform a service. Customers picking that service only see those staff members in the time-slot view. Default behaviour is every staff member can perform every service.
Can customers cancel without calling me?
Yes. Every confirmation email includes a one-click cancel link with a unique token — no login required. The customer clicks → confirms → we email you that they cancelled. Saves the back-and-forth.
How do I set my hours?
Hours are set per staff member, not per business. Staff page → Schedule on a staff card → toggle the days they work, set times. The booking page only offers slots inside their working hours intersected with the slots you have available.

Ready to try it?

Forty-five days free, no card. Hosted at book.zedule.app/<your-slug>, embeddable on your own site with one iframe tag.

Start free