Chalk It Pro logoCHALK IT PRO
Gym owner guide · Beta

Coach payroll

Set what each coach earns, schedule your staff’s shifts and time off, review the hours they log, and run one report that totals classes, hours, attendance and pay for any period.

Overview

The payroll report lists every class your coaches taught in a period, with the number of people who attended and what each coach earned. It is built from your class schedule and your attendance records, so there is nothing to enter by hand except each coach's pay rate.

You can pay a coach a flat amount per class or an hourly amount, and add a bonus for each person in the room. Each coach can also have different rates for different class types, such as CrossFit, Spin or personal training.

Work that isn't a class, like programming or cleaning, is paid by the hour. Staff log their hours, an admin approves them, and approved hours appear on the same report.

The staff schedule plans the week: who coaches which classes (straight from your class schedule), who works which shifts, and who is off. Staff ask for shifts and time off there, and a shift that has happened is logged as hours in one tap, so the schedule and payroll stay in step.

Side menu. Admins see PAYROLL with a red count when work hours are waiting for review, and STAFF SCHEDULE with a count of shift and time off requests. Staff see MY HOURS and STAFF SCHEDULE.

Who can use it

Only gym admins see PAYROLL in the left menu. The report always covers the gym you currently have selected, so switch gyms first if you manage more than one.

Who logs hours

Coaches, admins, and anyone an admin adds as staff see MY HOURS and STAFF SCHEDULE in the ME section of the menu.

Quick start

  1. Open the reportSelect PAYROLL in the left menu.
  2. Set class types on classesSelect Setup → Class Types, add the kinds of classes you run, such as CrossFit, Spin or Personal Training, and pick one for each class in the list. You can also set it in the class editor.
  3. Enter pay ratesSelect Setup → Coach Pay Rates, fill in a default rate for each coach, add class type rates where a coach is paid differently, then select Save Rates.
  4. Set your pay periodSelect Setup → Pay Period once. The report then opens on your last pay period.
  5. Review each coachRows are grouped by coach. Expand a coach to see every class behind their total.
  6. Export the summarySelect Summary, then Export, for one line per person to enter in your payroll provider.

Set pay rates

Select Setup at the top of the report, then Coach Pay Rates. The Coach Pay Rates window lists every coach at your gym, one card each. Every rate, whether a coach's default or a class type rate, has the same three fields.

Coach Pay Rates, one coach’s card. The top row is the default rate. Each class type rate below it overrides the default for classes of that type. Example values.
FieldWhat it does
Rate TypePer Class pays the Rate once for every class the coach teaches. Per Hour multiplies the Rate by the length of the class, so a 45 minute class pays three quarters of the hourly Rate. New coaches start on Per Class.
Rate ($)The base amount. The helper text under the field changes to "per class coached" or "per hour coached" to match the Rate Type.
Per-Head Bonus ($)Optional. An extra amount for every person who attended the class. Leave it empty if you do not pay a bonus.

Assign class types to classes

A class type is set on each class, separately from its track. The quickest way is all at once: select Setup → Class Types on the payroll report, add your class types, and pick one for each class under Your classes.

Your classes. One line per class name. A pick sets the type on every schedule with that name. Mixed means its schedules have different types: expand it to see them.

You can also set it on a single class: open it in the class editor and use the Class Type field in Class Details.

Class editor. Type to find a class type. If it doesn’t exist yet, pick Add “Spin” to create it on the spot.

Different rates for different class types

The first row on a coach's card is their default rate. It is labeled All class types until you add a class type rate, and All other class types after that.

  1. Select Add class type rate on the coach's card.
  2. Pick the Class Type and enter its Rate Type, Rate and Per-Head Bonus.
  3. Repeat for other class types, then select Save Rates.

Each class is paid at the rate for its own class type. If the coach has no rate for that class type, the default rate is used. If there is no default either, the class shows no pay.

Saving and removing rates

Rate changes apply to past classes

Pay is worked out each time you open the report, using the rate saved at that moment. The system keeps one current rate per coach and class type, and no rate history. If a raise starts partway through a period, run and export the earlier period first, then change the rate.

Choose a period

The report opens on your last pay period, the most recent one that has fully ended. Use the Payroll Range menu to pick another, and the report reloads right away. The line above the grid shows the exact dates.

Set your pay period

Select Setup → Pay Period and choose how often you pay staff and which day your weeks start. The window shows the current and last pay period so you can check them before saving.

Pay frequencyPay periods
Every weekSeven days, starting on the day you choose, for example Monday to Sunday.
Every two weeksFourteen days. Pick the first day of any one pay period so the app knows which weeks pair up.
Twice a monthThe 1st to the 15th, and the 16th to the last day of the month.
Once a monthThe whole calendar month. This is the default.

