# Admin Manual

A practical guide for salon staff — how to use the admin side of the Crussell booking system for day-to-day operations.

---

## Getting Started

### Logging In

Go to the website and log in with your admin email and password. Once logged in as an admin, you'll see additional menu options that regular customers don't have — specifically the **Today** page and the **Admin** dashboard.

### Three Main Admin Pages

- **Today** — your daily operations hub. This is where you manage today's appointments, approve new bookings, and handle walk-ins.
- **Admin** — the management dashboard. This is where you set up services, manage customers, adjust schedules, and handle the salon's settings.
- **Schedule** — a weekly calendar view showing all appointments across the week in a Google Calendar-style layout. Closed days are shown with a striped overlay; any bookings that exist on closed days (from historical data or system bookings) are still visible above the stripes. Access it from the navigation bar.

---

## Today Page

This is the page you'll use most often during the working day. It's divided into several sections.

### Today Stats

At the top, you'll see a summary of today's key metrics:
- **Total appointments** — how many bookings are scheduled for today
- **Confirmed** — how many are confirmed and ready to go
- **Pending** — how many are still waiting for your approval
- **Completed** — how many have already finished today

This gives you a quick snapshot of the day at a glance.

### Current and Next Appointment

At the very top of the page, you'll see two cards:

**Current Appointment** (if one is happening right now):
- Shows the customer's name
- Lists the services they booked
- Shows the start time and how long the appointment lasts
- The appointment status updates automatically as time passes

**Next Appointment** (the one coming up after the current one):
- Shows the customer's name and time
- Shows how long until they arrive
- Lists their services

**Summary Card (End of Day / Closed Days):**

When all today's appointments are done, the current/next cards are replaced by a **summary card** that shows:

- **All done for today!** — shown on a regular open day when all appointments are finished. Displays daily stats: customers served, total amount taken, tips, and bookings made since yesterday's closing time.

