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.
- Define Booking Services and Resources
- Render live availability in the frontend
- 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,
},
}); Where a developer starts.
Useful API touchpoints.
-
GET /v1/storefront/booking-services -
GET /v1/storefront/booking-services/availability?booking_service_id=... -
POST /v1/storefront/carts/{id}/booking-items