The week start also sets the weeks your staff see on MY HOURS. If your gym runs Monday to Sunday, set weeks to start on Monday.

Range options

OptionDates covered
Last Pay PeriodThe most recent pay period that has ended. This is the default.
Current Pay PeriodThe pay period you’re in now, for checking hours before it ends.
This WeekThe current week, starting on your week start day.
This MonthThe 1st through the last day of the current month.
Previous MonthThe whole of last month.
Last 3, 6 or 12 MonthsThe previous months plus the current month.
Custom Date RangeAny dates you pick in the date picker next to the menu. Picking dates there switches to this option.

Both the first and last day are included in full. Classes after today are never counted, so when a range hasn’t ended yet the report says so above the grid.

Read the report

app.chalkitpro.com/reports/payroll
Payroll toolbar. Pick the period on the left. Work Hours opens the review queue and shows how many entries are waiting. Summary totals the period per person for your payroll provider. Setup lists the setup steps in order: Class Types, Coach Pay Rates, Staff & Hourly Rates, then Pay Period.

The grid has one row for each coach for each class they taught. When two coaches share a class, each gets a row. Rows are grouped by coach, and each coach's line shows totals for the period.

Example only: two coaches, groups expanded. Sam is paid $25 for CrossFit and $20 for Spin. Names and amounts are made up.

CoachDateClassClass typeStart ClassesHoursAttendance Rate typeRatePer headPay
Jordan Reyes21.7517$69.50
Mon Oct 5Morning WODCrossFit6:00AM11.0011Per Hour$30.00$1.00$41.00
Mon Oct 5Lunch ExpressCrossFit12:00PM10.756Per Hour$30.00$1.00$28.50
Sam Okafor22.0016$77.00
Mon Oct 5Evening WODCrossFit5:30PM11.009Per Class$25.00$2.00$43.00
Mon Oct 5Spin RideSpin7:00PM11.007Per Class$20.00$2.00$34.00

Columns

ColumnMeaning
CoachThe coach assigned to the class on that date. A class with no coach shows as Unassigned.
Class Date, DayThe date the class took place and its weekday.
Class Name, TrackThe class and the track it belongs to.
Class TypeThe class type set on the class. It decides which of the coach's rates is used. Blank when the class has none.
Start TimeShown in your gym's 12 hour or 24 hour clock setting. If a single day was changed, the changed time is used.
ClassesAlways 1 per row. It exists so the coach line can add up the number of classes.
HoursClass length in hours, to two decimals. A changed length for a single day is used when one was set.
Checked InPeople checked in to the class, not counting no shows.
ReservedPeople who reserved a spot and are not yet checked in, not counting no shows.
No ShowsPeople marked as a no show.
AttendanceEveryone who counts toward the Per-Head Bonus: all attendees except no shows and people on the waitlist. This includes people who reserved but have not checked in.
Rate Type, Rate, Per HeadThe rate that was used for that class: the coach's rate for its class type, or their default. Blank when the coach has no matching rate.
PayThe amount earned for that class. See the next section.

Grid toolbar

How pay is calculated

Each row is calculated on its own, then rows are added up under the coach.

Per ClassPay = Rate + (Per Head × Attendance)
Per HourPay = (Rate × Minutes ÷ 60) + (Per Head × Attendance)
RoundingTo the cent, halves round up

Before the formula runs, the report picks the rate. For each coach and class it looks for the coach's rate for that class's class type first, then the coach's default rate.

If a class is shared by two coaches, each coach is paid the full amount for that class. Split the Rate between them if you only want to pay the class once.

Try it

Pay calculator Example values. Change them to check a coach's pay.
Base pay
$0.00
Per-head bonus
$0.00
Pay for the class
$0.00

What gets counted

The report follows your class schedule and then applies payroll rules, so it can differ from the attendance report in a few places.

Included

  • Each date a recurring class actually runs, including every-other-week classes.
  • One-time classes on their date.
  • Today's classes, even if they have not started yet.
  • A substitute coach. If you changed the coach for one day, that coach gets the row and the pay.
  • A changed start time or length for a single day.
  • Every coach listed on a class.

Left out

  • Classes cancelled for the whole series.
  • A single date that was cancelled. These are unpaid. The attendance report still lists them.
  • Dates after today.
  • Appointments that came in from GoHighLevel. They are not coached classes.

Coach on time off

Classes are paid to the coach listed on the class for that day. If that coach had approved time off on the staff schedule, the row is marked Coach on time off in the Check column and the report warns you. If someone else coached, change the coach for that day on the class schedule, and the pay moves to them.

Rows with no pay

A row shows no Pay when the coach has neither a rate for that class type nor a default rate, when the class has no coach (Unassigned), or when an older class stores a coach as plain text instead of a member. The class still appears so nothing is hidden. Assign the class to a coach on the class schedule, then run the report again.

Staff work hours

