Best of Product Hunt

How to Build a Scheduling Website on Your Own Domain With White-Label Branding (Cal.com Walkthrough)

A practical, step-by-step walkthrough for launching a scheduling website on your own domain with white-label branding—covering self-hosting, custom domains, UI customization, booking flows, embedded scheduling, and common gotchas.

Share:

Set up your scheduling site (users/teams, event types, availability, and integrations), then connect a custom subdomain like book.yourcompany.com using DNS (typically a CNAME) and SSL/TLS. Finally, apply white-label branding across the UI and communications so the booking flow feels native to your product.

It typically means using your own domain, your branding (logo, colors, terminology, email templates), and removing third-party branding from the UI. It doesn’t automatically provide fully custom product logic, perfect email deliverability, or a frictionless experience without well-designed availability rules.

Hosted is the fastest path if you want minimal ops, quick rollout, and managed upgrades. Self-hosting is better when you need full control over data/infra, deeper branding control, stricter security policies, custom auth, or custom integrations.

You’ll usually configure a CNAME record pointing your subdomain (e.g., book) to your hosting target and enable TLS/SSL for HTTPS. Expect DNS propagation delays (minutes to 24–48 hours), and ensure confirmation links and redirects also use your domain.

Common gotchas include DNS propagation delays, cookie/session scope problems (especially with SSO), and confirmation URLs that still point to the wrong domain. Self-hosted setups may also require reverse proxy configuration and canonical URL environment variables.

Use buffers (10–15 minutes) to avoid back-to-back fatigue, set minimum notice (12–24 hours) to prevent last-minute bookings, and cap daily meetings for high-load roles. Also define time-zone behavior clearly (display local time while storing a canonical time internally).

Treat event types like product experiences rather than generic time slots, with clear intent (e.g., qualification call vs technical deep dive). Use different hours, buffers, and even separate calendars per event type or team to match real workflows.

Keep the form fast (aim for 30–60 seconds) and focus on high-signal questions like role, goals, tools used, or whether it’s sales vs support for routing. Avoid long free-text fields, too many mandatory questions, or anything that feels like a survey.

Embedding often converts better because users stay on your site, using patterns like inline embeds, modal CTAs, or dedicated routes in your app. For performance and UX, embed on high-intent pages, provide a fallback link, and track conversions from page view to booking completion.

Calendar integrations are essential for two-way sync to prevent double-booking and respect busy/free and time zones. Video conferencing can auto-generate meeting links, and payments are useful when time is paid (e.g., consultations) to confirm slots and manage cancellation policies.

How to Build a Scheduling Website on Your Own Domain With White-Label Branding (Cal.com Walkthrough)

A scheduling website sounds simple—until you need it to look like *your* product, live on *your* domain, and still handle real-world details like time zones, availability rules, calendar sync, reminders, payments, and video links.

This guide walks through a practical approach to launching a white-labeled scheduling website using an open-source scheduling platform. We’ll focus on the decisions and steps that matter, including self-hosting, custom domain setup, branding, booking questions, and embedding.

> Goal: a booking experience that feels native to your brand, reduces back-and-forth, and can scale from “one founder” to “a team with routing and APIs.”

---

What “white-label scheduling” actually means (and what it doesn’t)

White-label scheduling typically includes:

- **Your domain** (e.g., `book.yourcompany.com`)

- **Your branding** (logo, colors, terminology, email templates)

- **No third-party branding** in the UI

- **A consistent user experience** across marketing site → booking flow → confirmations

It does *not* automatically mean:

- Full custom product logic without development

- Perfect deliverability without configuring email/DNS

- A frictionless experience without carefully designed availability rules

You’ll get the best outcome when you treat scheduling like a product surface—not a widget.

---

Step 1: Choose your deployment model (hosted vs self-hosted)

Before touching DNS or design, decide how you’ll run the scheduling stack:

Option A: Hosted (fastest path)

Best when you want:

- Minimal ops

- Quick rollout

- Managed upgrades

Option B: Self-hosted (most control)

Best when you need:

- Full control over data/infra

- Advanced branding control

- Custom integrations and deeper extensibility

If your requirements include strict security policies, custom auth, or deeper white-label needs, self-hosting is usually the right call.

To understand the platform’s deployment options and moving parts, start with the documentation and quickstart concepts in [PRODUCT_LINK]Cal.com’s developer docs[/PRODUCT_LINK].

---

Step 2: Set up the scheduling site foundation

No matter how you deploy, the “foundation” is the same:

- **User/Team structure**: individual pages vs team pages

- **Event types**: what can be booked (intro call, demo, interview, support, etc.)

- **Availability**: hours, buffers, minimum notice, daily limits

- **Integrations**: Google/Microsoft calendar sync, video conferencing, payments (if applicable)

Practical tips that prevent 80% of scheduling issues

1. **Use buffers** (e.g., 10–15 minutes) to avoid back-to-back fatigue.

2. **Set minimum notice** (e.g., 12–24 hours) unless you truly want same-day bookings.

3. **Limit daily meetings** for roles like sales engineering or founders.

4. **Define time-zone behavior** explicitly (display user’s local time; store canonical time internally).

---

Step 3: Put scheduling on your own domain (custom domain)

Running on your domain improves trust, conversion rates, and brand consistency.

A common setup:

- Marketing site: `yourcompany.com`

- Scheduling: `book.yourcompany.com`

What you’ll typically configure

- A **CNAME record** pointing your subdomain (e.g., `book`) to your hosting target

- **TLS/SSL** so bookings run over HTTPS

- Optional redirects (e.g., `yourcompany.com/book` → `book.yourcompany.com`)

Common gotchas

- **DNS propagation delay**: can take minutes to 24–48 hours.

