# PTA Setup Guide

# Admin UI Overview

When you first log in to your pickAtime account, you will automatically land on the Administrative User Interface, with the Event Reports displayed by default.

### Profile &amp; Sidebar Navigation

- **Profile Settings**: In the top-left corner, your name is displayed. Click the back arrow (&lt;) to edit your profile, change your password, or log out.
- **Minimize Sidebar**: Click the "X" in the green ribbon to collapse the sidebar and expand your workspace.

---

- **Multi-Account Users**: Use the Vendor drop-down menu to toggle between different accounts.

### Left-Hand Navigation Menu

- **Reports**: View both account-wide and event-specific data.
    
    
    - **Account Reports**: Select this button to view billing and global data.
    - **Event Reports**: Select this button to view data for specific events. Use the Event drop-down to switch between events, and the Report drop-down to switch between specific report types. (See the Reports section for more details).
- **Events Preview**: Create, view, and manage your scheduled events.
- **Appointments List**: View all upcoming appointments globally, or filter them by date/event. From this page, you can delete appointments and send one-off emails to participants.
- **Contacts**: Manage all users linked to your account (Administrators, Teachers, Parents, and Students).
    
    
    - Students: View their enrolled classes.
    - Parents: View scheduled appointments, history logs (bookings, cancellations, emails sent), or manually reset parent passwords.
    - Teachers: View and adjust administrative access levels.
- **Importer**: Upload your roster and data files.
- **Global Setup:** Manage your sitewide configurations across two tabs:
    
    
    - **Business**: Update your school’s name, address, and core account settings.
    - **Contacts**: Create custom prompts and forms for parents to complete when they first register on your scheduling site.
- **Calendar Sync**: Authorize administrators to sync their Google and/or Outlook calendars with the platform.
- **Online Scheduler**: A quick-access link to the live booking page (also known as the Customer User Interface or CUI).
- **Add New Account**: Opens a new window to set up a brand-new business or sub-account.
- **User Manual**: Opens the comprehensive Online User Manual in a separate window.
- **Tour This Page**: Launches an interactive, step-by-step guided walkthrough with helpful on-screen popups.

# Previous Users of pickAtime

##### **Setting up a new event**

If you've used pickAtime before, you **don't need to create a new account** — simply create a new event under your existing account (e.g., "Parent Teacher Conferences 2026").

**Recommended order:**

1. Create the new event **first**.
2. Delete the old event **afterward**, if you're not reusing its data.

> Creating the new event before deleting the old one preserves your settings — **UI Setup**, **Notification Setup**, and **CUI Messages** — by carrying them over.

**⚠️ Don't simply rename your old event.** Importing new class/enrollment data into a renamed event will **merge** with the old data, rather than replacing it.

**⚠️ Deleting an event deletes its class and enrollment data.** Don't delete an old event if you plan to reuse that data.

**To reuse previous class/enrollment data:** Use the **Duplicate PTA** option on the Events page. This is intended specifically for a second set of conferences using the **exact same** class/enrollment data as the first.

> If this option isn't available on your account, email <support@pickatime.com> to have it enabled.

---

##### **Contact Information**

**What happens to contact data between events**

Contact information — including parent/teacher login credentials and student records — is **retained across events** and is **not deleted** when you delete an event. This means:

- Parents can log back in with their original email and password.
- Any students previously linked to a parent's account remain linked.
- Parents who've forgotten their password can use **Forgot Password** on the login page.

This is especially useful for schools running **multiple conferences per year**.

**If you'd prefer parents create fresh accounts each time** (e.g., for annual conferences), you can manually clear old contact data.

---

**How to remove all previous contact information**

1. Go to **Global Setup / Contacts**.
2. Click **Show Advanced Options**.
3. Click **Remove All Customers**.
4. Select the access level to delete from the pull-down.

**Access levels (from broadest to narrowest):**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-level-who-it-include"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Level</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Who it includes</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Customer access</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Parents and students</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Appointment Viewer</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Teachers</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Appointment Maker</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Admins with Appointment Maker access</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Resource Administrator</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Admins with access to a select group of teachers</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Event Administrator</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Admins with access to one or more events</td></tr></tbody></table>

</div>> **Important:** Deleting a given level also deletes every level **below** it on this list. For example, deleting **Resource Administrator** also deletes **Appointment Maker**, **Appointment Viewer**, and **Customer access** (parents).

**To remove stored student data specifically:** Click **Remove All Students**.

---

**Exceptions — what won't be deleted**

- Contacts who have **logged in within the last 2 months**
- Contacts who have **booked an appointment within the last 2 months**
- Students currently **enrolled in any event** on your account

---

**⚠️ When you should remove old contact data**

You'll want to clear previous contact/student data if either of the following applies:

- **Teacher IDs are being reused** — e.g., a new teacher will use a departing teacher's TeacherID
- **Student IDs have changed** for your students

In either case, leaving old records in place can cause conflicts with the new data.

# Setup Event

# Checklist

<span class="rvts20">To set up your Parent‐Teacher Conference event using the PTA scheduler, you will need to follow these steps:</span>

