Guests

Property guest profiles, stay history, VIP, and merge.

Operations·Staff·Updated 2026-09-29·Open in console

Guests is the property CRM: people stored for this hotel, used by reservations, folios, and invoices.

Search by name, email, phone, company, or loyalty number. Filter VIP. Open a row for the profile, stay history, and posted folio charges.

The form is grouped by job: contact, registration (ID), photos, and stay notes.

A profile holds contact, address, company, GSTIN, loyalty, notes, preferences, VIP, tags, and the hotel register: date of birth, gender, nationality, government ID, and emergency contact.

Stay details sit under the profile, one block per confirmation: arriving from, next destination, purpose, and the arrival and departure times for that visit. They are not part of the person record, so a guest with two stays has two blocks.

ID type and number are for the stay register. Numbers are encrypted; the console shows last 4 only. Front and back photos are optional, encrypted, and staff-only. Prefer passport, driving licence, or voter ID for scans—do not keep Aadhaar photocopies.

Foreign nationality versus this hotel’s country adds visa type, number, and expiry, plus passport issue place and issue date (Form C). Merge folds a duplicate into this profile: stays move here, empty fields fill from the source, tags union, and VIP stays if either record was VIP. The source profile is removed.

How to

  1. Search or filter VIP, then open a row—or use New guest to add a profile without a stay.
  2. Keep email, phone, and government ID accurate so invoices and later stays can find the same person. Collect ID before or at check-in.
  3. On New reservation, search and attach this profile instead of typing a new name. After the stay exists, edit Stay details on this guest page.
  4. If two rows share an email or phone, open the keeper and merge the duplicate.

Technical

  • GET /api/v1/guests and GET /api/v1/guests/:id need a staff JWT and property membership. POST /guests, PATCH /guests/:id, POST /guests/:id/merge, and ID photo upload/delete need guest:manage.
  • ID and visa numbers are encrypted at rest. List and profile return last 4 and idOnFile/hasIdScan, never the full number. Photos: POST/GET/DELETE /api/v1/guests/:id/documents.
  • List accepts propertyId, q, and vip=true. Create and list search are property-scoped. Merge requires sourceGuestId on the same property.
  • POST /api/v1/reservations accepts guestId for an existing profile, or nested guest to create one. guestId must belong to the reservation property.