Use work hours for anything that isn't a class: programming, cleaning, front desk, events. Staff log their own hours each week, and an admin reviews them before they're paid.

Set up (admins)

  1. Add activitiesOn the payroll report, select Setup → Staff & Hourly Rates and add the kinds of work staff log, like Programming or Cleaning.
  2. Add staff who aren't coachesCoaches and admins can always log hours. Use Add Staff to let anyone else, like a cleaner, log hours too. They see MY HOURS in their menu the next time they sign in or switch gyms.
  3. Set hourly ratesGive each person a default hourly rate, and add an activity rate where they're paid differently. Select Save Rates.

Log hours (staff)

MY HOURS on a phone. One week at a time, with each entry’s status. Example entries.
  • Open MY HOURS in the left menu. It shows one week at a time, starting on your gym’s week start day (Sunday unless your admin changed it).
  • Select Log Hours, then pick the date and activity, enter the hours in quarter hours (for example 1.5), and add a note about what you worked on.
  • Each entry shows Pending review, Approved or Needs changes. If an admin sends it back, their reason shows under the entry. Edit it to resubmit, or delete it.
  • You can edit or delete anything that isn't approved yet. Approved hours are locked; ask an admin to change them.

Review hours (admins)

Work Hours review queue. Tick entries, then Approve, or Reject with a reason the staff member sees. Example entries.

Approved pay is locked in

When hours are approved, the person's hourly rate at that moment is saved with them. Changing a rate later only affects hours approved after the change. This is different from class pay, which always uses the current rate.

Set a rate before approving

Approval is refused for anyone without an hourly rate for that activity or a default rate. The message names who needs one.

Staff schedule

The staff schedule is one week of who works when. Each coach’s classes come straight from your class schedule, so there’s nothing to enter twice. Add shifts for everything else, like front desk or cleaning, using the same activities your staff log hours against. Staff ask for shifts and time off, you approve them, and once a shift has happened its hours go to payroll in one tap.

STAFF SCHEDULE. Classes come from the class schedule; colored blocks are shifts. Dashed blocks are open or waiting for approval, and red ones need you: a class with no coach, or a class on someone’s day off. Example week.

Set up (admins)

There’s nothing new to set up. The schedule uses what payroll already has:

Plan the week (admins)

  1. Add shiftsSelect Add shift, or the + in a person’s day. Pick the person, the activity and the times. Shifts you add are on the schedule right away.
  2. Post open shiftsChoose Open shift instead of a person. Anyone on staff can pick it up, and you confirm who gets it.
  3. Copy last weekSelect Copy last week to repeat last week’s shifts, including open ones. Shifts already on this week aren’t copied twice.
  4. Review requestsA red count shows on STAFF SCHEDULE and on Requests. Approve or decline each one, or Approve all.

For staff

On a phone, pick a day to see everyone working it. Example day.
  • Open STAFF SCHEDULE in the left menu to see the whole team’s week, with you at the top.
  • Request a shift: pick the activity, day and times. It shows as Pending until an admin approves it. You can change or withdraw a request until then.
  • Pick up an open shift: select it, then Pick up this shift. An admin confirms it.
  • Ask for time off: choose the first and last day. Only admins see your note.
  • Log your hours: once a shift has happened, select it and choose Log hours, or use Shifts to log on MY HOURS. The hours go for review like any other entry.
  • A scheduled shift or approved time off can only be changed by an admin.

How the schedule feeds payroll

The schedule is the plan; payroll pays what happened. Classes are paid from the class schedule, as always. Shifts are paid once their hours are logged and approved, through the same review as other work hours, so a shift is never paid twice.

Payroll report warnings. The report checks the period against the schedule before you pay anyone. Example numbers.

Shifts that were worked

  • Staff log them in one tap, from the shift or from Shifts to log on MY HOURS.
  • You approve them in Work Hours, where the Scheduled column shows the shift’s time and turns orange if the hours were changed.
  • If nobody logged them, the report says so. Select Review, tick the shifts that were worked and choose Approve as worked.
  • They show on the report as Shift rows at the shift’s start time, paid at the person’s hourly rate when approved.

Things to check

  • Shifts on someone’s approved day off start unticked in Shifts not logged, since they probably weren’t worked.
  • A class whose coach was on time off is still paid to that coach until you change the coach for that day. The Check column marks it.
  • Approving needs an hourly rate for each person, the same as logged hours. The message names who needs one.
  • Open shifts nobody picked up aren’t paid or counted.

Export

Select Export in the grid toolbar and choose CSV or Excel. Files are named coach-payroll.

Taxes & paying staff

Chalk It Pro works out what each person earned. It doesn't pay anyone, withhold taxes, or file payroll taxes. Every amount on the report is gross pay, before any taxes or deductions. Run the actual payroll in your payroll provider, such as QuickBooks Payroll, Gusto or ADP, or hand the numbers to your accountant.