**<span class="rvts30">1. [SETUP YOUR EVENT](https://help.pickatime.com/books/pta-setup-guide/page/step-one-setup-event): </span>**<span class="rvts20">You will need to create your conference event and name it appropriately for your conference (e.g., Fall 2026 Conferences)</span>

<span class="rvts30">**2. [CREATE AND IMPORT DATA FILES](https://help.pickatime.com/books/pta-setup-guide/page/step-two-import-data-files):** </span><span class="rvts20">Our system will need information from your school to identify the students, the teachers, the classes taught by each teacher, and the enrollment in each class. You will need to create these four files and then import them to your pickAtime account. Once you have imported your data, you should view the data in the Admin UI and verify that it has been imported correctly.</span>

<span class="rvts30">**3. [CREATE SLOTS FOR THE EVENT](https://help.pickatime.com/books/pta-setup-guide/page/step-three-create-time-slots)**: </span><span class="rvts20">After verifying your data, you can create the time slots (including the dates, times, and duration of appointments. </span>

<span class="rvts30">**4. [CONFIGURE SETTINGS](https://help.pickatime.com/books/pta-setup-guide/page/step-four-adjust-settings)**:</span>

- <span class="rvts30">**Appointment Settings**: </span><span class="rvts20">There are several appointment settings that you can modify for the specifics of your event.</span>
- <span class="rvts30">**Configure Notifications (optional)**: </span><span class="rvts20">The pickAtime system offers the capability of sending out email confirmations and email reminder notices. You may choose to modify the default settings for these emails.</span>
- <span class="rvts30">**Configure Customer User Interface**: </span><span class="rvts20">When parents log in to schedule their appointments, they will be prompted to identify their children. They will do so by entering in a StudentID and a Security Value. You will need to make sure that your parents are prompted to enter this data in the correct format.</span>

<span class="rvts30">**5.** [**TRY IT OUT**](https://help.pickatime.com/books/pta-setup-guide/page/step-five-try-it-out): </span><span class="rvts20">Test out your scheduler as a parent would. </span>

# STEP ONE: Setup Event

#### Create Your Event

When you first log in to pickAtime, you'll land in the Admin tool on the **Event Reports** page.

---

#### Steps to Create a New Event

1. Select **Events/Preview** from the sidebar.
2. Click the green **Add** button.
3. Enter a name for your event — e.g., `Fall 2026 Conferences`.
4. Select the event type: **PTA**.
5. *(If you've used pickAtime before)* Select a **Template** from the pull-down, based on a previous event. This carries over your starting settings from **UI Setup**, **Notification Setup**, and **CUI Messages**.
6. Select your event's **time zone**.
7. *(Optional)* Add a **Date** and **Location**.

Once saved, your event will appear as a new row in the Events list.

---

#### About the Date and Location Fields

These fields are optional and primarily used to **distinguish between multiple events** when more than one is listed.

- The **Date** field is just a label — if your conference spans multiple dates, you can list them all here, or leave it blank.
- You do **not** need to create a separate event for each date — a single event can include any number of dates.

---

#### Adding Event Details

Use the **Event Details** box to add event-specific information you'd like to display on the scheduler or include in emails.

Anything entered here becomes available as a macro: **`$(E_DESCRIPTION)`**

You can insert this macro into your **CUI Messages** or **Notification Setup** templates to automatically pull in this text.

---

#### Removing a Previous Event

If you've used pickAtime before and are importing new data, you can delete your previous event(s) once the new one is created.

1. Create your new event first (see steps above).
2. Click **Delete** on the old event.

> Creating the new event **before** deleting the old one lets you use the previous event as a template. Be sure to confirm your new event is set to type **PTA**.

---

#### Duplicate PTA Option

**Duplicate PTA** creates a full copy of a previous event, including identical data — typically used when running a **second set of conferences** with no changes to enrollment (e.g., the same students/classes as before).

This option is enabled **on request only**. To use it, email <support@pickatime.com>.

# STEP TWO: Import Data Files

### Overview

The PTA scheduler requires **4 data files**: **Student**, **Teacher**, **Class**, and **Enrollment**. Two additional files — **Parent** and **Parent-Student Relationship** — are optional and only needed for **Single Sign-On** setups.

All files must be **tab-delimited text files** (`.txt` from Excel, or `.tsv` from Google Sheets), with column headers in the **first row**, matching the exact field names below (no spaces).

---

### Student File

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-description-st"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Field</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Description</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**StudentID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Unique identifier for the student *(key field)*</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**First**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Student's first name</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Last**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Student's last name</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**SecurityValue**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">A value (e.g., birthdate) parents enter to confirm they're selecting the correct child</td></tr></tbody></table>

</div>**Example:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-studentid-securityva"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">StudentID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">SecurityValue</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">First</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Last</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">4321</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">04/12/2012</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Amanda</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Jones</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">4322</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">08/04/2012</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Timothy</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Smith</td></tr></tbody></table>

</div>> ⚠️ **Don't recycle Student IDs** without removing the old student first. If StudentID 101 belonged to Betsy Smith last year and is reassigned to William Johnson this year, Betsy's parent will see William listed as their child. If recycling IDs, remove all stored contacts first via **Global Setup / Contacts Setup / Remove All Contacts**.

**Optional column:** `Action` — set to `delete` to remove a previously imported row. Defaults to `update` if omitted.

---

### Teacher File

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-description-te"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Field</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Description</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**TeacherID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Unique identifier for the teacher *(key field)*</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**First**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Teacher's first name</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Last**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Teacher's last name</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Email**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Teacher's email (must be unique; one address only)</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Room**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Where the teacher will be during conferences — useful for room-based reporting</td></tr></tbody></table>

</div>**Example:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-teacherid-first-last"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">TeacherID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">First</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Last</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Email</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Room</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">234</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Angela</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Frank</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top"><a@school.com></td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">106</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">225</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Bobby</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Smith</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top"><b@school.com></td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Library</td></tr></tbody></table>

</div>> Want team-taught conferences? See **Creating Teams**, below.

**Optional columns:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-column-purpose-passw"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Column</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Purpose</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Password**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Sets an initial password (min. 6 characters). If omitted, the teacher creates their own at first login. *(Once a teacher sets their own password, future imports won't override it — use the Reset Admin Password button under Global Setup / Contacts Setup to reset instead.)*</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Virtual Room**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Online meeting link, if manually generating your own (not needed if using pickAtime's built-in meeting integration)</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**AccessLevel**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Sets admin access. `3` = Resource Administrator (can block their own schedule). Default is Appointment Viewer.</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**GroupName**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Categorizes teachers (e.g., "Middle School," "Science") — useful for creating different slot durations per group, or displaying teachers grouped on the scheduler</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Action**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Set to `delete` to remove a previously imported row</td></tr></tbody></table>

</div>---

### Class File

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-description-cl"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Field</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Description</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**ClassID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Unique identifier for the class *(key field — must be unique **per teacher**)*</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**TeacherID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Must match a TeacherID in the Teacher file</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**ClassName** *(optional)*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Display name shown on the CUI legend</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**GroupName** *(optional)*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Categorizes teachers for grouped slot creation or display</td></tr></tbody></table>

</div>**Example:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-classid-teacherid-cl"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">ClassID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">TeacherID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">ClassName</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Math-Sec200</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">234</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Math</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Math-Sec201</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">235</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Math</td></tr></tbody></table>

</div>> ⚠️ **ClassID must be unique per teacher.** If your school has one "English 9" course taught by multiple teachers, give each section its own ClassID — e.g., `Eng9-869` for the section taught by teacher 869. Make sure your Enrollment file uses this same exact ClassID.

**Optional columns:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-column-purpose-actio"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Column</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Purpose</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Action**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Set to `delete` to remove a previously imported row</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**PTAN**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Number of appointments allowed per parent for this class (default: 1)</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Max**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Maximum students allowed to enroll (default: a very high number)</td></tr></tbody></table>

</div>---

### Enrollment File

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-description-st-1"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Field</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Description</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**StudentID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Must match a StudentID in the Student file</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**ClassID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Must match a ClassID in the Class file</td></tr></tbody></table>

</div>**Format Option 1 — One class per row** (multiple rows per student if enrolled in multiple classes):

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-studentid-classid-12"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">StudentID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">ClassID</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">123</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">English-SecB</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">123</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Science</td></tr></tbody></table>

</div>**Format Option 2 — One row per student**, with each class in its own `ClassID` column:

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-studentid-classid-cl"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">StudentID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">ClassID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">ClassID</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">123</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">English-SecB</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Science</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">456</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Math</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Gym</td></tr></tbody></table>

</div>**Optional column:** `Action` — set to `delete` to remove a previously imported enrollment row.

---

### Creating Teams

You can set up team-taught classes either **during import** or **after import**, depending on your situation.

#### Option A: Via Import

**Method 1 — Import the team as a single "teacher"** Use this if you're importing team data directly (not individual teacher data), and the team members won't also have individual conferences.

- Create a new "teacher" record representing the team (e.g., `Team Smith-Jones`), with its own unique **TeacherID**.
- This team's class should include all students from both teachers' rosters.
- You can optionally use one teacher's email, or leave it blank — but it can't duplicate an email already used by another teacher.
- Make sure the individual teachers (Smith, Jones) aren't also separately bookable at the same times as the team.
- **To grant the individual teachers visibility into the team's schedule:** Go to **Contacts**, locate each teacher, and under **Resource Access**, grant them access to the team resource.

**Method 2 — Combine individual teachers into a team via the Class file** Use this if you're importing individual teacher data and want to combine some into a team. In the Class file's `TeacherID` column, concatenate teacher IDs with a semicolon.

**Example:**

*Teacher File:*

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-teacherid-first-last-1"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">TeacherID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">First</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Last</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Email</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">T123</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Anne</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Smith</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top"><asmith@school.com></td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">T124</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Harold</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Rice</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top"><hrice@school.com></td></tr></tbody></table>

</div>*Class File:*

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-teacherid-classid-t1"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">TeacherID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">ClassID</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">T123;T124</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Math101</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">T123</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Biology</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">T124</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">English</td></tr></tbody></table>

</div>Here, Anne Smith and Harold Rice team-teach Math101. A parent with a student in Math101 books with the **team**; a parent with a student in Biology or English books with the **individual** teacher. The system prevents double-booking — booking with Anne Smith (individually) automatically blocks the corresponding slot for the Smith/Rice team.

> This same technique works for cases like pairing a general education teacher with a special education teacher for select students — create a combined class (e.g., "English/Special Ed") and enroll only the relevant students in it, while others remain in the standard "English" class.

#### Option B: After Import

1. Go to **Class Editor**.
2. Select **Add Teacher/Team**.
3. In the **Select Person** dialog, search for and select the first teacher, then click **Add to Team**. Repeat for the second teacher.
4. Once both teachers appear in the top-left list, click **OK**.
5. Either manually create a class for the team, import a class/enrollment file for them, or move existing classes from an individual teacher to the team.

> Booking with the team blocks the corresponding slot for each individual member, and vice versa — this prevents double-booking automatically.

**To add a room number for a team:** Go to **Appointments**, and enter the room number to the right of the team's name.

---

### Parent File *(Optional — Single Sign-On only)*

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-description-pa"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Field</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Description</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**ParentID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Unique identifier for the parent</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**First**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Parent's first name</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Last**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Parent's last name</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Email**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Parent's email (one only)</td></tr></tbody></table>

</div>**Example:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-parentid-first-last-"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">ParentID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">First</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Last</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Email</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">123</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">John</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Smith</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top"><js@parent.com></td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">456</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Susie</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Smith</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top"><ss@parent.com></td></tr></tbody></table>

</div>> Both **ParentID** and **Email** should be unique — duplicate rows will simply update the same contact rather than create a new one.

**To prevent parents from manually attaching/detaching students:** Go to **Global Setup / Business Setup / Miscellaneous**, and uncheck **"Allow parents to attach and detach students."**

---

### Parent-Student Relationship File *(Optional — Single Sign-On only)*

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-description-pa-1"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Field</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Description</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**ParentID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Must match the Parent file</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**StudentID**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Must match the Student file</td></tr></tbody></table>

</div>**Example:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-studentid-parentid-3"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">StudentID</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">ParentID</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">37890</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">4451</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">37891</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">4478</td></tr></tbody></table>

</div>---

### Mistakes to Avoid

- **Don't export a full year of class data** if you only need half a year.
- **If parents won't recognize a numeric Student ID:** Use a first+last name concatenation instead (e.g., `BenjaminFranklin`). You don't need to create this field manually — check **"Use First + Last Name as StudentID"** under **Global Setup / Business Setup / Parent Login**, then customize the prompt text under **CUI Messages / Student / StudentID**.
- **Watch for leading zeros.** Opening a numeric ID column in Excel may strip leading zeros automatically.
- **If Student IDs changed from last year**, remove the old stored student data first (see *Previous Users of pickAtime*).
- **If Student IDs are reassigned annually** (not tied to a permanent record), also remove old stored data first.
- **Cleaning up old data:** You can now delete an event's existing classes/enrollment (and their associated teacher resources) directly from the **Importer** page — no need to leave the page. Select **Class** under **File Type**, then click **Remove Existing Classes**.
- **Email column naming:** The column must be labeled exactly `Email`. Variants like `Email_Address` or `Teachers_Email_Address` will import as extra data fields, **not** as the teacher/participant's login email.

---

### Import Process

1. Log into pickAtime and click **Importer**.
2. Set **Data Type** to **School**.
3. Select your event from the **Event** pull-down.
4. Set **File Type** to **Students**.
5. Click **Browse**, select your file, and click **Import**.
6. If the import succeeds with no errors, repeat steps 4–6 for **Teachers**, **Classes**, and **Enrollment** (in that order), changing the File Type each time.

> **Data Type** should be set to **School** for all four files.

**Import logic:** Each row has a unique key (StudentID, TeacherID, or ClassID). Re-importing the same data won't create duplicates — the system checks for an existing match and either **updates** it or **creates** a new record. This also means you can safely import a file containing only **missing** rows to fill in gaps.

> ⚠️ **Always confirm the number of rows imported matches your file** — silent partial imports can be easy to miss.

**Import order matters:**

- Fix all **Teacher file** errors before importing the **Class file**.
- Fix all **Class file** errors before importing the **Enrollment file**.

---

### Error Messages on Import

#### General

**"Incorrect file type was supplied."** Your file must be tab-delimited. Re-save/re-export and try again.

---

#### Student File Errors

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-error-cause-%2F-fix-%22t"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Error</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Cause / Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"The file does not have a column labeled 'First' or 'First Name'"* / *"...labeled 'StudentID'"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Column headers must match exactly (e.g., `StudentID`, not `Student Lunch Number`)</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"The ID field is empty for XX"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">A required field (name, StudentID, birthdate) is blank in that row</td></tr></tbody></table>

</div>---

#### Teacher File Errors

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-error-cause-%2F-fix-%22f"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Error</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Cause / Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"Found contact with teacherid of ABC and a different contact with the email of \[email\]"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Your import row has TeacherID `ABC` + a specific email, but the Admin UI already has **two separate** existing contacts — one matching the TeacherID, one matching the email — and the system can't tell which to update. **Fix:** In Contacts, find the conflicting record(s), delete the outdated one, and re-import.</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"The ID field is empty for XX"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">A required field (name, email) is blank in that row</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"The password field should be 6 characters or more for XX"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Check the Password column for that row</td></tr></tbody></table>

</div>---

#### Class File Errors

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-error-cause-%2F-fix-%22c"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Error</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Cause / Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"Could not find teacher with teacherID XX"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">This TeacherID isn't in your imported Teacher file — import teachers first, or correct the ID</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"Class 'Math' already exists with a different teacher than '123'"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">ClassID must be unique **per teacher** — two rows are using the same ClassID for different teachers. Fix by appending a section/teacher identifier (e.g., `Math-123`), and update your Enrollment file to match. *(See "Removing a bad class" below to clean up the incorrect entry first.)*</td></tr></tbody></table>

</div>---

#### Enrollment File Errors

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-error-cause-%2F-fix-%22s"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Error</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Cause / Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"Student ID not found"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">This StudentID isn't in your Student file — import students first</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"Class XX not found"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">This ClassID isn't in your Class file. *(Safe to ignore if it's a non-conference class, like Study Hall.)*</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"No class ID found for student XX"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">This row has a StudentID but no associated ClassID</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"Student XX not in class YY"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Appears when deleting enrollment — the student wasn't actually enrolled in that class</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"Class XX has reached maximum enrollment. Student XX has been skipped."*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">The class's **Max** setting was reached. Check/adjust this value in **Class Editor** under the teacher → class → **Maximum** column</td></tr></tbody></table>

</div>---

#### Parent File Errors

**"The file does not have a column labeled 'First' or 'First Name'"** Column headers must match the spec exactly.

---

#### Parent-Student Relationship File Errors

**"Could not find Parent with ID 'XX' or Student with ID 'YY' as this parent/student was not imported"** Double-check that both the ParentID and StudentID exist in their respective files and were successfully imported first.

---

### How to Correct Bad Data

> 💡 **Removing a bad class — quick reference (used throughout this section):**
> 
> - **Individually:** Go to **Class Editor**, check **"Show Only Classes,"** locate the class, and click the **red X** next to it.
> - **In bulk prior to an updated Class file import:** On the **Importer** page, select **Class** under **File Type**, then click **Remove Existing Classes** — this also removes the associated teacher resources, without needing to leave the Importer.

#### Student File

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-issue-fix-names-reve"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Issue</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Names reversed</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Correct the file and re-import</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Incorrect Student IDs</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Re-import the bad file with an added `Action` column set to `delete`, to remove the incorrect records</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Forgot the SecurityValue field</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Add the field and re-import</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">File was missing some students</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Import the missing students, then import an enrollment file to enroll them</td></tr></tbody></table>

</div>---

#### Teacher File

**Your fix depends on whether you've already imported your Class file** — once imported, teachers become "resources" tied to Appointments and Class Editor, and can no longer be simply overwritten by re-importing the Teacher file.

**If you have NOT yet imported your Class file:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-issue-fix-names-reve-1"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Issue</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Names reversed</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Correct the file and re-import</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Teacher data was wrong</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Re-import the bad file with an `Action` column set to `delete`</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Teacher IDs incorrect</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Same as above — re-import with `Action: delete` to remove, then import the corrected file</td></tr></tbody></table>

</div>**If you HAVE already imported your Class file:**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-issue-fix-unwanted-t"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Issue</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Unwanted teachers present</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Go to **Class Editor** and remove the teachers you don't need</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Teachers assigned to wrong classes</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Go to **Class Editor**, remove all classes, then re-import your Class file OR correct your class file, and prior to a new Class file import, check the box "remove existing classes."</td></tr></tbody></table>

</div>---

#### Class File

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-issue-fix-imported-w"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Issue</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Imported wrong/too many classes</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Remove the bad classes (see quick reference above)</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">*"Class A already exists but with a different teacher than Teacher B"*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">The same ClassID is assigned to two different teachers. Determine the correct teacher, then either fix and re-import the bad row, or go to **Class Editor** and move/delete the incorrect class assignment</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Classes assigned to wrong teachers</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Remove all classes (see quick reference above), then re-import your Class file</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">One class assigned to the wrong teacher</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Simplest fix: in **Class Editor**, move the class to the correct teacher directly. *(Just correcting your import file won't remove the original incorrect assignment — you must move it manually.)*</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Missed some classes</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Add them to your Class file and re-import (or import a file with just the missing classes)</td></tr></tbody></table>

</div>---

#### Enrollment File

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-issue-fix-imported-w-1"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Issue</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Fix</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Imported wrong/last year's enrollment</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Remove all classes via **Class Editor**, then re-import a corrected Class file and Enrollment file</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">File was missing some enrollment</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Import the missing enrollment data — no need to redo the full file</td></tr></tbody></table>

</div>---

### How to Remove Imported Data

**To remove everything (start completely fresh):**

1. Create a new event using your last event as a **template** (Events List → **Add**), then delete the old event. This clears class and enrollment data.
2. Remove stored contacts: **Global Setup / Contacts → Show Advanced Options → Remove All Customers**, selecting **Event Administrator** as the level to delete. *(This also removes parents.)*
3. Remove stored students: Click **Remove Students Not Enrolled in a Class**. *(This may take a few minutes.)*

> If only your **class and enrollment** data is wrong (students/teachers are fine), you only need **step 1**.

---

**To remove class data only, while keeping your teacher roster and slots:**

1. Go to **Class Editor** and delete all classes — this keeps your teacher roster on the Appointments and Class Editor pages.
2. Import a new Class file and a new Enrollment file.

---

**To remove students, teachers, classes, and enrollment — but keep parents:**

1. Create a new event using your last event as a template, then delete the old one (clears class/enrollment data).
2. Take your old Student and Teacher files, add an `Action` column set to `delete`, and re-import both.

---

### Frequently Asked Questions

**We accidentally imported last semester's data, but have too many parent appointments to start over. Can we just import new files?**

Yes — new imports **add to** existing data rather than replacing it. New classes/enrollment will be added, but anything previously imported stays unless explicitly deleted (via Class Editor or an `Action: delete` import). **Existing parent appointments are never affected by a new import.**

---

**We re-imported corrected class/enrollment files to remove some classes, but the old ones are still showing.**

Imports only **add or update** — they never delete automatically. To remove classes, use **Class Editor** directly, or include an `Action: delete` column in your import file for the rows you want removed. The same applies to removing specific enrollment records.

---

**We were missing some class/enrollment data. Will importing the missing data delete any booked appointments?**

No. Importing additional class/enrollment data only **adds** what's missing — it will not disturb appointments already booked.

---

### Viewing Your Imported Data

1. From **Events Preview**, select your event and click **Go to Event**.
2. Select **Class Editor** to see your teacher list. Select a teacher to see their classes; select a class to see enrolled students.
3. Check **"Show Only Classes"** (far right) to view data organized by class instead.

> See **Modifying Teacher or Room Data** to add/remove teachers, **Moving a Class** to reassign a class, and **Modifying Enrollment Data** to add/remove students from a class.

---

#### Missing Classes

- **No manual changes made in Admin UI:** Simply re-import updated Class and Enrollment files — new data will be added without disturbing existing data.
- **Manual changes were made** (e.g., reassigned teachers, moved students): Import a Class file with **only** the missing class(es), and an Enrollment file with **only** the missing enrollment.

> Neither approach disturbs appointments already booked.

#### Missing Enrollment

If no manual changes were made, simply import an updated Enrollment file — subsequent imports never overwrite previously imported class/enrollment data; they only **add** new rows.

# STEP THREE: Create Time Slots

<span style="color: rgb(34,34,34); font-family: '-apple-system', 'system-ui', 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 2.333em; font-weight: 400;">Creating Slots</span>

To get started, from the Admin UI, go to **Events / Preview** and select your event. Click the orange **Go To Event** button to open your event. You will then see the **Appointments** tab. From the left-hand calendar, select the date you want to work with. Open the **Slots** drop-down and choose **Create Slots**.

#### **Step 1: Choose Which Teachers to Create Slots For**

In the slot generator, choose to create slots for **selected teachers** or **all teachers/resources**. To select multiple teachers, hold **Ctrl** while clicking names in the right-hand panel.

#### **Step 2: Set Your Time and Duration**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-description-fr"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Field**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Description**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**From**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Start time of the first slot</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**To**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">End time of the last slot</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Duration**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Length of each appointment (in minutes)</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Travel Break**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Optional gap between appointments</td></tr></tbody></table>

</div>**Example:** 10-minute slots with a 5-minute travel break create slots at 8:00–8:10, 8:15–8:25, 8:30–8:40, and so on.

<p class="callout info">**Note:** If you need a break that doesn't align with your slot duration (e.g., 20-minute slots but a 40-minute lunch break), create slots in **two batches** — one before the break, one after.</p>

#### **Step 3: Choose Appointment Type**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-type-description-ind"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Type**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Description**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Indicator**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**In-Person**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Parents receive room/location info</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">P</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Virtual**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Parents receive a meeting link</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">V</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**In-Person or Virtual**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Parents choose their preferred format</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">PV</td></tr></tbody></table>

</div>#### **Step 4: Set Slot Visibility**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-option-what-it-does-"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Option**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**What it does**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Visible for Customer**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Available for online booking</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Hidden from Customer**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Hidden from parents; visible in Admin UI only</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Shown with "Call" Status**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Visible to parents, but they're prompted to call the school to book</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Make Unavailable**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Visible in Admin UI but not bookable online (use for lunch breaks, meetings, etc.)</td></tr></tbody></table>

</div>You can optionally add a custom message for unavailable slots.

#### **Step 5: Set Maximum Appointments Per Slot *(Optional)***

Use this for group sessions, open labs, or any scenario where multiple families can book the same time slot.

### **Creating Slots for Multiple Days or Teachers**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-scenario-what-to-do-"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Scenario**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**What to do**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Same schedule across multiple days**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Enable **Multiple Dates** and select all applicable dates before saving</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Different schedule per day**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Create slots for the first day, switch to the next date, and repeat</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Different schedules per teacher**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Select a teacher (or group), create their slots, then repeat for the next teacher/group</td></tr></tbody></table>

</div><p class="callout success">**Tip:** If you created identical slots for all teachers at once, individual slots won't display until you click a specific teacher's name in the right-hand panel.</p>

### **Updating Existing Slots**

Use **Update Slots** to change existing slot characteristics without deleting and recreating them.

**To access:** **Appointments tab → select date/teacher → Slots / Update Slots**

**You can update:**

- Appointment type (e.g., switch from in-person to virtual)
- Maximum appointments per slot
- Slot visibility (hidden, unavailable, etc.)

<p class="callout info">**Tip:** If you created identical slots for all teachers at once, individual slots won't display until you click a specific teacher's name in the right-hand panel.</p>

<p class="callout success">**"Keep existing slot type on slots being updated"** — useful when teachers have already blocked parts of their schedule, since it lets you change appointment type without affecting slot type.</p>

### **Blocking Slots**

Blocking is the preferred way to **temporarily** remove availability without permanently deleting a slot.

1. Go to the **Appointments** page and click the **X** in the corner of the slot.
2. The slot turns **red** and displays "Blocked." You can enter a custom message (e.g., "Lunch Break" or "Staff Meeting").
3. To unblock, click the **X** again to restore availability.

<p class="callout info">Blocked slots appear on reports when **Show All Slots** is enabled.</p>

### **Deleting Slots**

Use **Delete Time Slots** to permanently remove slots.

**To access:** **Appointments tab → select date/teacher → Slots / Delete Time Slots**

If appointments already exist on those slots, you'll be prompted to choose:

- **Move appointments** to the red Appointments List (a holding area for manual rebooking or cancellation)
- **Cancel appointments** without sending a notification
- **Cancel appointments** and send a cancellation email

<p class="callout success">**Tip:** Consider whether parents need a cancellation notification before confirming any deletion.</p>

### **Moving Slots**

Use **Move Slots** to transfer an entire day's slots — and any existing appointments — to a new date. Useful for school closures, rescheduled conference days, or teacher availability changes.

**To access:** **Appointments tab → select date/teacher → Slots / Move Slots**

In the dialog, select the destination date, choose whether to move slots for all teachers or selected teachers, and confirm.

Existing appointments transfer with all parent information intact, and appointment **times remain the same**.

<p class="callout info">**Important:** Calendar notification emails are **not** sent automatically — advise parents to update any calendar entries they've saved. You can send a custom notification email explaining the change.</p>

### **Copying Slots**

Use **Copy Slots** to duplicate a day's slot *structure* to another date or teacher — **without** copying existing appointments.

**To access:** **Appointments tab → select date/teacher → Slots / Copy Slots**

Select the destination date and/or teacher(s) and confirm. Slot visibility, appointment type, and availability settings are all preserved.

<p class="callout success">If you also need appointments to transfer, use **Move Slots** instead.</p>

### **Changing Slot Duration or Times**

Slot start times, end times, and duration **cannot be edited in place**. To change any of these:

1. Delete the slots you want to change (or all slots for that day).
2. Recreate them with the correct settings.

**Example:** If you have 10-minute slots from 8:00 AM–2:00 PM but want 9:00 AM–1:00 PM instead, delete the 8:00–9:00 AM and 1:00–2:00 PM slots (or delete all and start fresh), then create the new schedule.

### **Quick Reference: Which Tool to Use?**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-situation-use-tempor"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Situation**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Use**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Temporarily remove availability</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Block Slots**</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Permanently remove slots</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Delete Time Slots**</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Change appointment type or visibility</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Update Slots**</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Reschedule an entire day</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Move Slots**</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Duplicate a schedule to another day or teacher</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Copy Slots**</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Change slot duration or times</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Delete + Recreate**</td></tr></tbody></table>

</div>### **Slot Color Guide**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-color-meaning-%F0%9F%94%B5-blue"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal" style="width: 61.5476%; height: 165.781px;"><thead class="text-left"><tr style="height: 29.7969px;"><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col" style="width: 15.5151%; height: 29.7969px;">**Color**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col" style="width: 84.4849%; height: 29.7969px;">**Meaning**</th></tr></thead><tbody><tr style="height: 29.7969px;"><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 15.5151%; height: 29.7969px;">🔵 Blue</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 84.4849%; height: 29.7969px;">Available</td></tr><tr style="height: 29.7969px;"><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 15.5151%; height: 29.7969px;">🔴 Red</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 84.4849%; height: 29.7969px;">Blocked</td></tr><tr style="height: 46.5938px;"><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 15.5151%; height: 46.5938px;">⚪ Grey</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 84.4849%; height: 46.5938px;">Teacher is booked elsewhere (team meeting or personal appointment)</td></tr><tr style="height: 29.7969px;"><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 15.5151%; height: 29.7969px;">![image.png](https://help.pickatime.com/uploads/images/gallery/2026-06/scaled-1680-/Ycximage.png) Yellow

</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 84.4849%; height: 29.7969px;">Time has passed</td></tr></tbody></table>

</div><div dir="ltr" id="bkmrk--14" style="text-align: left;"></div>

# STEP FOUR: Adjust Settings

### **Event Settings (UI Setup)**

The **UI Setup** page lets you adjust settings specific to a single event.

**To get there:**

1. From the Admin UI, go to **Events / Preview** and select your event.
2. Click **Go To Event** to open Event Management.
3. Select **Settings / UI Setup**.

Work through the sections from top to bottom, as outlined below.

#### **Scheduler Availability**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-setting-what-it-does"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Setting**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**What it does**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Open scheduler to customers**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Date/time the scheduler opens for parents</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Close scheduler to customers**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Date/time the scheduler closes for parents</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Allow Admins access to the CUI at all times**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Lets admins access the parent scheduling page even when it's closed to parents. </td></tr></tbody></table>

</div>#### **Appointment Number Limits**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-setting-what-it-does-1"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal" style="width: 100%;"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col" style="width: 26.3275%;">**Setting**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col" style="width: 73.7679%;">**What it does**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 26.3275%;">**Maximum Appointments per Event**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 73.7679%;">Caps total appointments allowed for the entire event</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 26.3275%;">**Maximum Appointments Per Child**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 73.7679%;">Caps how many appointments a parent can book per child</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 26.3275%;">**One appointment per teacher per student**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 73.7679%;">If checked, a parent can only book once with a given teacher per student, even if the student has multiple classes with that teacher</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 26.3275%;">**One appointment per class**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 73.7679%;">If checked, a parent can only book once per class, even with multiple students enrolled in it</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 26.3275%;">**Allow back-to-back**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 73.7679%;">If unchecked, parents can't book two appointments back-to-back unless they're with the **same teacher** (to allow travel time between teachers). Back-to-back is always allowed with the same teacher, or when travel breaks have been configured.</td></tr></tbody></table>

</div>#### **Appointment Cancellations**

**Customer cannot cancel their appointment closer than XX hours/days/weeks.** Restricts how close to the appointment time a parent can cancel.

- Set to 0 to allow cancellation up to the last minute.
- Set to a large value to effectively prevent cancellations.

<p class="callout info">**Note:** Closing the scheduler does **not** automatically prevent cancellations — this setting is separate.</p>

#### **Close Appointment Booking**

Controls when slots become unavailable for **new bookings**, ahead of the appointment time. Choose one of three methods:

1. Close booking at a specific **time of day**, XX days before the appointment date.
2. Close booking XX **hours/days/weeks/months** before the appointment time.
3. Close booking XX **hours before the first appointment of the day**.

### **Scheduler Settings**

#### **Scheduling Link**

Your event's **Scheduling Link** is the URL you share with parents (on your website or via email) to access the booking page (CUI). You can customise it with an event-specific suffix — for example: `https://pickatime.com/HowardSchool/LS` or `<a href="https://pickatime.com/HowardSchool/US">https://pickatime.com/HowardSchool/US</a>`

<p class="callout success">**Important:** Even with a custom event link, parents will see a toggle to switch to any other **open** events on your account. To restrict parents to a single event with no toggle option, use the **Category** link instead, which scopes the scheduler to only the event(s) in that category.</p>

#### **Scheduler Display**

<span style="text-decoration: underline;">**View mode:**</span>

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-mode-best-for-conden"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal" style="width: 89.2857%;"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col" style="width: 20.0135%;">**Mode**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col" style="width: 79.9598%;">**Best for**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 20.0135%;">**Condensed**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 79.9598%;">Compact layout with variable time steps — good for smaller screens or quickly browsing availability</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 20.0135%;">**Expanded**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 79.9598%;">Fixed time intervals in a traditional layout — easier for comparing exact appointment lengths/gaps</td></tr></tbody></table>

</div>Parents can toggle between views anytime using the button in the top-left corner of the scheduler.

<span style="text-decoration: underline;">**Date display mode:**</span>

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-mode-behavior-pagina"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal" style="width: 64.4048%;"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col" style="width: 28.132%;">**Mode**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col" style="width: 71.831%;">**Behavior**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 28.132%;">**Paginator**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 71.831%;">Shows multiple dates on one page</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 28.132%;">**Calendar**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top" style="width: 71.831%;">Shows one day at a time, with a mini calendar to jump to other dates</td></tr></tbody></table>

</div>#### **Scheduler Display Limits**

**Display X weeks of slots:** Sets how many days/weeks of slots are shown at once in the CUI. *(Only applies when Paginator is selected.)*

#### **Teacher Display**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-setting-what-it-does-2"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Setting**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**What it does**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Display resource description**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Shows the teacher's description (via the info icon next to their name)</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Display rooms**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Shows room numbers on the parent scheduler</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Separate legend for each child** *(Regular PTA only)*</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Adds a separate color legend per child</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Display class names**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Shows class names (via the info icon) if class names have been added on the Appointments page</td></tr></tbody></table>

</div>#### **Teacher's Group Name**

Lets you organise teachers into groups (e.g., "Lower School," "Upper School").

1. Enter your desired group names in this section.
2. Go to the **Appointments** page — each teacher row has a **Group Name** column where you can assign them to a group from the drop-down.

### **Advanced Settings**

#### **Online Meeting Provider**

**Use 'X' for online meetings:** Select your preferred online meeting provider for this event from the drop-down.

#### **Multiple Appointment Booking**

**Allow a parent to make conflicting appointments for themselves:** If checked, a parent can book overlapping appointments at the same time.

#### **Appointment Changes**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-setting-what-it-does-3"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Setting**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**What it does**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Allow customers to see and cancel past appointments**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Lets parents view/cancel appointments that have already passed</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Don't allow customers to change appointment time**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Prevents parents from rescheduling once booked</td></tr></tbody></table>

</div>### **Notification Setup**

The **Notifications** tab lets you configure: **Confirmation Email**, **Cancellation Email**, **Reminder Email**, **Custom Email**, **Follow-up Email**, **Resource Notification Email**, and **Calendar Event Notification**.

#### **Confirmation Email**

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-what-it-contro"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Field**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**What it controls**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Subject**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Email subject line</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Header**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Text shown above the email body</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Body**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Main email text</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Send Confirmation and Cancellation Emails**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Sends a confirmation after booking *(typically left unchecked for schools)*</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Support Email**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Address that receives replies to confirmation/reminder/cancellation emails. If left blank, replies get an automated response directing them to contact your organization.</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Replace the Email Body with the Printable Schedule**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Recommended.** Sends one consolidated email with a table of all booked appointments, instead of one email per appointment.</td></tr></tbody></table>

</div>#### **Reminder Emails**

**Send Reminder Emails:** Click **Add** and enter the number of hours before an appointment that a reminder should go out. You can add multiple reminder times — duplicates are automatically removed.

**How reminders are grouped depends on your Printable Schedule setting:**

- **If "Replace the Email Body with the Printable Schedule" is ON:** All appointments are grouped into a single reminder email per day, sent the configured number of hours before that day's **first** appointment. With reminders set at both 24 and 12 hours, you'll receive two emails — one at each interval before your first appointment of the day.
- **If it's OFF:** Appointments booked within the **same hour** are grouped into one reminder email. For example, 9:00, 9:15, and 9:30 AM appointments would be combined into one email, while a separate 10:15/10:30 AM email would be sent independently.

<div class="overflow-x-auto w-full px-2 mb-6" id="bkmrk-field-what-it-contro-1"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**Field**</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">**What it controls**</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Footer**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Text shown below the email body</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Subject for combined email**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Subject line used when a combined email is sent (e.g., a cancel + immediate reschedule)</td></tr></tbody></table>

</div>#### **Recommended: Use the Printable Schedule as the Email Body**

For both **Confirmation** and **Reminder** emails, you can replace the email body with a **Printable Schedule** — a table summarizing all of a parent's booked appointments (identical to what they'd see clicking "Printable Schedule" on the scheduler page).

**To enable this:** Check **"Replace the Email Body with the Printable Schedule of Appointments."**

When enabled, the email will contain:

1. Your **Header** text
2. The printable schedule table
3. Your **Footer** text

<p class="callout success">The table's content/format is controlled separately under **Settings → CUI Messages → Print Schedule**.</p>

With this option on, parents receive **one** email containing their full schedule — not one email per appointment.

### **Configure CUI (Customer User Interface)**

You can customise most of the text and labels parents see when booking appointments.

**To edit CUI messages:**

1. From the Admin UI, go to **Events / Preview**, select your event, and click **Go To Event**.
2. Select **Settings / CUI Messages**.
3. On the left, choose a label to edit — the corresponding text appears on the right for editing.

**Common customisations:**

- **Login page title:** Edit under **Sign In Page / Welcome Message**.
- **Logo:** Go to **Global Setup / Business**, under **Account Level Settings / Account Logo**, and click the **Upload** icon.
- **HTML editing:** Click the **HTML icon (`<>`)** in the toolbar to view/edit raw HTML for a given message.

# STEP FIVE: Try it Out

#### **1. Open the scheduler**

1. From the Admin UI, go to **Events / Preview**, select your event, and click **Go To Event.**
2. Select **Settings / UI Setup / Event Settings / Scheduler Availability**.
3. Set **"Open scheduler to customers on"** and **"Close scheduler to customers on"** to define the window during which parents can book appointments.

<p class="callout info">To access the scheduler yourself while it's closed to parents, check **"Allow Admins access to the CUI at all times."**</p>

#### **2. View the scheduler**

**If your school uses Finalsite Single Sign-On,** use the link provided to you by Finalsite to view the scheduler.

**All other schools:**

1. Go to **Global Setup / Business / Account Level Settings / Account URL**, and find your **Account URL** at the bottom of the page.
2. Click the URL, or copy it into another browser window to test the scheduler as a parent would experience it.

<p class="callout success">You can customize this URL by checking **"Set Custom URL"** and entering your preferred name. The updated URL will be live in approximately **5–10 minutes**.</p>

#### **3. Test the booking process**

Add a student to your account to confirm appointments can be booked correctly:

1. Enter the student's **Student ID** and **Security Value**.
2. You'll see a list of all available appointment slots for that student's teachers.

<p class="callout info">**Note:** Adding a student to your own account for testing does **not** prevent the actual parent from also adding that student and booking independently. To remove the student from your test account afterward, click the **X** next to their name in the CUI.</p>

**If you've enabled "Use First + Last Name as Student ID"** (under **Global Setup / Business / Account Level Settings / Miscellaneous**), make sure you enter the student's first and last name — not a numeric ID — in the first prompt.

### **Troubleshooting**

**"Failed to find student" error:** Double-check the values you entered against the student's actual record in **Contacts** (Admin UI).

**Student's teachers aren't showing up:** This usually means one of the following:

- The student's enrollment data is incomplete or missing
- No slots have been created yet for that student's teachers at this event

### **Additional Checks**

##### **Is the URL I gave my parents correct?**

Go to **Global Setup / Business / Account Level Settings / Account URL** and check the **Appointment URL for Customers** section. Your unique scheduling link is listed here, along with the option to customize it.

##### **Is my slot duration correct?**

Slot duration **cannot be edited** after creation. If it's wrong, you'll need to:

1. Delete the incorrect slots.
2. Create new slots with the correct duration.

<p class="callout success">**Example:** If parents have already booked 15-minute slots and you realize you need 10-minute slots instead, you'll need to delete the 15-minute slots (which will also cancel existing appointments) before creating the correct 10-minute slots.</p>

##### **How do I test the scheduler by "adopting" a student?**

Click your scheduling link and add any student at the school to your account. This is for testing purposes only and will **not** interfere with the actual parent's ability to book appointments for that student.