- **Closed today** — shown when the salon is closed (regular closed day or a holiday). Shows the same stats but covering the full working period before the closure (e.g., Monday's summary covers the previous Tuesday–Saturday). This includes any activity that happened on closed days (online bookings, gift card purchases, etc.).

The summary card also appears on an open day if **tomorrow is closed**, showing both today's daily summary and an additional week summary covering the period up to today.

#### Buttons on the Current Appointment Card

**Edit** — Opens a window where you can change which services are included in the appointment. You can add services, remove services, or swap them out. You can also adjust the price or duration of individual services if needed (for example, if a service took longer than expected last time). You can also update the appointment notes here.

**Reschedule** — Opens the reschedule window where you can move this appointment to a different date and time. The system shows available slots, checks for conflicts with existing bookings, and lets you confirm the change in one click.

**Take Payment** — Opens the payment window where you can choose between Card (Square Terminal), Cash, or Gift Card payment. See the "Taking Payments" section below for full details.

**Extend** and **Cancel** — These buttons are not yet wired up. For now, you can cancel a booking through the Booking Details window instead.

### Today's Calendar Grid

The Today page includes an interactive calendar grid showing the whole day. You'll see:
- Time blocks (bars showing the day from open to close)
- Existing appointments as coloured blocks
- Time blockers as red/hatched bars (these are periods when the salon is unavailable — meetings, lunch breaks, etc.)

You can scroll through the day to see what's happening when.

### Pending Approvals

This section shows bookings that need your attention. You'll see:
- New bookings that are pending confirmation
- Edit requests from customers who want to change their appointment time
- Each entry shows a side-by-side comparison: the original booking vs the proposed changes

For new bookings, you can click **Approve** or **Decline**. For edit requests, you can click **Approve** or **Deny**. The system handles the rest automatically.

---

## Taking Payments

When a customer is ready to pay, you can open the payment window from the Today page or from the Booking Details window.

### What You Can See

The payment window shows:
- The customer's name
- The appointment details
- The services and their prices
- The total amount due

You can also adjust the price of individual services if needed — for example, if a service took longer than expected and you need to charge more.

### Payment Methods

**Card (Square Terminal)** —
1. Click **Card** (Square Terminal)
2. The system creates a payment request on the Square Terminal device
3. The customer inserts/taps their card on the terminal
4. The system polls the terminal for status and updates the payment window automatically
5. Once complete, the payment is recorded

**Cash** —
1. Click **Cash**
2. Enter the amount the customer gave you
3. The system calculates the change due automatically
4. Click **Confirm Payment** to record it
5. You can also click **Keep Change as Tip** if the customer wants to leave the change as a tip

**Gift Card** —
1. Click **Gift Card**
2. Enter the 12-digit gift card ID (it formats automatically as you type: XXXX XXXX XXXX)
3. If the gift card has a balance, the system shows the remaining amount
4. Click **Apply Gift Card** to record the payment
5. If the gift card balance covers part of the total, the remaining amount can be paid with another method

**Account Balance** —
If the customer has previously redeemed a gift card to their account balance, a **Use Balance** option appears:
- Shows the customer's available balance
- Click **Full Balance** to apply the maximum amount, or enter a custom amount
- The remaining total (if any) can be paid with another method
- Account balances do not expire, but accounts can be deleted after 5 years of no activity

### Tip Selection

During card payments, you can also add a tip:
- Preset percentages: 10%, 15%, 20% (the £ amount is shown for each)
- Custom amount: enter any amount
- Tips are calculated on the net total after discounts (not on the pre-discount subtotal)

### Service Price Overrides

You can adjust the price of individual services directly in the payment window:
- Click on any service's price
- Enter a new amount
- The total updates automatically

This is useful when a service took longer than expected, or you want to add a surcharge for a complex design.

---

## The Admin Dashboard

The Admin dashboard is where you manage the salon's settings, services, customers, and bookings.

### Users

The Users list shows all customers who have accounts. You can:
- Search for a customer by name or email
- Click on any customer to see their full profile
- View their booking history
- See their customer relationship data (total spend, total visits, top services)
- Record patch tests
- View their loyalty stamps and referral history
- See their privacy and consent status

### Bookings

The Bookings list shows all appointments. You can:
- Search by customer name or booking ID
- Filter by date range
- View booking details
- Approve or cancel pending bookings
- See bookings by created date range (useful for "show me all bookings from this week")

### Services

The Services section lets you manage the salon's treatment list:
- Add new services (name, price, duration, description)
- Edit existing services
- Delete services
- Toggle services on/off (hide them from customers without deleting them)
- Set patch test requirements
- Set minimum age requirements

**Patch test duration:** When you create a service, you can set how many hours a patch test takes. If the duration is more than 0 hours, the system automatically creates a patch test record for that service.

### Custom Services

Custom services are one-off or special-request treatments that aren't in the permanent catalog. For example, a bridal party wants a specific nail design that you don't normally offer.

You can manage custom services in the **Custom Services** section:

- **Create** — Add a custom service with name, description, price, duration, and minimum age. A custom service will not appear on the public price list.
- **Edit** — Update the name, price, duration, or other details.
- **Promote** — Convert a custom service into a permanent service. This migrates all existing booking references from the custom service to the new permanent service. Use this when a one-off design becomes popular enough to offer regularly.
- **Delete** — Remove a custom service. You can only delete custom services that have never been used in a booking.
- **Search** — Search by name or keyword.
- **Popular** — See which custom services are most frequently used.

Custom services can be added to bookings from the **Booking Create** and **Walk-In** flows, just like regular services.

### Scheduling

The Scheduling section has three parts:

**Default Hours** — set the salon's regular weekly opening hours. You can set start and end times for each day, and mark days as closed.

**Exceptional Hours** — create holiday periods or special opening hours. For example, "Christmas Week: closed 25th–27th December, open 28th–30th 10am–4pm." You create a group of days, then apply that group to specific weeks.

**Time Blockers** — create one-off or recurring unavailable periods. See the "Time Blockers" section below for full details.

### Gift Cards

The Gift Cards section lets you manage the salon's gift card system:

**Create a Gift Card** — Click **Generate Card**. Choose between:
- **Code**: Creates a gift card with a code (for customers to redeem online)
- **Stock**: Creates an inventory card (a physical card with £0 balance, for stock management)

Set the customer (or select "Walk-in / Call-in Guest" for anonymous cards), the amount, and the payment method. You can also send the code to a recipient's email.

**Payment methods for creating a card:**
- **Card Machine** — process via Square Terminal
- **Cash** — enter cash received
- **Card Details** — enter card number, expiry, and CVC for online processing
- **Giveaway** — create the card at no charge (for loyalty rewards, etc.)

**Top-Up a Gift Card** — Select a gift card and click **Top Up**. Choose whether the top-up is a Giveaway (no charge) or Purchase (customer pays). Enter the amount and choose the payment method.

**Inventory Cards** — These are zero-value cards for stock management. You create them with the **Stock** option, then top them up later when a customer buys one.

**Expired Balances** — Click **Expired Balances** to see dormant balances from expired gift cards or deleted accounts. Each entry shows the original balance, when it expired, and whether it has been claimed. Click **Claim** to record that you've returned the funds to the customer.

**Important:** Gift cards expire after 24 months of no activity — not from the date of purchase. Each time the card is used (balance check, top-up, redeem, or payment), the timer resets. This is a 24-month rolling expiry, which is fairer than a fixed expiry.

### Discount Campaigns

The Discount Campaigns section lets you create and manage promotions:

**Campaign Types:**
- **Time-based**: "10% off this week" — set a start and end date
- **Per-user milestone**: "15% off your 5th visit" — triggers when a customer hits an exact booking count
- **Global milestone**: "20% off the salon's 1000th booking" — triggers on the salon's total
- **Anniversary**: "10% off your 1-year anniversary" — triggers based on time since the customer's first visit

**Campaign Lifecycle:**
- Create a campaign → it starts as **Draft**
- Click **Activate** → it becomes **Active** and starts applying
- Click **Complete** → it stops applying
- Click **Cancel** → permanently disabled
- Click **Revert to Draft** → for editing before re-activating

**How discounts apply:** When a customer completes a paid appointment, the system checks all active campaigns and applies any that the customer qualifies for. All discounts stack additively — if they have a 10% loyalty discount and a 5% campaign, they get 15% off.

**Time-based campaigns:** if multiple are active, only the highest percentage applies. Milestones are one-shot per customer per campaign.

### Notifications

The Notifications page shows all admin notifications. You can access it via the bell icon in the top navigation bar.

Notifications are sorted by importance:
1. **Booking Pending Approval** — needs your review
2. **Booking Cancelled** — informational
3. **Late Cancellation (< 24h)** — customer cancelled late
4. **Deposit Issue** — related to deposits
5. **Deposit Payment Received** — customer paid a deposit
6. **Affiliate Referral Claimed** — someone used a referral code
7. **Booking Edit Requested** — customer wants to change their booking
8. **New Booking Received** — informational
9. **No Payments in 1 Month** — accounting reminder
10. **No Payments in 1 Week** — accounting reminder

Each notification has an **Acknowledge** button. Clicking it marks it as seen. When you click **Approve Booking**, **See Booking**, or **See User**, the notification is automatically acknowledged for you.

You can toggle **Show acknowledged** to see all past notifications.

---

## Rescheduling Appointments

### How to Reschedule

You can reschedule an appointment from the Today page or from the Booking Details window.

1. Click **Reschedule** on the current appointment card (or on the booking details)
2. A window opens showing available time slots
3. The system checks for conflicts with existing bookings
4. Pick a new date and time
5. If the appointment is close to the start time (within 72h with payments or 24h without), the system shows a warning. You can optionally check:
   - **Forgive fees** — overrides deposit protection for the reschedule
   - **Forgive no-show** — waives the no-show record that would otherwise apply
6. Click **Confirm** — the appointment is moved to the new slot

### Refund Calculation on Reschedule

If you reschedule a booking with payments, the system doesn't process a refund — the payments move with the booking to the new time. The forgiveness checkboxes are for admin discretion when handling short-notice changes.

### What the Customer Sees

If a customer requests a reschedule (from their Account page), the request comes to the Pending Approvals section on the Today page. You see a side-by-side comparison of the original booking vs the proposed changes. Click **Approve** or **Deny**.

If you approve, the appointment is moved to the new slot. If you deny, the original appointment stays the same. The customer gets a notification either way.

---

## Creating Bookings

### Admin Create Booking (Call-In)

When a customer calls to book over the phone:

1. Go to the **Admin** dashboard
2. Click **Create Booking**
3. Select the customer (search by name or email)
4. The system shows their patch test records and age — services they're not eligible for are greyed out
5. Select the services they want — you can also add **custom services** (one-off services not in the public list) alongside regular services
6. Pick a date and time
7. The system holds the slot for 1 hour (call-in reservation)
8. Fill in notes if needed
9. Confirm the booking

### Walk-In Booking

When a customer walks in without a prior appointment:

1. Go to the **Today** page
2. Click **Walk-In Booking**
3. Select the services they want
4. The system shows available slots for today
5. Pick a slot — the system holds it for 5 minutes (short hold because the customer is here now)
6. Fill in customer details (or select an existing customer)
7. Confirm the booking

**Walk-in vs Call-in:** Walk-ins use a 5-minute reservation hold (short, because the customer is already here). Call-ins use a 1-hour hold (longer, because the customer is booking over the phone and may need time to confirm).

---

## User Details

When you click on a customer in the Users list, you see their full profile.

### Profile

- Name, email, phone, date of birth
- Profile picture (if uploaded)
- Account status (verified, unverified, admin)
- Created date

### Booking History

- All their appointments — upcoming and past
- Each shows date, time, services, price, status
- Click any booking to see full details

### Customer Relationship

- **Total Spend** — actual card, cash, and gift card payments only (excludes discounts)
- **Total Visits** — how many completed appointments
- **First Visit** — date of their first completed appointment
- **Last Visit** — date of their most recent completed appointment
- **Average Visits per Month** — rolling average
- **Top 5 Services** — their most-booked treatments
- **Notes History** — changes to their notes over time

### Patch Tests

- Shows which patch tests they have on record
- Validity status (valid, expired, not recorded)
- You can record a new patch test here

### Loyalty and Referrals

- **Loyalty stamps** — their current stamp count
- **Referral code** — their unique 12-character code they can share with friends
- **Referral history** — who they've referred and who referred them

### Privacy and Consent

- Whether the customer has agreed to the privacy policy and terms
- Whether they've agreed to data retention
- When these consents were last updated

---

## Booking Details

When you click on any booking (from the Bookings list or from Today's appointments), a window opens showing everything about that booking.

### What You See

- Customer name and contact details
- Date and time of the appointment
- How long it lasts
- The services included and their prices
- The total price
- Any notes on the booking
- The current status
- Who created the booking (if an admin created it)

### Actions You Can Take

**Approve** — If the booking is pending, this confirms it. The appointment moves into the confirmed schedule.

**Cancel** — Cancels the booking. If the booking was pending, it's simply removed. If it was already confirmed, it's marked as cancelled by the salon.

**Edit** — Opens the Edit Booking window where you can change the services, prices, durations, and notes.

**Reschedule** — Opens the Reschedule window where you can move the appointment to a different time.

**Take Payment** — Opens the Payment window where you can process the payment.

---

## Approval Workflow

When a customer books online, the booking may need your approval. The system creates a notification in the Pending Approvals section.

**What triggers a booking needing approval:**
- If the booking has notes attached (the customer wrote something in the notes field)
- If the booking is for today (last-minute bookings need a quick review)

**What happens:**
- You see a notification in Pending Approvals
- Click **Approve** to confirm the booking
- Click **Decline** to reject it
- If you decline, the customer is notified and the booking is cancelled

**Auto-approval:** If the booking has no notes and is not for today, it's automatically confirmed. No action needed.

---

## Time Blockers

Time blockers are periods when the salon is unavailable for bookings — meetings, personal appointments, lunch breaks, holidays.

### The Time Blockers Card

On the Admin dashboard, you'll find the **Time Blockers** card. It shows:
- A list of all existing time blockers (one-off and recurring)
- Each blocker shows its description, start time, and duration
- Recurring blockers show their pattern (e.g., "Every Wednesday at 1:00 PM")

### How to Add a Time Blocker

1. Click **Add Blocker**
2. Set the **start date and time**
3. Set the **end time** (or duration)
4. Add a **description** (for example, "Staff meeting" or "Lunch break")
5. Choose **One-off** or **Recurring**:
   - **One-off**: happens once on the specified date
   - **Recurring**: set a pattern (e.g., every Wednesday, every 2nd Friday of the month)
6. **Check for overlaps** — the system automatically checks if your blocker conflicts with existing bookings. If there are overlaps, you'll see which appointments are affected before you confirm
7. **Save** — the blocker is created and the affected time slots become unavailable for new bookings

### Overlap Detection

When you create a time blocker, the system checks for any existing bookings that fall within the blocked period. You'll see:
- A list of overlapping appointments with customer names and times
- The option to proceed anyway (the bookings remain, but no new bookings can be made during that period)
- This prevents accidental blocking of already-scheduled appointments

### One-Off vs. Recurring

- **One-off blockers** happen once — for example, "Dentist appointment on 15th March at 2pm"
- **Recurring blockers** happen on a schedule — for example, "Lunch break every Wednesday from 1pm to 2pm"

### Removing a Time Blocker

Click the delete button next to any blocker. A confirmation prompt appears before deletion. Once deleted, the time slot becomes available for booking again.

### Time Blockers on the Today Calendar

Time blockers also appear on the Today page's interactive calendar grid as red/hatched bars, so you can see at a glance when the salon is unavailable.

---

## How Booking Statuses Work

Every booking has a status that tells you where it is in its lifecycle.

### The Status Flow

```
Pending ─→ Confirmed ─→ In Progress ─→ Completed
  │            │
  │            └──(deposit deadline passed, unpaid)──→ Pending Release
  │                                                         │
  └──(deposit deadline passed, unpaid)──→ Pending Release──(slot claimed by another booking)──→ Deposit Lapsed
                                                         │
                                                    (payment received) ──→ Confirmed
```

A booking can also branch off to:
- **Client Cancelled** — the customer cancelled it
- **We Cancelled** — the salon cancelled it
- **No Show** — the customer didn't show up
- **Re-Schedule** — the customer requested a reschedule (pending your approval)
- **Pending Release** — the deposit deadline has passed without payment. The slot is vulnerable — another booking can claim it. If the customer pays before the slot is claimed, the booking returns to Confirmed.
- **Deposit Lapsed** — the slot was claimed by another booking while the customer hadn't paid their deposit. The original booking is cancelled and the deposit is forfeited.

### How Statuses Change

**Pending** — the customer has submitted the booking but it hasn't been confirmed yet. Pending bookings need approval (if they have notes or are for today) or are auto-confirmed (if no notes and not today).

**Confirmed** — the booking is locked in. The customer has a confirmed slot. They may need to pay a deposit before the 24-hour deadline.

**In Progress** — the appointment has started. The system automatically updates this based on the current time. You can also manually set it by clicking the appointment on the Today page.

**Completed** — the appointment is finished. The customer has left and the payment is settled. Once completed, the customer earns a loyalty stamp (if it's a paid appointment) and any pending discounts are applied.

**Client Cancelled** — the customer cancelled the booking. If they cancelled with more than 24 hours' notice, no penalty. If less than 24 hours, they get 3 deposit obligations.

**We Cancelled** — the salon cancelled the booking. Used when you decline a booking or cancel it for operational reasons. When you cancel from the admin panel, the system calculates any refund owed based on how much notice the customer gave and how much they paid. If the customer has paid a deposit, up to 50% may be retained depending on the notice period (see **Refunds on Cancellation** below).

**No Show** — the customer didn't show up. This is used when a customer fails to appear without cancelling. It triggers the same deposit obligations as a late cancellation.

**Re-Schedule** — the customer requested a change. The original booking is paused until you approve or deny the request.

**Pending Release** — the customer hasn't paid the required deposit and the deadline (24h before start time) has passed. The booking is kept in a vulnerable state — another customer can book this slot, which would evict the original booking to **Deposit Lapsed**. If the customer pays before the slot is claimed, it goes back to **Confirmed**.

**Deposit Lapsed** — the slot was taken by another booking. The original customer loses their slot. This only happens if the deposit deadline passed without payment.

### Refunds on Cancellation

When you cancel a booking (We Cancelled) or the customer cancels (Client Cancelled), the system calculates the refund based on the **notice period** (time between cancellation and the appointment start):

| Notice Period | What Gets Refunded |
|---|---|
| 72+ hours before the appointment | **Full refund** — 100% of everything paid |
| 24-72 hours before the appointment | **Partial refund** — you keep a protected deposit (up to 50% of the total). Everything paid above that is refunded |
| Less than 24 hours | **No refund** — all payments are retained |

**Override with forgiveness:** When cancelling from the admin panel, you can check:
- **Forgive fees** — refunds 100% regardless of notice period (overrides deposit protection)
- **Forgive no-show** — no no-show/deposit penalty recorded

This is useful for genuine emergencies or when the salon caused the cancellation.

### Manual Status Changes

You can change the status of a booking manually:
- Click on the booking on the Today page
- Click **Progress** to advance to the next status (Pending → Confirmed → In Progress → Completed)
- Click **Cancel** to cancel the booking — a window shows the refund calculation with forgiveness options

**Important:** Once a booking is marked as Completed, it cannot be cancelled. The customer has earned their stamp and any discounts have been applied.

---

## Discount Campaigns

### How to Create a Campaign

1. Go to the **Admin** dashboard → **Discount Campaigns**
2. Click **Create Campaign**
3. Choose the type:
   - **Time-based**: set a start date, end date, and discount percentage
   - **Per-user milestone**: set the exact booking count (e.g., 5th visit) and discount percentage
   - **Global milestone**: set the salon-wide booking count (e.g., 1000th booking) and discount percentage
   - **Anniversary**: set the time since first visit (e.g., 1 year) and discount percentage
4. Fill in the details
5. Save — the campaign is created as a **Draft**
6. Click **Activate** when you're ready to run it

### How Campaigns Appear

When a customer completes a paid appointment, the system checks all active campaigns and applies any the customer qualifies for. The discount appears as a separate line on the booking.

**Example:** A £100 booking with loyalty (10%) + a time-based campaign (5%) shows:
- Discount 1: Loyalty — £10.00
- Discount 2: Campaign (Summer Sale) — £5.00
- **Total discount: £15.00**
- Customer pays: £85.00

### Campaign Rules

- **Time-based campaigns:** If multiple are active, only the highest percentage applies. They don't stack with each other.
- **Milestones:** Each milestone discount fires once per customer per campaign. A "5th visit" discount only applies once.
- **Global milestones:** Can have a maximum redemptions cap. Once reached, the discount stops applying.
- **All campaigns:** Only apply to paid appointments. Free appointments (£0) get no discounts.

---

## Uploading Portfolio Images

The portfolio is the salon's gallery of nail art photos that customers can browse on the website.

### How to Upload

1. Go to the **Admin** dashboard
2. Find the image upload section
3. **Drag and drop** an image file, or click to select one from your device
4. A preview of the image appears so you can check it looks right
5. **File size limit:** Images must be under 20MB. If you select a file larger than 20MB, the upload area gets a red border and shows an error message, and the upload button is disabled until you choose a smaller file
6. **Add tags** — type keywords that describe the image (for example, "french tip", "red", "summer", "glitter"). As you type, the system suggests tags that have been used before, so you can keep tags consistent
7. A confirmation window appears before the image is uploaded
8. **Confirm** — the image is uploaded and appears in the portfolio gallery

### Tips for Tagging

- Use consistent tag names — the system suggests previously used tags to help with this
- You can use the keyboard to navigate tag suggestions quickly
- Tags are how customers find images in the gallery, so be descriptive

---

## FAQ for Staff

### "A customer says they can't log in — they forgot their password"

The password reset system exists on the backend but there's no "Forgot Password" link on the website. Reset the password manually for them, or create a new account if needed.

### "A customer says they cancelled but they're still showing as booked"

Check the booking status. If they cancelled with less than 24 hours' notice and weren't forgiven, the status is "No Show" and they have 3 deposit obligations. If they cancelled with more than 24 hours' notice, the status should be "Client Cancelled".

### "A customer wants to know how much refund they'll get"

The refund tiers are:
- **72+ hours notice:** Full refund of everything paid
- **24-72 hours notice:** Partial refund — the salon keeps a protected deposit (up to 50% of the total)
- **Less than 24 hours:** No refund

If they cancelled from their Account page, the cancellation dialog shows the exact breakdown before they confirm. If you're cancelling as admin, the refund calculation is shown in the cancel dialog with the option to forgive fees.

### "A customer says their slot was released even though they booked it"

This happens when a booking has a deposit requirement and the customer didn't pay before the 24-hour deadline. The booking goes into **Pending Release** status. If another customer books the same slot, the original booking is evicted to **Deposit Lapsed** and the slot is given to the new customer.

Check the booking history — if the status is "Deposit Lapsed", that's what happened. You can help them book a new slot.

### "A customer has 3 deposit obligations but they say they paid all their deposits"

Deposits are reduced by 1 each time a customer completes a paid appointment. If they have 3 deposits, they need to complete 3 appointments and pay for them to clear all 3. Paying a deposit doesn't reduce the count — completing an appointment does.

### "A customer says they redeemed a gift card but they can't see the balance"

Check if the gift card was redeemed to their account balance. Redeeming a gift card moves the value to their account balance. They can see it in the **Gift Cards** tab on their Account page. If they haven't redeemed it yet, they need to do that first.

### "A customer says their gift card is expired but they just got it"

Gift cards expire after 24 months of **no activity**, not from the date of purchase. Each time they use the card (balance check, top-up, redeem, payment), the timer resets. If they haven't used it in 24 months, it expires. The balance is moved to the expired balances system and can be recovered.

### "A customer says they want to use a gift card and cash for the same payment"

They can use their account balance first (if they have redeemed a gift card to their balance), then pay the remaining amount with cash or card. But they cannot use a gift card code and cash simultaneously — it's one code per payment.

### "A customer wants a discount but there's no active campaign"

Discounts are only applied through active campaigns or loyalty stamps. If they don't have 10 stamps and there's no active campaign, they don't get a discount. You can create a new campaign if needed.

### "A customer says they want to reschedule for tomorrow but the system won't let them"

If they have deposit obligations, they can only book appointments at least 24 hours away. If they don't have deposits, they can book as long as it's at least 1 hour before the start time. Also, after 22:00, the system blocks next-morning slots (00:00–11:00) for non-admin users.

### "A customer says they see two bookings on the same day but they only booked one"

Check if they have a guest booking and a registered booking. Guest bookings are separate from registered bookings. They might have booked once as a guest and once while logged in.

### "A customer wants to know what happens to their data"

Guest data is anonymized 6 months after the appointment. Registered account data is kept until the account is deleted. They can request a full data export from their Account page via the GDPR section.

### "A customer says they can't see certain services"

If they're logged in and under the minimum age, those services are hidden. If a service is greyed out, it needs a patch test. If they're not logged in, all services are shown (age is checked later).

### "A customer says they want to cancel a booking from the website"

They can cancel from their Account page. If they don't have an account, they need to call the salon. The User Manual explains this in detail.

### "A customer says they never got a confirmation email"

Email notifications are not yet wired up. The system doesn't send confirmation emails. The customer sees a confirmation screen after booking and can add the appointment to their calendar.

### "A customer says they want to pay a deposit but there's no option"

They can pay a deposit from their Schedule page. Click on the booking, then **Pay Deposit**. If they don't see the option, they may not have deposit obligations.

### "A customer says they want to tip but they can't find the tip page"

After their appointment is marked as completed, they can access the tip page from their booking confirmation or via a link the salon sends them.

### "A customer says their booking status is 'pending' but they confirmed it"

Pending bookings need admin approval. If the booking has notes or is for today, it's pending. If it has no notes and is not for today, it's auto-confirmed. Check the Pending Approvals section.

### "A customer says they want to create a custom service (bridal party, etc.)"

You can now create **custom services** — one-off or special-request services that aren't part of the permanent catalog. Go to the **Admin** dashboard → **Custom Services** section. Create the custom service with name, price, and duration — it won't appear in the public service list. Custom services can be added to any booking from the admin booking flows. You can also promote a custom service to a permanent service if you decide to offer it regularly.
