payload-reserve

Expert guide for the payload-reserve plugin — a reservation and booking system for Payload CMS 3.x. Use when working with: reservation systems, booking systems, appointment scheduling, calendar views, availability checks, conflict detection, double-booking prevention, status workflows (pending/confirmed/completed/cancelled/no-show), buffer times, cancellation policies, schedule management, service/resource configuration, customer management, walk-in bookings, resource owner multi-tenancy, extra reservation fields, admin UI components (calendar, dashboard widget, availability grid), CalendarView resource filter, or integrating payments (Stripe) and notifications with a Payload CMS reservation plugin. Triggers on: "payload-reserve", "payloadReserve", "reservation plugin", "booking plugin", "appointment plugin", "schedule plugin", "availability overview", "calendar view", "reservation conflict", "double booking", "booking status", "cancellation policy", "resource owner", "resourceOwnerMode", "multi-tenant reservations", "extra reservation fields".

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "payload-reserve" with this command: npx skills add elghaied/payload-reserve/elghaied-payload-reserve-payload-reserve

payload-reserve

A full-featured reservation/booking plugin for Payload CMS 3.x. Adds scheduling with conflict detection, a configurable status machine, multi-resource bookings, capacity tracking, resource owner multi-tenancy, extra reservation fields, 5 public REST endpoints, and admin UI components (calendar view with resource filter, dashboard widget, availability grid). Supports localization.

Install

pnpm add payload-reserve
# or
npm install payload-reserve

Peer dependencies: payload ^3.79.0, @payloadcms/ui ^3.79.0, @payloadcms/translations ^3.79.0

Quick Start

import { buildConfig } from 'payload'
import { payloadReserve } from 'payload-reserve'

export default buildConfig({
  collections: [/* your collections */],
  plugins: [
    payloadReserve(), // zero-config — all defaults apply
  ],
})

What Gets Created (defaults)

5 collections: services, resources, schedules, customers (auth), reservations

3 admin components: Calendar view (replaces reservations list), Dashboard widget (today's stats), Availability overview at /admin/reservation-availability

5 REST endpoints: GET /api/reserve/availability, GET /api/reserve/slots, POST /api/reserve/book, POST /api/reserve/cancel, GET /api/reserve/customers

Default status flow: pending -> confirmed -> completed | cancelled | no-show

Extend Your Own Users Collection

payloadReserve({
  userCollection: 'users', // injects phone, notes, bookings join into your existing collection
})

Resource Owner Multi-Tenancy

Opt-in mode for Airbnb-style platforms where each user manages their own resources.

payloadReserve({
  userCollection: 'users',
  resourceOwnerMode: {
    adminRoles: ['admin'],
    ownerField: 'owner',
    ownedServices: false,
  },
})

Auto-wires ownership access control on Resources, Schedules, and Reservations. Set ownedServices: true to also scope Services. The access override in plugin config always takes precedence.

Common Config Options

payloadReserve({
  adminGroup: 'Reservations',       // admin panel group label
  defaultBufferTime: 0,             // buffer minutes between bookings
  cancellationNoticePeriod: 24,     // minimum hours notice to cancel
  userCollection: 'users',          // extend existing auth collection
  disabled: false,                  // set true to disable plugin
  extraReservationFields: [],       // extra Payload fields appended to Reservations
  resourceOwnerMode: {              // opt-in multi-tenant owner mode
    adminRoles: ['admin'],
    ownerField: 'owner',
    ownedServices: false,
  },
})

Key Patterns

  • Escape hatch — bypass all validation hooks: context: { skipReservationHooks: true } on any payload.create/update call
  • Status machine — fully configurable; blockingStatuses control conflict detection, terminalStatuses lock records
  • Idempotency — pass idempotencyKey on POST /api/reserve/book to prevent duplicate submissions
  • endTime — always auto-calculated from startTime + service.duration; do not set manually for fixed services

Reference Files

Load the relevant file when the user's question is about that topic:

TopicFile
All plugin options, slugs, access, resourceOwnerMode, full config examplereferences/configuration.md
Collection schemas (fields, types, examples)references/collections.md
Status machine config, custom statuses, transitionsreferences/status-machine.md
Duration types, multi-resource bookings, capacity modesreferences/booking-features.md
Plugin hook callbacks (afterBookingCreate, afterStatusChange, etc.)references/hooks-api.md
REST API endpoints (params, responses, fetch examples)references/rest-api.md
Admin UI: CalendarView, dashboard widget, availability overviewreferences/admin-ui.md
Real-world examples: salon, hotel, restaurant, Stripe, email, resource owner multi-tenantreferences/examples.md
DB indexes, reconciliation job, performance tuningreferences/advanced.md

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

clinic-visit-prep

帮助患者整理就诊前问题、既往记录、检查清单与时间线,不提供诊断。;use for healthcare, intake, prep workflows;do not use for 给诊断结论, 替代医生意见.

Archived SourceRecently Updated
Automation

changelog-curator

从变更记录、提交摘要或发布说明中整理对外 changelog,并区分用户价值与内部改动。;use for changelog, release-notes, docs workflows;do not use for 捏造未发布功能, 替代正式合规审批.

Archived SourceRecently Updated
Automation

klaviyo

Klaviyo API integration with managed OAuth. Access profiles, lists, segments, campaigns, flows, events, metrics, templates, catalogs, and webhooks. Use this skill when users want to manage email marketing, customer data, or integrate with Klaviyo workflows. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).

Archived SourceRecently Updated
Automation

lifelog

生活记录自动化系统。自动识别消息中的日期(今天/昨天/前天/具体日期),使用 SubAgent 智能判断,记录到 Notion 对应日期,支持补录标记。 适用于:(1) 用户分享日常生活点滴时自动记录;(2) 定时自动汇总分析并填充情绪、事件、位置、人员字段

Archived SourceRecently Updated