> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbitforms.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.

<CardGroup cols={2}>
  <Card title="Meta Pixel" icon="bar-chart-3">
    Track Facebook and Instagram ad conversions from scheduling page bookings.
  </Card>

  <Card title="Google Analytics 4" icon="bar-chart-3">
    Send booking events to GA4 for conversion tracking and audience building.
  </Card>

  <Card title="Google Tag Manager" icon="bar-chart-3">
    Use GTM containers for flexible tag management and custom event triggers.
  </Card>

  <Card title="Cometly" icon="bar-chart-3">
    Attribution tracking for ad platforms with server-side event forwarding.
  </Card>
</CardGroup>

<Info>
  **How to add tracking**

  Open your scheduling page settings and navigate to the "Tracking" tab. Paste your pixel ID or container ID into the corresponding field. Events are fired automatically when a booking is completed.
</Info>

## Custom Domain Support

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

<Steps>
  <Step title="Add your domain">
    Go to Settings > Custom Domains and enter your domain (e.g., book.yourcompany.com).
  </Step>

  <Step title="Configure DNS">
    Add a CNAME record pointing your domain to cname.vercel-dns.com.
  </Step>

  <Step title="Verify ownership">
    Click "Verify" once your DNS changes have propagated (usually within a few minutes).
  </Step>

  <Step title="SSL certificate">
    An SSL certificate is automatically provisioned for your custom domain.
  </Step>
</Steps>

<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.
</Warning>

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Creating Scheduling Pages" icon="file-text" href="/guides/scheduling/creating">
    Build your first booking page
  </Card>

  <Card title="Notifications & Reminders" icon="bell" href="/guides/scheduling/notifications">
    Configure email notifications
  </Card>
</CardGroup>
