Widget & API

Add stays to your checkout in one paste.

One script tag puts real places to stay on your confirmation page. Prefer your own markup? The same inventory is a keyless JSON call away.

Quick start — the widget

Paste this where you want the panel to appear — your order-confirmation or registration-complete page is the spot it earns the most. Your slug is your partner page address: <your-slug>.bookendpartners.com. It arrives with your welcome email, or ask us.

<script src="https://bookendpartners.com/embed.js"
  data-bookend="YOUR-SLUG" async></script>

That's the whole install. The widget renders in a sandboxed frame, sizes itself to its content, and never touches your page's styles or scripts. When your market's inventory updates, the widget updates — nothing to redeploy.

Options

Both optional, set as attributes on the same tag:

<script src="https://bookendpartners.com/embed.js"
  data-bookend="YOUR-SLUG"
  data-max="6"
  data-accent="#0f766e" async></script>

JSON API

For native rendering inside your own checkout, pull the same inventory directly. The API is for approved partners: request a key from your partner portal (one click — we review by hand, usually same day) and send it as a bearer token. CORS is open; responses cache for five minutes.

curl -H "Authorization: Bearer bk_pk_YOUR_KEY" \
  https://bookendpartners.com/api/embed/v1/YOUR-SLUG
{
  "slug": "your-slug",
  "business": "Your Event Co",
  "city": "Cannon Beach",
  "state": "OR",
  "storefront": "https://your-slug.bookendpartners.com",
  "units": [
    {
      "name": "King Tide Lookout",
      "bedrooms": 3,
      "sleeps": 9,
      "walk_minutes": 12,
      "drive_minutes": null,
      "nightly_usd": 289,
      "photo": "https://…"
    }
  ]
}

walk_minutes, drive_minutes, and nightly_usd are null when we don't have the real number — we never estimate. Link each unit (and your "see all" action) to storefront: that page is branded as yours, and bookings made there are the ones you're paid on.

FAQ

Does it slow my page down? No — the script is ~1 KB, loads async, and the frame lazy-loads.

What if my market's inventory isn't built yet? The widget shows a clean "stays are being curated" card instead of an empty box, and upgrades itself the day real units land.

Not a partner yet? Start here — takes about two minutes.