All modules

Booking backend for service websites.

Add appointment and scheduled-service flows to custom sites with resource availability, BookingOffering checkout, and admin management handled by Arky.

Best for

  • salons and clinics
  • classes and workshops
  • consulting bookings
  • rental scheduling

Use it for service businesses where the website needs real availability, not a contact form pretending to be scheduling.

What this module gives your project.

Booking services, resources, and offerings

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Availability windows

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Scheduled service checkout

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Confirmation and reminder emails

Use this capability from your custom frontend while the operational side stays manageable in Arky admin.

Custom UX with backend state managed in Arky.

  • BookingService listings
  • BookingResource availability
  • Available time slots
  • Scheduled cart lines

A client-facing back office for the same module.

  • BookingService setup
  • BookingResource calendars
  • Booking management
  • Reminder email timing
  • Customer context

Code the frontend. Connect Arky as the backend.

Start with the frontend stack the project deserves, then connect only the Arky modules it needs. The Admin, API, SDK, and store email stay behind the custom experience.

  1. Define Booking Services and Resources
  2. Render live availability in the frontend
  3. Confirm bookings through checkout and the booking emails
import { createOrderToken, initialize } from "arky-sdk/storefront";

const arky = initialize("arky_pk_...", {
  locale: "en",
  createVisitorIdentity: () => ({
    customer_id: crypto.randomUUID(),
    session_id: crypto.randomUUID(),
  }),
  createSessionId: () => crypto.randomUUID(),
  createId: () => crypto.randomUUID(),
  createOrderToken,
});

const website = await arky.content.load({ collection: { key: "website" } });
const {
  items: [catalog],
} = await arky.eshop.catalog.find();
const cart = arky.eshop.cart({ buyer: { type: "customer" }, catalog_id: catalog.id });
const current = await cart.ensure();
const services = await arky.eshop.bookingService.find({
  catalog_id: catalog.id,
  limit: 6,
});

await arky.actions.track({
  key: "website_action",
  data: {
    page: website.record.id,
    cart: current.id,
    services: services.items.length,
  },
});

Useful API touchpoints.

  • GET /v1/storefront/booking-services
  • GET /v1/storefront/booking-services/availability?booking_service_id=...
  • POST /v1/storefront/carts/{id}/booking-items
Start free

Early access for custom frontend teams.