> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useorbitcrm.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Sharing & Embedding Scheduling Pages

> Share your booking page with a direct URL, embed it on your website, add tracking pixels, and use custom domains.

## Public Booking URL

Every published scheduling page has a unique booking URL that you can share directly with anyone.

```
https://orbitforms.ai/s/{teamShortId}/{slug}
```

**URL Format:**

* `/s/` — The scheduling page route prefix
* `{teamShortId}` — First 8 characters of your team UUID
* `{slug}` — The URL slug you set when creating the page (e.g., "demo-call")

## Embedding on Your Website

Embed your scheduling page directly on your website so visitors can book without leaving your site.

Copy the embed code from your scheduling page's "Share" tab and paste it into your website's HTML. The booking page renders inside a sandboxed iframe.

```html theme={null}
<iframe
  id="orbit-schedule-inline-demo-call"
  src="https://orbitforms.ai/s/abc12345/demo-call?embed=true"
  width="100%"
  height="720"
  frameborder="0"
  sandbox="allow-forms allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-top-navigation"
  referrerpolicy="strict-origin-when-cross-origin"
  style="border:0;border-radius:12px"
></iframe>
<script>
  (function() {
    var iframe = document.getElementById('orbit-schedule-inline-demo-call');
    if (!iframe) return;
    var origin;
    try { origin = new URL(iframe.src).origin; } catch (e) { return; }
    window.addEventListener('message', function(e) {
      if (e.origin !== origin) return;
      var d;
      try { d = typeof e.data === 'string' ? JSON.parse(e.data) : e.data; } catch (_) { return; }
      if (!d) return;
      if (d.type === 'orbit-form-redirect') {
        var url = d.redirectUrl;
        if (typeof url === 'string' && url.length > 0 && url.length <= 2048) {
          var isHttp = url.indexOf('https://') === 0 || url.indexOf('http://') === 0;
          var isRelative = url.charAt(0) === '/' && url.charAt(1) !== '/';
          if (isHttp || isRelative) window.location.assign(url);
        }
        return;
      }
      if (d.type === 'orbit-schedule-resize') {
        var h = Number(d.height);
        if (isFinite(h) && h >= 200 && h <= 5000) iframe.style.height = h + 'px';
        return;
      }
      if (d.type === 'orbit-form-wheel') {
        var dy = Number(d.deltaY) || 0, dx = Number(d.deltaX) || 0;
        if (!isFinite(dy) || !isFinite(dx)) return;
        if (d.deltaMode === 1) { dy *= 16; dx *= 16; }
        else if (d.deltaMode === 2) { dy *= window.innerHeight; dx *= window.innerWidth; }
        dy = Math.max(-2000, Math.min(2000, dy));
        dx = Math.max(-2000, Math.min(2000, dx));
        window.scrollBy({ left: dx, top: dy, behavior: 'instant' });
      }
    });
  })();
</script>
```

## Tracking Pixels

Add tracking pixels to measure conversions and attribute bookings to your marketing campaigns.

> [card] Meta Pixel
>
> Track Facebook and Instagram ad conversions from scheduling page bookings.

> [card] Google Analytics 4
>
> Send booking events to GA4 for conversion tracking and audience building.

> [card] Google Tag Manager
>
> Use GTM containers for flexible tag management and custom event triggers.

> [card] Cometly
>
> Attribution tracking for ad platforms with server-side event forwarding.

> [!NOTE]
>
> **How to add tracking**
>
> Open your scheduling page and go to the **Settings** tab, then scroll to the **Tracking & Analytics** section. Paste your pixel ID, measurement ID, or container ID into the corresponding field. Events are fired automatically when a booking is completed.

## Custom Domain Support

Use your own domain for scheduling pages instead of the default orbitforms.ai URL. This keeps your branding consistent.

**1. Add your domain**

Go to Settings > Custom Domains and enter your domain (e.g., book.yourcompany.com).

**2. Configure DNS**

Add a CNAME record pointing your domain to cname.vercel-dns.com.

**3. Verify ownership**

Click "Verify" once your DNS changes have propagated (usually within a few minutes).

**4. SSL certificate**

An SSL certificate is automatically provisioned for your custom domain.

> [!WARNING]
>
> **DNS propagation**
>
> DNS changes typically propagate within minutes, but can take up to 48 hours in some cases. If verification fails, wait a few minutes and try again.

***

## Next Steps

> [card] [Creating Scheduling Pages](https://docs.useorbitcrm.ai/guides/scheduling/creating.md)
>
> Build your first booking page

> [card] [Notifications & Reminders](https://docs.useorbitcrm.ai/guides/scheduling/notifications.md)
>
> Configure email notifications


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.