How do I track front desk or admin hours?
Pay your front desk or office staff for hours they are not teaching. Opus1.io has no timesheet or clock-in, so payroll reads the calendar instead. Create a Front Desk or Admin service, give each person an Hourly rate on that service, then put their shifts on the calendar. Standing weekly shifts and shifts that change week to week take different paths, and both land on Staff > Payroll.
Applies to: Owner (creating the service and pay rates); Owner / Manager / Staff (putting shifts on the calendar)
PLUS Feature: No
Plan: All
Last updated: September 18, 2026
Table of Contents
- Overview
- Other ways to pay for non-teaching time
- Who can set this up
- Which path to use
- Before you start
- Step 1: Create the Front Desk service
- Step 2: Set the hourly pay rate
- Path A: A standing weekly shift
- Path B: Shifts that change week to week
- What payroll shows
- What this does not do
- FAQ
- Related Articles
Overview
You hired someone to work the desk, or a teacher covers the office two afternoons a week, and you want those hours to show up on Staff > Payroll next to lesson pay.
Opus1.io has no timesheet, no clock-in, and no separate job type for office work. Payroll is built from the schedule: it adds up what is on the calendar and multiplies by the pay rate attached to that service. So the way to pay someone for desk time is to make desk time look like scheduled work — a service with a name, an hourly rate, and blocks on the calendar.
Why you'd do it this way: office hours land in the same report as teaching hours, under their own service name, so you can export one CSV at the end of the pay period instead of keeping a side spreadsheet and reconciling two numbers.
ℹ️ Note: Opus1.io does not issue payouts, withhold tax, or mark a period as paid. The payroll report is the record of hours and dollars owed; your payroll provider still cuts the check.
Other ways to pay for non-teaching time
Desk and admin time comes in a few shapes, and this article covers only one of them. Check this first.
| What you want | Where to go |
|---|---|
| Desk or office hours named as their own service on Staff > Payroll | This article |
| Pay a teacher for a break, or for admin time that should also block their teaching availability | How do I create a paid unavailability block for my staff? |
| Pay someone a commission on sales rather than by the hour | How do I track staff commissions for sales? |
| Understand how payroll adds hours and what each metric means | Staff Payroll |
| Choose between an hourly and a fixed rate | What is the difference between fixed and hourly staff pay rates? |
The line between this article and paid unavailability is worth getting right, because they look similar and behave differently.
A paid unavailability block is the right choice when the person already teaches and you need to carve out and pay for a slice of their teaching day — a state-mandated break, or an hour of paperwork that should stop students from booking. It punches a hole in their availability and pays them for it, with no service involved.
The approach in this article is right when the hours are the job: a desk shift, Saturday front-of-house coverage, an office manager who does not teach at all. It gives the time a service name you can filter payroll by.
⚠️ Warning: Do not do both for the same hours. A paid unavailability block on top of a booked shift pays the person twice for the same time.
Who can set this up
Setting this up is an owner job. Once the service and rates exist, other roles can put hours on the calendar — but which roles can do that depends on the path you pick, and that difference is worth knowing before you choose.
| Role | Create the service | Set the pay rate | Add class dates | Book an appointment | Take attendance |
|---|---|---|---|---|---|
| Owner | Yes | Yes | Yes | Yes | Yes |
| Manager | No | Limited staff rates only, if you enabled it | No | Yes | Yes |
| Staff | No | No | No | Yes | Yes |
Two consequences fall out of this table:
- Only an owner can create the service or add class dates. If you do not see ADD SERVICE on the Services page, you are signed in as a manager or staff.
- Any staff member can book an appointment. That is the practical difference between the two paths below — with appointments, your front desk can put their own shift on the calendar without an owner.
The usual desk hire should be the Staff role, not Limited Staff. Limited Staff is built for teachers and restricts them to their own students. See Roles & Permissions and Customizing Limited Staff Permissions.
Which path to use
Both paths use the same service and the same hourly rate. They differ in what you put on the calendar, and the honest deciding factor is whether the shift repeats on a fixed pattern.
| Path A: group class dates | Path B: appointments | |
|---|---|---|
| Best when | The shift is the same every week | Hours move around, or fill gaps between lessons |
| Setting a repeating pattern | Yes — set the pattern once with Add Dates | Yes, but the service needs a $0 recurring plan, which creates a subscription |
| Needs a placeholder client | No. The class roster stays empty | Yes. Every appointment requires a client |
| Needs a payment plan | No, as long as nobody enrolls | Yes. Booking always asks for a plan |
| Creates invoices | No | A $0 invoice per booking, on the placeholder client |
| Who can add hours | Owner only | Owner, manager, or staff |
| Changing a single day | Change the day or time | Drag it like a lesson |
| Two people on one shift | Yes — assign both | Yes — assign both |
| Shows up in | Class and enrollment views, as a class with nobody in it | Client lists and lesson counts, under the placeholder name |
Why: the trade is repeatability against flexibility. Path A sets a weekly pattern once and keeps your client list clean, but every change goes through an owner. Path B lets the front desk manage their own hours and handles odd-length shifts, at the cost of one fake client record and a $0 invoice each time.
Schools running a fixed desk rota usually land on Path A. Schools where a teacher picks up office hours when they can usually land on Path B. If you need both, create two services and put the same hourly rate on each.
ℹ️ Note: Use the Appointment or Session service type. Event services are built around recitals and performance slots, and Subscription Only services have no calendar dates at all, so there is nothing for payroll to count.
Before you start
Decide the policy first. Opus1.io will schedule and pay exactly what you put on the calendar; it will not work out that someone covered the desk on Thursday.
Settle three things:
- Who is being paid. Each person needs a staff profile before you can attach a rate. See How do I add a new teacher or staff member?.
- Which path from the table above. The service type is chosen when you create the service and cannot be switched later.
- The hourly rate for desk and admin work. Use Hourly, not Fixed — a fixed rate pays the same for a 30-minute block and a four-hour block, and desk shifts are rarely one length.
You do not need a plan that families can buy, and you do not need a real student. For Path B you will need a placeholder client and a $0 plan; for Path A you need neither.
Step 1: Create the Front Desk service
Go to Settings > Services and click ADD SERVICE.
- Select the service type — Group Class for Path A, Appointment for Path B — then click Continue.
- Name it for what it is: Front Desk, Admin, or Office Hours. This name is what appears on the calendar and in the Service Name column of the payroll export, so keep it short and obvious.
- Fill in the Description and short description fields. They are required, and internal wording is fine — something like Internal only. Not offered to families.
- Set the duration to a typical shift rather than leaving the lesson default. A four-hour block is 240 minutes. Pay follows the actual start and end times on the calendar, so this is a starting point, not a cap.
- Choose a calendar color that is not the one your lessons use, so desk blocks are obvious on a crowded schedule.
- Turn off Can visitors see this service? so it never appears on a self-booking page.
- Leave Deactivated off.
- Leave cancellation rules that issue make-up credits switched off. This is not a lesson, and you do not want it minting credits.
- Click Update Service to save.
⚠️ Warning: Turning off Can clients see this service? as well makes the service invisible to everyone except managers and owners — including your front desk staff. On Path B, that stops the desk person from booking their own shift. Leave it on unless an owner or manager does all the booking.
If the service keeps appearing on the Today dashboard, turn off Should appointments or session date of that service be spotlighted on Today's dashboard? in the service settings. See How do I spotlight my services on the Today dashboard?.
Step 2: Set the hourly pay rate
Open the staff member's profile, click Update Profile (the pencil icon), and scroll to Staff Rates. Click ADD STAFF RATES.
- Set the rate type to Hourly.
- Enter the amount they are paid per hour for desk work.
- Under Services, select the Front Desk service only. Do not apply the rate to all services, or their teaching rate and their desk rate will overwrite each other.
- Set Locations if they only work the desk at one site; leave it open if they cover more than one.
- Leave the per-client bonus fields empty. There is no student on these blocks.
- Click ADD, then scroll to the bottom and click UPDATE STAFF. The rate is not saved until you do.
Someone who both teaches and works the desk keeps two separate rates — one on the lesson services, one on this service. Payroll matches each calendar block to the rate attached to that block's service, so a four-hour shift pays desk rate and a 30-minute lesson pays lesson rate on the same day.
⚠️ Warning: Pay rate changes apply backward as well as forward. The payroll page recalculates past dates using the current rate, so export the period you already paid before you change anything. See How do I change a current staff member's pay rate?.
If the rate is missing, payroll flags the row with an orange caution icon: the hours appear but the dollars do not.
Path A: A standing weekly shift
Use this when the shift repeats — Maya works the desk Monday to Friday, 3:00 to 8:00, all term.
Creating it takes two steps, and the second is the one people miss.
- Open the Front Desk service and go to the Classes tab.
- Click +ADD CLASS. Name it like a shift, not a class: Front Desk - Weekdays 3-8
- Set the location, choose the desk person under Primary Staff, and set capacity to 0 so a stray enrollment cannot fill a seat.
- Click Submit. This creates the class, but it has no dates yet and nothing is on the calendar.
- Open the class you just created and click Add Dates.
- Set the pattern — recurring, repeating weekly, ending after a set number of occurrences or on a date. Leave it running to the end of the term if the desk is staffed year-round.
- Click Submit. The blocks now appear on the calendar.
- Do not enroll anyone.
Why the second step matters: a class with no dates produces no calendar blocks, and no calendar blocks means no payroll hours. If a shift is missing from payroll, this is almost always why.
To swap who works a date, change the staff on that date the same way you would for a group class. For a day the desk is closed, cancel that date rather than enrolling a fake cancellation.
💡 Tip: When you are reviewing real class enrollment, filter by service name to keep the empty desk blocks out of the view. They will otherwise read as classes nobody signed up for.
Path B: Shifts that change week to week
Use this when the hours move — Jordan is in the office Tuesday 1:00 to 3:00 this week and Thursday evening next week, or a teacher does admin in the gaps between lessons.
First, create one placeholder client
An appointment cannot be booked without a client, so make a single internal record for this purpose:
- Name it so nobody mistakes it for a family: Front Desk Hours or Admin (Internal).
- Leave the email field empty. With no address on file, reminder and booking emails have nowhere to go. Do not add a real address for convenience — it will send lesson reminders to whoever owns it.
- Do not attach it to a real household, and do not book the staff member as their own client. That sends them client email at work and makes them look like their own student on payroll.
One placeholder is enough for the whole school. You do not need one per staff member. It will appear in client lists, and that is the real cost of this path.
Then, add a $0 plan
Booking always asks for a payment plan, so the service needs one that charges nothing. On the service's Payment tab, create a Single Visit plan priced at $0. Do not enable it for self-booking.
⚠️ Warning: Do not use a membership or other recurring plan. That creates a subscription on the placeholder client and bills it every month for office time.
Then book the shift
- Click Book Appointment at the top of the page.
- Choose the desk person as the staff, the Front Desk service, and the placeholder client, then set the real start and end times.
- Click Book Appointment to continue.
- Select the $0 Single Visit plan, then click Enroll and Pay Later.
Because a Single Visit plan is not a recurring plan, the Recurring toggle is not available — each shift is booked on its own. That is the cost of the flexibility this path buys you.
Enroll and Pay Later still creates an invoice, dated the day of the appointment. At $0 it collects nothing and nothing is charged to anyone, but the record exists on the placeholder client. See What does "Enroll Now and Pay Later" do?.
Appointments booked with a client stay marked as attendance not taken until someone marks them. That only matters if your school pays from the completed column — payroll counts the hours either way. See How do I take attendance?.
💡 Tip: If the desk person also teaches, book their office blocks into gaps in their teaching schedule. An admin can book over a lesson with only a warning.
What payroll shows
Go to Staff > Payroll, set the date range, and click the staff member's name for the detailed breakdown. You will see the Front Desk service, the date, the duration, the location, and the amount. On Path A the client column is empty; on Path B it shows the placeholder name.
| Metric | What it means for desk hours |
|---|---|
| Total Hours Active | Paid hours from scheduled blocks. Your desk shifts are counted here. |
| Total Hours Available | Paid availability with nothing scheduled in it — paid unavailability blocks land here, not desk shifts. |
| Not Completed / Completed | Whether attendance was taken. Payroll counts the hours whether or not it was. |
| Export Detailed (CSV) | One row per date, with a Service Name column. Filter on it to separate office hours from teaching. |
That Service Name column is the payoff for giving desk time its own service: one export, filtered two ways, instead of two systems to reconcile. Full detail on every metric is in Staff Payroll.
What this does not do
Worth knowing before you build a pay period around it:
- It is not a timesheet. If someone stays 20 minutes late, a person has to change that day's end time. Nothing records itself.
- It does not separate office hours from teaching automatically. Filter by service name. The placeholder client and the empty class blocks stay visible in client and enrollment views until you do.
- It does not block a teacher's lesson availability on its own. A shift occupies that person on the calendar, but a paid unavailability block is what stops students from booking around it.
- It does not pay anyone. No payouts, no tax, no withholding, and no record of which periods you have already sent to your payroll provider.
FAQ
Is there a built-in timesheet or clock-in for front desk staff? No. Payroll is built from the calendar, so office hours have to be scheduled like any other work. This article is the recommended way to do that.
Which path should I pick? Neither is the official answer. If the shift repeats weekly, Path A sets the pattern once and keeps your client list clean. If the hours move around or your front desk needs to add their own, Path B is worth the placeholder client. Plenty of schools run both, with a service for each.
Payroll shows the hours but the amount is $0.00. There is no hourly rate on that service for that staff member. Open their profile, check under Staff Rates that the rate lists the Front Desk service, and make sure you clicked UPDATE STAFF after adding it.
Will this inflate how many students we have? Path B adds exactly one placeholder client to your client list, however many shifts you book with it. Path A adds none. Filter that name out of client reports.
A teacher needs paid admin time that should stop students booking with them. That is a paid unavailability block, not this service. Use this service only when you want the time named on the calendar and on payroll as desk or admin work. See How do I create a paid unavailability block for my staff?.
Related Articles
Paying staff
- Staff Payroll — the payroll dashboard, exports, and what every metric counts
- What is the difference between fixed and hourly staff pay rates? — why desk hours need an hourly rate
- How do I change a current staff member's pay rate? — and why changes apply to past dates
- How do I create a paid unavailability block for my staff? — paying for breaks and admin that blocks teaching time
- How do I track staff commissions for sales? — paying on sales instead of hours
Setting up the people and the service
- How do I add a new teacher or staff member? — creating the profile before you can attach a rate
- Roles & Permissions — why a desk hire should be Staff rather than Limited Staff
- How Do I Set Up an Appointment-Based Service? — the full service setup for Path B
- How do I make my services visible to clients and/or visitors? — what each visibility toggle hides, and from whom