Each pay period

  1. Approve all hoursClear the Work Hours queue so nothing is still pending. Pending hours aren’t paid.
  2. Run the report for the pay periodSet the Payroll Range to the exact dates of the pay period, and check each person’s total.
  3. Clear shifts not loggedIf the report says scheduled shifts were never logged, select Review and approve the ones that were worked.
  4. Check classes on a day offIf the report flags a coach on time off, change the coach for that day on the class schedule so the person who taught is paid.
  5. Open the summarySelect Summary. It shows one line per person: classes, class hours and pay, work hours and pay, total hours and gross pay, with their email for matching. It warns you about anyone with classes that have no pay.
  6. ExportIn the summary, use Export → Excel or CSV. The file is named for the period. Keep it as your record.
  7. Enter pay in your payroll providerFor each person, enter their total gross pay, plus hours if your provider asks for them. Your provider calculates withholding and taxes, makes the payments and files the tax forms.

About importing into QuickBooks and other providers

Employees and contractors

Whether a coach or staff member is an employee or an independent contractor changes how they’re paid and taxed. Your payroll provider or accountant sets that up. Chalk It Pro doesn’t track it.

Troubleshooting

How do I pay one coach differently for CrossFit and Spin?

Open Setup → Coach Pay Rates, select Add class type rate on that coach's card, pick the class type and enter the rate. Repeat for each class type. Classes of any other type use the coach's default rate.

A class type is missing from the list.

Class types are created in the class editor or with Setup → Class Types on the payroll report. Create it there, set it on the class, then reopen Coach Pay Rates.

A coach shows no Pay.

Open Setup → Coach Pay Rates and check the coach has a default rate, or a rate for that class's class type. A coach with both blank has no rate. If the row says Unassigned, the class has no coach on the schedule.

A coach is missing from the Pay Rates window.

The window lists the coaches of the gym you have selected. Check that the person is marked as a coach at this gym and that the right gym is active.

A class I expected is not on the report.

Check whether it was cancelled for that date, falls after today, or runs on an every-other-week schedule that skips that week. Also check that the date range includes the day.

Pay changed on a period I already paid.

Rates are applied when the report runs, so changing a rate changes every period. Export each period before you change a rate.

Attendance is higher than the number checked in.

Attendance includes people who reserved but were not checked in. If you only want to bonus people who showed up, mark absent people as no shows before running payroll.

I see an error when saving rates.

A message names the problem. Rates must be numbers, cannot be negative, and stay within the limits of 100,000 for Rate and 1,000 for Per-Head Bonus. Only gym admins can save rates.

A coach’s classes aren’t on the staff schedule.

The schedule shows the coach set on each class in the class schedule, including a substitute for one day. A class with no coach shows in the Open row as No coach, and so does a class whose coach is stored as typed text instead of a member. Set the coach on the class.

I approved time off. Why does the coach still get paid for a class that day?

Time off doesn’t change who is on a class, because only you know who covered it. The report marks those classes Coach on time off. Change the coach for that day on the class schedule and the pay moves to the person who taught.

A shift was worked but isn’t on the report.

Shifts are paid once their hours are logged and approved. Check the Work Hours queue for pending hours, and the never logged warning on the report, where you can approve the shift as worked.

Staff can’t pick an activity for a shift.

Shifts use the activities in Setup → Staff & Hourly Rates on the payroll report. Add one there, like Front Desk. An activity that has shifts or logged hours can’t be deleted; rename it instead.

Quick reference

Who has accessGym admins
WhereLeft menu, PAYROLL
Default periodLast pay period (set in Setup → Pay Period)
Week startSunday by default; change it in Setup → Pay Period
Rate typesPer Class, Per Hour
Where class types are setOn each class, in the class editor
Rates per coachOne default rate, plus one rate per class type
Which rate appliesThe class type rate, otherwise the default
Rate limit$0 to $100,000
Per-Head Bonus limit$0 to $1,000
Remove a rateClear both fields (or enter 0) and save, or use the trash can on a class type rate
Rate historyNone. Only the current rates are kept.
Who can log work hoursCoaches, admins, and members added as staff
Work hoursQuarter hours, 0.25 to 24 per entry, no future dates
Work hours payHourly rate at approval × hours
Staff scheduleLeft menu, STAFF SCHEDULE: coaches, admins and members added as staff
ShiftsQuarter hours within one day, on your work log activities
Who approvesAdmins: shift requests, pick-ups and time off
Time offWhole days, up to 60 days per request
Shift payPaid once logged and approved, as work hours
Amounts on the reportGross pay, before taxes and deductions
Taxes and paymentsHandled in your payroll provider, not Chalk It Pro
Export formatsCSV, Excel: detailed (report) or one line per person (Summary)