Getting Started

Get SlotWeave running on your website in under 2 minutes. All you need is an operator account and one line of code.

Quickstart

  1. Create your account at slotweave.com/signup. Your 14-day free trial starts immediately —no credit card required.
  2. Add your first product in the operator dashboard. A product is anything your customers book: a tour, a class, a service, an appointment.
  3. Set your availability. Define your working hours, slot durations, and capacity per slot.
  4. Connect Stripe. Enter your Stripe API keys so payments go directly to your account.
  5. Embed the widget. Copy the embed code from your dashboard and paste it into your website.

Embed Code

The SlotWeave widget is loaded via a single script tag. Place it anywhere on your page where you want the booking interface to appear.

Basic embed

<div id="slotweave-booking"></div>
<script src="https://cdn.slotweave.com/widget.js"
  data-key="YOUR_API_KEY"
  data-theme="light">
</script>

With options

<div id="slotweave-booking"></div>
<script src="https://cdn.slotweave.com/widget.js"
  data-key="YOUR_API_KEY"
  data-theme="dark">
</script>

You can find your API key in the operator dashboard under Settings > Widget. The widget also requires a <div id="slotweave-booking"></div> element on the page.

Configuration

The widget accepts the following data attributes for configuration:

Attribute Required Description
data-key Yes Your API key (found in the operator dashboard under Settings > Widget)
data-theme No "auto" (default), "light", or "dark"

Platform Guides

Step-by-step instructions for embedding SlotWeave on popular platforms.

WordPress

Two options: use a Custom HTML block, or install our plugin.

Option 1: Custom HTML Block

  1. Open the page where you want the booking widget in the WordPress editor
  2. Add a new Custom HTML block
  3. Paste the SlotWeave embed code
  4. Save and publish
<!-- Paste this in a Custom HTML block --> <div id="slotweave-booking"></div> <script src="https://cdn.slotweave.com/widget.js" data-key="YOUR_API_KEY" data-theme="light"> </script>

Option 2: WordPress Plugin

  1. Install the "SlotWeave Booking" plugin from the WordPress plugin directory
  2. Activate the plugin and enter your API key in Settings > SlotWeave
  3. Use the [slotweave] shortcode on any page: [slotweave key="YOUR_API_KEY"]

Squarespace

  1. In the Squarespace editor, navigate to the page where you want the widget
  2. Click Add Section and choose Code
  3. In the code editor, paste the SlotWeave embed script
  4. Save and publish your page
<div id="slotweave-booking"></div> <script src="https://cdn.slotweave.com/widget.js" data-key="YOUR_API_KEY" data-theme="light"> </script>

Note: Squarespace Business plan or higher is required to use custom code blocks.

Wix

  1. In the Wix editor, click Add Elements (+) > Embed Code > Embed HTML
  2. Select "Code" mode and paste the SlotWeave embed script
  3. Resize the embed element to fit your page layout
  4. Publish your site
<div id="slotweave-booking"></div> <script src="https://cdn.slotweave.com/widget.js" data-key="YOUR_API_KEY" data-theme="light"> </script>

Note: Wix renders embeds in an iframe. The widget adapts automatically, but you may need to adjust the iframe height in your Wix settings.

Custom HTML / Frameworks

For static HTML sites, React, Next.js, Vue, or any other framework, drop the script tag wherever you want the widget.

<!DOCTYPE html> <html> <head> <title>Book Now</title> </head> <body> <h1>Book your experience</h1> <div id="slotweave-booking"></div> <script src="https://cdn.slotweave.com/widget.js" data-key="YOUR_API_KEY" data-theme="light"> </script> </body> </html>

The widget renders inside the <div id="slotweave-booking"> element. This element must be present on the page.

API Reference

The SlotWeave REST API is available on the Pro plan. It lets you programmatically manage products, availability, and bookings.

Authentication

All API requests require an API key passed in the Authorization header:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.slotweave.com/v1/products

Generate your API key from the operator dashboard under Settings > API.

Endpoints

Products

GET /v1/products List all products
ParameterTypeDescription
pageintegerPage number (default: 1)
per_pageintegerResults per page (default: 20, max: 100)
location_idstringFilter by location
// Response
{
  "products": [
    {
      "id": "uuid",
      "name": "Sunset Kayak Tour",
      "description": "2-hour guided kayak tour",
      "duration_min": 120,
      "price": 7500,
      "currency": "CAD",
      "capacity": 12,
      "booking_mode": "slot",
      "active": true
    }
  ],
  "total": 5,
  "page": 1,
  "per_page": 20
}
GET /v1/products/:id Get a single product by ID
POST /v1/products Create a product
PUT /v1/products/:id Update a product
DELETE /v1/products/:id Delete a product