- **Cookie/session scope**: if you use SSO or shared auth, domain scoping matters.

- **Email links & redirects**: make sure confirmation URLs also use your domain.

If your approach includes self-hosting, you’ll likely pair custom-domain setup with reverse proxy configuration (e.g., Nginx/Caddy) and environment variables for canonical URLs.

---

Step 4: Add white-label branding (UI + comms)

White-label isn’t just removing a logo—it’s aligning the booking experience with your product voice.

Branding layers to review

1. **Visual identity**

- Logo

- Primary/secondary colors

- Typography (where supported)

2. **UX language**

- Button labels (“Book a call” vs “Schedule time”)

- Event names (“Implementation Kickoff” vs “Onboarding Call”)

3. **Email templates and sender identity**

- From name + sender domain

- Confirmation, reminders, reschedule/cancel emails

4. **Booking page metadata**

- Title tags / page titles

- Open Graph previews (useful when sales teams share links)

White-label configuration differs depending on deployment model and how deep you want to customize. If you’re planning deeper customization, the open-source nature of [PRODUCT_LINK]the Cal.com scheduling platform[/PRODUCT_LINK] makes it easier to align UI and flows with your brand.

---

Step 5: Design event types that match real workflows

Most scheduling websites fail because event types are treated like generic meeting slots.

Instead, design event types like product experiences:

Example event types (with intent)

- **15-min Qualification Call** (fast decision, strict daily limit)

- **30-min Product Demo** (requires context; ask 2–3 questions)

- **60-min Technical Deep Dive** (requires routing; confirm prerequisites)

- **Onboarding Session** (requires payment or plan verification)

Availability rules to consider

- Different hours per event type (support vs sales)

- Longer buffers for complex meetings

- Separate calendars for different teams

---

Step 6: Customize booking questions (without killing conversion)

Booking questions help you qualify, route, and prepare—but too many questions increase drop-off.

A good booking form balances:

- **Speed** (finish in under 30–60 seconds)

- **Preparation** (collect what your team actually uses)

- **Routing** (assign to the right person/team)

High-signal questions (usually worth it)

- “What’s your role?” (dropdown)

- “What are you trying to achieve?” (short text)

- “Which tools do you use today?” (multi-select)

- “Is this about support or sales?” (routing)

Questions to avoid (unless necessary)

- Long free-text fields with unclear benefit

- Too many mandatory fields

- Anything that feels like a survey

For teams building a branded flow, pairing booking questions with automated follow-ups (e.g., calendar invite notes + email confirmations) reduces no-shows and improves meeting quality.

---

Step 7: Embed scheduling on your website (and keep it fast)

A standalone booking link is useful—but embedding often converts better because users stay on your site.

Common embed patterns

1. **Inline embed** on a “Book a Demo” page

2. **Modal embed** triggered by a CTA button

3. **Dedicated route** in your app (e.g., `/settings/schedule`) for customer success flows

Performance + UX tips

- Don’t embed on every page—use intent-based pages (pricing, demo, contact)

- Keep a clear fallback link in case embedded scripts are blocked

- Track conversions (page view → booking complete) in analytics

If you need a scheduling flow that works well both as a link and embedded, consider starting with [PRODUCT_LINK]Cal.com booking links and embed options[/PRODUCT_LINK] and then refining the UI around your highest-intent pages.

---

Step 8: Add integrations: calendars, video conferencing, and payments

A professional scheduling website usually needs three integration categories:

Calendar integrations (non-negotiable)

- Two-way sync prevents double-booking

- Write events back to the right calendar

- Respect busy/free, working hours, and time zones

Video conferencing (reduce manual steps)

- Auto-generate meeting links (Zoom/Google Meet/etc.)

- Include links in calendar invites and email confirmations

Payments (when your time is a product)

- Charge for consultations

- Require payment to confirm a slot

- Handle cancellations/refunds based on policy

The key is to keep the booking journey cohesive: user picks a time → confirms → receives everything needed in one place.

---

Step 9: Make it “developer-ready” (API, webhooks, and custom logic)

If you’re building a scheduling website as part of a product—not just a marketing tool—you’ll likely need:

- **Webhooks**: trigger workflows on booking created/canceled/rescheduled

- **API access**: create bookings, manage users, sync availability

- **Custom routing**: assign based on geography, account owner, plan tier, form answers

- **White-label UI control**: consistent styling across surfaces

This is where an open-source scheduling stack is particularly useful: you can start simple and grow into more advanced product behavior without rebuilding the core scheduling logic.

For teams that expect to evolve beyond basic links, [PRODUCT_LINK]building on Cal.com’s scheduling APIs[/PRODUCT_LINK] can be a practical path.

---

QA checklist before you launch

Run through this list to avoid surprises:

- [ ] Booking page uses your domain everywhere (including confirmation URLs)

- [ ] SSL works and there are no mixed-content warnings

- [ ] Calendar sync prevents double-booking (test with real busy events)

- [ ] Reschedule + cancel flows work and notify attendees correctly

- [ ] Emails deliver reliably (sender identity + SPF/DKIM/DMARC if applicable)

- [ ] Time zone display is correct across locations

- [ ] Video links are generated and included in invites

- [ ] Mobile booking experience is smooth

- [ ] Analytics tracks booking completion

---

Conclusion

Building a scheduling website on your own domain with white-label branding is less about “adding a calendar” and more about designing a trustworthy, frictionless booking experience.

When you approach it step-by-step—deployment model, custom domain, branding, event design, booking questions, embeds, and integrations—you end up with scheduling that feels like a native part of your product and brand.

If you’re evaluating tooling, prioritize solutions that can handle today’s needs (links + calendar sync) while staying flexible for tomorrow’s needs (routing, API workflows, deeper white-label control).

More from Cal.com