creno.

Scheduling that drops into any website.

Real-time availability, recurring schedules, and bookings. Take our widget, as a React component or one <script> tag, or build your own UI on the same API. No calendar to build, and no double bookings to worry about.

1. Pick a date

July 2026
SMTWTFS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Built for how real businesses actually schedule

Not every business runs a fixed Monday to Friday week. Créno doesn't assume yours does.

Flexible recurring schedules

Set hours using weekly, bi-weekly, or "3rd Tuesday of the month" patterns that actually match how your business runs, and change them going forward without losing history.

Multiple calendars, one account

One resource for a solo operator, or a dozen for a team: every bay, stylist, or room gets its own independent calendar.

Optional service menus

Offer one simple booking flow, or a full menu of services with their own durations and schedules. Customers only see a picker when there's something to pick.

No double bookings

Booking conflicts are prevented at the database level, not just in the UI, and verified under real concurrent load, not just in theory.

Automatic or manual approval

Let bookings confirm instantly, or review and approve each one yourself. Configurable per calendar.

Match your brand, not ours

Every color, radius, and font is a CSS variable. Theme it to disappear into your site, with no Créno branding required.

Two paths, one backend. Pick the one that fits.

Take our widget and write almost nothing: a React or Vue component, or one script tag anywhere else. Or keep control of the UI and call the same API from your server, with our Node.js and Python kits.

React / Vue / Next.js / Astro
import { BookingWidget } from "@creno/react";
import "@creno/react/style.css";

<BookingWidget
  apiUrl="https://api.crenoapp.com"
  apiKey="pk_live_..."
/>
Any website
<script src="https://cdn.crenoapp.com/embed.js" defer></script>

<creno-widget
  api-url="https://api.crenoapp.com"
  api-key="pk_live_..."
></creno-widget>
Build your own UI

Node.js and Python kits, or the REST API directly from any language.

import { CrenoClient } from "@creno/node";

const creno = new CrenoClient("pk_live_...");
const { slots } = await creno.getAvailability({ from: "2026-08-01", to: "2026-08-07" });

const booking = await creno.createBooking({
  startAt: slots[0].startAt,
  customerName: "Jane Doe",
  customerEmail: "jane@example.com",
});

Ready to stop losing bookings to a Messenger inbox?

Get an API key and have a working booking flow live in under an hour.

See pricing Talk to us