# payload-appointments-plugin

> A blank template to get started with Payload 3.0

Latest version **3.0.0** (published 2025-12-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install payload-appointments-plugin
pnpm add payload-appointments-plugin
yarn add payload-appointments-plugin
bun add payload-appointments-plugin
```

## Health

**Score 60/100 (C)** — status: stable.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 3.0.0 |
| Published | 2025-12-14 |
| First published | 2024-03-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | ^18.20.2 \|\| >=20.9.0 |
| Dependencies | 9 |
| Unpacked size | 196.5 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Maintainers | ahmetskilinc |

## Links

- npm: https://www.npmjs.com/package/payload-appointments-plugin
- npm.io page: https://npm.io/package/payload-appointments-plugin

## Dependencies (9)

- [clsx](https://npm.io/package/clsx.md) ^2.1.1
- [moment](https://npm.io/package/moment.md) ^2.30.1
- [recharts](https://npm.io/package/recharts.md) 2.15.4
- [@payloadcms/ui](https://npm.io/package/@payloadcms/ui.md) 3.68.3
- [tailwind-merge](https://npm.io/package/tailwind-merge.md) ^3.4.0
- [@payloadcms/next](https://npm.io/package/@payloadcms/next.md) 3.68.3
- [react-big-calendar](https://npm.io/package/react-big-calendar.md) ^1.19.4
- [@react-email/render](https://npm.io/package/@react-email/render.md) ^2.0.0
- [@react-email/components](https://npm.io/package/@react-email/components.md) ^1.0.1

## Recent versions

- 3.0.0 (latest) — 2025-12-14
- 3.0.0-beta.4 — 2024-11-06
- 3.0.0-beta.3 — 2024-11-06
- 0.0.4-beta-3 — 2024-03-30
- 0.0.4-beta-2 — 2024-03-29
- 0.0.4-beta-1 — 2024-03-29
- 0.0.3-beta — 2024-03-29
- 0.0.2-beta — 2024-03-27
- 0.0.1-beta — 2024-03-27

## README

> [!Warning]
> This plugin is a WIP and currently testing.

# Payload plugin to add appointment scheduling to your Payload app.

This plugin allows you to add appointment scheduling capabilities to your payload app. It provides:

- Services and Appointments collections.
- An Appointment schedule calendar view.
- Opening times global.

### Appointments Schedule View For Everyone

![Appointments List day](./images/appointments-schedule-day.png)

### Appointments Schedule View For Logged In User

![Appointments List week](./images/appointments-schedule-me-day.png)

### Dashboard View

![Dashboard](./images/dashboard.png)

## Installation

#### 1. install

```
npm i payload-appointments-plugin
pnpm install payload-appointments-plugin
yarn add payload-appointments-plugin
```

#### 2. add fields to users collection

```typescript
const Users: CollectionConfig = {
  // ...
  fields: [
    {
      name: 'firstName',
      type: 'text',
      label: 'First name',
    },
    {
      name: 'lastName',
      type: 'text',
      label: 'Last name',
    },
    {
      name: 'roles',
      type: 'select',
      options: [
        {
          value: 'admin',
          label: 'Admin',
        },
        {
          value: 'customer',
          label: 'Customer',
        },
      ],
    },
    {
      name: 'roles',
      type: 'select',
      options: [
        {
          label: 'Admin',
          value: 'admin',
        },
        {
          label: 'Customer',
          value: 'customer',
        },
      ],
    },
    {
      name: 'appointments',
      type: 'join',
      collection: 'appointments',
      defaultLimit: 0,
      maxDepth: 999,
      on: 'customer',
    },
  ],
};

export default Users;
```

#### 3. add to config

```typescript
import appointments from 'payload-appointments-plugin';

export default buildConfig({
  /* ... */
  plugins: [appointmentsPlugin()],
  /* ... */
});
```

#### 4. add email config

follow instructions on [PayloadCMS Email Docs](https://payloadcms.com/docs/email/overview)

## Todo?

- [x] Appointments collection
  - [x] Appointment type, Host, Customer, Services, Title, Start date/time, End date/time
  - [x] Appointment type is appointment or blockout (lunch, break, interview, meeting, day off? etc.)
  - [x] Endpoint for getting available time slots
- [ ] Add new properties/attributes to default auth collection
  - [x] Taking appointments checkbox
  - [x] Preffered name
  - [ ] Calendar subscription
- [x] Services collection for ...services
  - [x] Title
  - [x] Description
  - [x] Duration
  - [x] Cost/Price
    - [ ] Variable cost (per hour... etc.)
- [ ] Emails
  - [ ] Email config (Will need to be added by the dev)
  - [ ] React email templates
    - [ ] Appointment created email
      - [ ] Add iCal link/file to email
    - [ ] Appointment updated email
      - [ ] Add iCal link/file to email
    - [ ] Customer signed up email
- [ ] Custom payload views
  - [x] Appointments schedule view /appointments/schedule
  - [x] Appointments schedule view for loggined in user /appointments/schedule/me
  - [x] Charts /appointments/charts
  - [x] Marketing Campaigns /appointments/marketing-campaigns
  - [ ] ...more to come
- [ ] Endpoints
  - [x] Get available timeslots for given date, services, host
  - [ ] ...more to come
- [ ] Calendar schedule view
  - [x] Ability to update appointment from calendar view
  - [ ] Ability to add appointments by clicking/tapping slot in calendar
    - [x] Add appointments using Payload Drawer
    - [ ] Get start date and time from clicked slot
    - [ ] Get host from clicked slot
- [x] Opening times global
  - [x] Monday...Sunday
  - [x] Set times for different days of week
  - [x] Define if closed on that day
- [x] Add properties for showing/hiding navItems and beforeDashboard
- [ ] Add overrides for collections

A lot more I want to add. But may need some help.

---
_Source: https://npm.io/package/payload-appointments-plugin · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