Availability

GET /v1/availability/:product_id Get available time slots for a product
ParameterTypeDescription
start_datestringStart date (YYYY-MM-DD, required)
end_datestringEnd date (YYYY-MM-DD, required)
staff_idstringFilter by staff member (staff-mode products)
// Response
{
  "days": [
    {
      "date": "2026-04-15",
      "slots": [
        {
          "start_time": "09:00",
          "end_time": "11:00",
          "remaining": 8,
          "capacity": 12,
          "staff_id": null
        }
      ]
    }
  ]
}

Bookings

GET /v1/bookings List bookings with filters
ParameterTypeDescription
pageintegerPage number (default: 1)
per_pageintegerResults per page (default: 20, max: 100)
statusstringFilter: confirmed, cancelled, completed
date_fromstringStart date filter (YYYY-MM-DD)
date_tostringEnd date filter (YYYY-MM-DD)
searchstringSearch by reference, name, or email
GET /v1/bookings/:id Get a single booking
// Response
{
  "id": "uuid",
  "reference": "SW-A1B2C3",
  "product_id": "uuid",
  "booking_date": "2026-04-15",
  "start_time": "09:00",
  "end_time": "11:00",
  "party_size": 4,
  "customer_name": "Jane Smith",
  "customer_email": "jane@example.com",
  "subtotal": 30000,
  "processing_fee": 900,
  "total": 30900,
  "currency": "CAD",
  "status": "confirmed",
  "items": [
    { "tier_label": "Adult", "quantity": 2, "unit_price": 7500, "line_total": 15000 },
    { "tier_label": "Child", "quantity": 2, "unit_price": 5000, "line_total": 10000 }
  ]
}
POST /v1/bookings Create a booking
PUT /v1/bookings/:id/cancel Cancel a booking

Staff

GET /v1/staff List staff members

Webhooks

GET /v1/webhooks List webhook subscriptions
POST /v1/webhooks Create a webhook subscription

Available events: booking.created, booking.cancelled, booking.rescheduled, payment.succeeded, payment.refunded

Error Codes

CodeMeaning
400Invalid request parameters
401Missing or invalid API key
403Insufficient permissions
404Resource not found
409Conflict (e.g., slot no longer available)
429Rate limit exceeded (60 req/min)
500Internal server error

Rate Limits

API requests are limited to 60 requests per minute per API key. Rate limit headers are included in every response:

  • X-RateLimit-Limit — Maximum requests per window
  • X-RateLimit-Remaining — Requests remaining
  • X-RateLimit-Reset — Unix timestamp when the window resets

Code Examples

Fetch available slots (JavaScript)

const response = await fetch(
  "https://api.slotweave.com/v1/availability/prod_abc123?date=2026-04-15",
  {
    headers: {
      "Authorization": "Bearer YOUR_API_KEY",
      "Content-Type": "application/json"
    }
  }
);

const { slots } = await response.json();

slots.forEach(slot => {
  console.log(`${slot.time} — ${slot.remaining} spots left`);
});

Create a booking (cURL)

curl -X POST https://api.slotweave.com/v1/bookings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": "prod_abc123",
    "slot_id": "slot_2026041510",
    "customer": {
      "name": "Jane Smith",
      "email": "jane@example.com"
    },
    "quantity": 2
  }'

Webhook payload example

{
  "event": "booking.created",
  "timestamp": "2026-04-15T10:30:00Z",
  "data": {
    "id": "bk_xyz789",
    "product_id": "prod_abc123",
    "slot": "2026-04-15T10:00:00Z",
    "customer": {
      "name": "Jane Smith",
      "email": "jane@example.com"
    },
    "quantity": 2,
    "total": 15000,
    "currency": "usd",
    "status": "confirmed"
  }
}

Troubleshooting

Widget not loading

  • Check that your API key (data-key) is correct
  • Ensure the script URL is https://cdn.slotweave.com/widget.js (not http)
  • Check your browser console for errors
  • Verify your domain is added to your allowed embed domains in the dashboard

Payments not working

  • Confirm your Stripe API keys are entered correctly in the dashboard
  • Use Stripe test mode keys for development, live keys for production
  • Check that your Stripe account is fully activated and verified

Need help?

Email us at support@slotweave.com or check our status page for any service issues.