---
title: How Do I Set Up Ongoing Private Lessons?
description: Set up recurring private lessons in Opus1.io — monthly billing, schedule optimization, and cancellation credits that route to makeups instead of refunds.
---

[Skip to content](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#main-content)

English

Show submenu for translations

![Opus1-3-icon-color-1.png\]](https://kb.opus1.io/hs-fs/hubfs/Opus1-3-icon-color-1.png?height=50&name=Opus1-3-icon-color-1.png)

Open main navigation

Close main navigation

- English
  
  Show submenu for translations
- Go to opus1.io

 Go to opus1.io

 Hello. How can we help you?

- There are no suggestions because the search field is empty.

1. [opus1io Knowledge Base](https://kb.opus1.io/?hsLang=en)
2. [Services](https://kb.opus1.io/services?hsLang=en)
3. [Appointments](https://kb.opus1.io/services?hsLang=en#appointments)

# How Do I Set Up Ongoing Private Lessons?

## Ongoing lessons are the recurring weekly or biweekly private lessons that make up the core of most studios' revenue. Create one under Business \> Services \> Create Service \> Appointment (e.g. Private Lessons), bill it on a monthly subscription, and map its cancellation credits to a dedicated makeup service so a missed lesson doesn't turn into a refund request or an awkward phone call.

**Last updated:** August 14, 2026  
**Applies to:** Owner / Manager | Plan: All  
**Feature:** Services, Scheduling

#### **Table of Contents**

1. [Overview](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#overview)
2. [Step 1: Create the service](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#step-1)
3. [Step 2: General settings](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#step-2)
4. [Step 3: Payment plan](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#step-3)
5. [Step 4: Cancellation and makeup credits](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#step-4)
6. [Step 5: Conversion, as the target service](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#step-5)
7. [Step 6: Notifications](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#step-6)
8. [Setup checklist](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#setup)
9. [FAQ](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#faq)
10. [Related Articles](https://kb.opus1.io/how-do-i-set-up-ongoing-private-lessons#related-articles)

#### **Overview**

An ongoing lesson service is what a family enrolls in after a trial — a recurring appointment, billed monthly, that keeps showing up on the calendar until someone cancels it.

**Why it matters:** this is the service that carries your recurring revenue, so the decisions you make here — duration, schedule optimization, and especially how cancellations are handled — determine whether a cancelled Tuesday lesson quietly becomes a makeup credit or turns into a billing dispute at the front desk.

ℹ️ **Note:** Ongoing lessons work best alongside two companion services: a [trial lesson service](https://kb.opus1.io/how-do-i-set-up-trial-lessons?hsLang=en) that converts prospects into ongoing enrollment, and a [makeup lesson service](https://kb.opus1.io/how-do-i-set-up-makeup-lessons?hsLang=en) that absorbs cancellations without competing for your paid teaching slots. See the [Appointment Services overview](https://kb.opus1.io/how-do-i-set-up-an-appiontment-based-service?hsLang=en) for how the three connect.

#### **Step 1: Create the service**

Go to **Business \> Services \> Create Service \> Appointment (e.g. Private Lessons)**.

Name it instrument-first, with the service type and duration, so staff and clients can tell services apart at a glance:

- Private Piano Lesson - 30 min
- Private Guitar Lesson - 45 min

**Why:** instrument first keeps your service list sorted by instrument, and the type-plus-duration suffix is what stops someone booking a trial when they meant an ongoing lesson. See the naming, descriptions, and tags section in the [Appointment Services overview](https://kb.opus1.io/how-do-i-set-up-an-appiontment-based-service?hsLang=en) for the full convention.

#### **Step 2: General settings**

##### **What it does**

The General tab controls how the service looks and books: identity, duration, capacity, visibility, and the scheduling rules that decide how tightly your teachers' calendars pack.

##### **Why you'd use it**

A family choosing between two similar-looking lesson listings will pick the one with a real photo and a clear description. And a service with **Schedule optimization** left off will scatter appointments across a teacher's day, leaving gaps that could have held another paid lesson.

##### **How to configure it**

Most of these settings work identically across all three appointment services — see the [shared configuration reference](https://kb.opus1.io/how-do-i-set-up-an-appiontment-based-service?hsLang=en) for tags, colors, buffers, age limits, enrollment windows, and how schedule optimization actually calculates gaps. What's specific to ongoing lessons:

| Setting | Recommendation | Why |
| --- | --- | --- |
| **Main photo** | Roughly 4:3, no text near the top or bottom | Avoids cropping on mobile self-booking |
| **Short description** | One line — *"1-on-1 private piano lessons"* | This is the tagline families see on the booking grid |
| **Long description** | What the lesson includes, level expectations, what to bring, key policies | Reduces "what do I need to bring" messages to the front desk, and sets policy expectations before anyone books |
| **Duration** | Match your standard lesson length (30, 45, or 60 min) | Changing duration later updates all **future** appointments for the service |
| **Setup / cleanup time** | Usually none — most teachers teach back to back | If you do add buffers, remember they stack between consecutive services |
| **Maximum clients** | 1 | Controls whether the slot can hold more than one student |
| **Can visitors / clients see this service?** | Both **on** | Lets prospects find it and enrolled families self-book it |
| **Slot interval / slot start snap** | `1`15 minutes is common; match the two | Keeps the self-booking grid clean |
| **Minimum / maximum lead time** | e.g. 2 days / 30 days | Gives you warning before a new student appears, and stops families holding slots months out |
| **Schedule optimization** | **On**, with a 30-minute maximum gap | Prioritizes slots that keep a teacher's day tight instead of scattered — this is the setting that protects billable hours |
| **Lifecycle status after booking** | Leave unset | *Member* is applied automatically when a client enrolls in an ongoing subscription — you only need lifecycle statuses on trial services |

>  

💡 **Tip:** Add the service to a self-booking link under Business settings so prospects and families can actually find it. See [Creating Self-Booking Links](https://kb.opus1.io/creating-self-booking-links?hsLang=en) for more help.<https://kb.opus1.io/creating-self-booking-links?hsLang=en>

##### **Reminders**

| Setting | Default |
| --- | --- |
| Email reminder | 28 hours before |
| SMS reminder | 4 hours before (requires SMS) |

#### **Step 3: Payment Plan(s)**

##### **What it does**

The payment plan on an ongoing service determines how — and how often — a family is billed for the lesson.

##### **Why you'd use it**

Most studios don't want to invoice each lesson individually; a recurring subscription bills automatically every month, so your front desk isn't manually charging each family every week.

##### **How to configure it**

Ongoing lessons use one of three shapes:

| Plan | How it bills | Who it fits |
| --- | --- | --- |
| **Ongoing subscription — flat rate** | Same amount every month regardless of how many lessons fall in it | Most studios. Predictable for you and for the family |
| **Ongoing subscription — variable** | Charges per lesson actually scheduled that month | Studios that don't want to explain why February costs the same as a five-Tuesday March |
| **One-time payment** | A single charge, normally for a full term | Term-based studios that enroll by semester rather than month to month |

On the plan list (not inside the plan editor), toggle **Enabled for self-booking** on — clients can't select a plan online until this is on. ***Note that one-time payments for term-based billing is not supported for self-booking today. ***

💡 **Tip:** For every pricing field — proration, deposits, sibling discounts, auto-pay, and holds — see [Setting Up Payment Plans for Your Appointment-Based Services](https://kb.opus1.io/setting-up-payment-plans-for-your-appointment-based-services?hsLang=en).

#### **Step 4: Terms and conditions**

##### **What it does**

Your terms are shown during self-booking and stay accessible on the family's profile alongside their subscription.

##### **Why you'd use it**

**Why:** this is the one place a family formally agrees to your cancellation policy, your notice period for withdrawal, and your billing terms — before they're enrolled, not after they're disputing a charge.

Full details in the [Managing Terms & Conditions Policies.](https://kb.opus1.io/how-do-i-create-terms-and-conditions-for-my-services-v2?hsLang=en).

#### **Step 5: Cancellation and makeup credits**

**What it does**

This is where an ongoing service connects to your makeup service. When a lesson is cancelled, [Opus1.io](http://Opus1.io) can issue a service credit that books into a dedicated makeup slot rather than back into your paid teaching schedule.

ℹ️ **Note:** "Cancellation" here means *"we can't make it this week"* — a single missed visit. It is not the same as a family un-enrolling from lessons entirely.

##### **Why you'd use it**

Without a credit mapped to a makeup service, a cancelled lesson either gets refunded (revenue you lose) or the family has to email you to work something out (time your front desk loses). Routing it to a makeup service handles both automatically — and the caps below are what stop that generosity from being abused.

##### **How to configure it**

**1. Define what counts as late.** On the **Cancellation** tab, a cancellation is late either:

- **X hours before** the lesson (e.g. 24 hours), or
- **After a specific time**, which you can set differently for each day of the week

**2. Set the three cancellation types.**

| Cancellation type | Typical for ongoing |
| --- | --- |
| **Client visit cancellation** | Issue a service credit, mapped to your matching makeup service |
| **Client late visit cancellation** | Forfeit, or issue a credit — this is where your policy has teeth |
| **Staff visit cancellation** | Issue a credit — a teacher's absence isn't the student's fault |

**3. Configure the credit itself.** When a cancellation type issues a service credit, these settings control it:

| Setting | What it does | Why it matters |
| --- | --- | --- |
| **How should it be labeled** | The name on the credit, visible to both staff and families | A credit labeled "Piano Makeup" is self-explanatory on a client's profile; "Credit" isn't |
| **Should the service for the credit be a different service?** | Points the credit at your makeup service instead of the lesson it came from | **Toggle this on.** This is the single setting that keeps makeups off your paid calendar |
| **Subscription cap on number of credits** | Maximum credits a family can hold at once | Set to 2, a family cancelling a third lesson gets nothing. Stops credits piling up faster than anyone can use them |
| **Credit validity period**   | Expiration window | ⚠️ Counted from the date the credit is **created** — the day the lesson was cancelled — not the date of the cancelled lesson |
| **Cap on credits within a time period** | Rolling limit, on top of the outstanding cap | Set to 2 per 90 days, a family cancelling a third lesson in that window gets no credit **even if they've already used the first two**. This is the setting studios use to discourage habitual cancelling |

💡 **Tip:** See Mapping Makeup Credits to Makeup Services for the full walkthrough, and Understanding Cancellation Makeup Credit Settings for validity, caps, and timing rules.

⚠️ **Warning:** A common mistake is leaving the different-service toggle off, or selecting the ongoing service in that dropdown. Always confirm the mapping displays your **makeup** service's name before saving. See your Mapping Makeup Credits to Makeup Services article.

ℹ️ **Note:** The target doesn't have to be an appointment service. Some studios redeem private-lesson makeups in a group workshop — you can map appointment makeup credits to a **group class** service.

**4. Staff cancellations can issue money, not just credits**

Staff cancellations are the only type where you can automatically issue a **monetary** credit. What happens depends on billing timing:

- If that month's invoice is already paid → the amount is added to the account manager's account balance
- If the invoice is still open → the invoice is recalculated

**Why:** when you cancel on a family, some studios would rather take it off the bill than hand back a makeup slot the family didn't ask for.

**5. Other Settings**

| Setting | Typical for ongoing |
| --- | --- |
| **Disable self-cancellation** | Off — let clients cancel online |
| **Disable use credits** | Off — let clients self-book makeups via **Use** on a credit |
| **Credit only valid once paid** | On — credit usable only after the cancelled lesson's invoice is paid |
| **Send reminder for unused/expiring credits** | On — nudges families before credits expire |

**6. Write the cancellation policy text.** This is displayed to the family at the moment they go to cancel a lesson.

**Why:** put your cancellation policy in **both** your terms and conditions and this field. They agree to it at enrollment, and they're reminded of it at the exact moment it applies — which is when the argument would otherwise start.

💡 **Tip:** See your [Understanding Cancellation Makeup Credit Settings](https://kb.opus1.io/understanding-cancellation-credit-settings-timing-validity-and-limits?hsLang=en) article for validity, caps, and timing rules in full.

#### **Step 6: Conversion, as the Target Service**

If you run trial lessons, your ongoing service is the **destination**, not something you configure conversion on directly. On your [trial service](https://kb.opus1.io/how-do-i-set-up-trial-lessons?hsLang=en), set **Which service(s) can this service convert to?** to include this ongoing service — that's what makes a completed trial turn into an enrollment offer.

💡 **Tip:** Your trial service should list *every* duration a family might land on, not just the one matching the trial length. A family who trials at 30 minutes may well enroll at 45.

#### **Step 7: Notifications**

Review these templates on the **Notifications** tab so families know what to expect:

- **Confirmation email** — sent when a lesson is booked
- **Reminder email / SMS** — sent before the lesson
- **Cancellation email** — sent when a lesson is cancelled
- **Unused/expiring credits reminder** — helps families use makeup credits before they expire

Previews of every automated client email are in [Client Automated Email Notifications](https://kb.opus1.io/client-automated-email-notifications?hsLang=en).

#### **Setup checklist**

- \[ \] Service created, named instrument-first with type and duration
- \[ \] Tagged with duration, instrument, and service type
- \[ \] Duration, slot interval, and enrollment windows set
- \[ \] Schedule optimization enabled with a maximum gap
- \[ \] Monthly subscription plan created and **enabled for self-booking**
- \[ \] Terms and conditions written and sectioned
- \[ \] Late cancellation window defined
- \[ \] Cancellation credits mapped **to** a matching makeup service
- \[ \] Credit caps and validity period set
- \[ \] Cancellation policy text written
- \[ \] Service visible to visitors and clients
- \[ \] Service added to a self-booking link
- \[ \] Staff availabilities confirmed for all teachers on this service
- \[ \] Reminder templates reviewed

#### **FAQ**

**Q: Do I need a separate makeup service, or can cancelled lessons just go back into the ongoing service?**  
A: A separate makeup service is strongly recommended. It keeps makeup bookings from competing with paid ongoing slots, and lets you apply different visibility, pricing, and cancellation rules to redeemed credits.

**Q: If I change my cancellation credit settings, when does that take effect?**  
A: Immediately, and it applies to existing subscriptions — no subscription update required. If you change the rule to 2 credits per 90 days, [Opus1.io](http://Opus1.io) looks back at credits already issued and when, and uses that history the next time a family cancels.

**Q: What happens if I change the lesson duration later?**  
A: It updates all **future** appointments for the service. Past appointments are unaffected.

**Q: Can a client see this service if they haven't enrolled yet?**  
A: Yes, if **Can visitors see this service?** is on — this is what lets a prospect self-book without an account, though most studios route prospects through a trial service first.

**Q: When does a credit's expiration clock start?**  
A: On the day the credit is created — the day the lesson was cancelled — not the day of the cancelled lesson. A family who cancels three weeks out with a 30-day validity has less time than they'd assume.

#### **Related Articles**

- [Appointment Services overview](https://kb.opus1.io/how-do-i-set-up-an-appiontment-based-service?hsLang=en) — *how ongoing, trial, and makeup services connect*
- [Setting up trial lessons](https://kb.opus1.io/how-do-i-set-up-trial-lessons?hsLang=en) — *converting prospects into ongoing enrollment*
- [Setting up makeup lessons](https://kb.opus1.io/how-do-i-set-up-makeup-lessons?hsLang=en) — *configuring the credit-redemption service*
- [Appointment-based payment plans](https://kb.opus1.io/setting-up-payment-plans-for-your-appointment-based-services?hsLang=en) — *pricing, proration, deposits, and discounts*
- [Mapping Makeup Credits to Makeup Services](https://kb.opus1.io/mapping-makeup-credits-to-makeup-services?hsLang=en) — *the full credit-routing walkthrough*

- [Account & Troubleshooting](https://kb.opus1.io/account-troubleshooting?hsLang=en#main-content)

    - [General](https://kb.opus1.io/account-troubleshooting?hsLang=en#general)
    - [Login & Access](https://kb.opus1.io/account-troubleshooting?hsLang=en#login-access)
    - [Release Notes](https://kb.opus1.io/account-troubleshooting?hsLang=en#release-notes)
- [Business](https://kb.opus1.io/business?hsLang=en#main-content)

    - [General](https://kb.opus1.io/business?hsLang=en#general)
    - [Business Profile & Billing](https://kb.opus1.io/business?hsLang=en#business-profile-billing)
    - [Client Data & Forms](https://kb.opus1.io/business?hsLang=en#client-data-forms)
    - [Integrations](https://kb.opus1.io/business?hsLang=en#integrations)
    - [Locations & Rooms](https://kb.opus1.io/business?hsLang=en#locations-rooms)
    - [Self-Booking Links](https://kb.opus1.io/business?hsLang=en#self-booking-links)
    - [Terms & Conditions](https://kb.opus1.io/business?hsLang=en#terms-conditions)
- [Calendar & Scheduling](https://kb.opus1.io/calendar-scheduling?hsLang=en#main-content)

    - [General](https://kb.opus1.io/calendar-scheduling?hsLang=en#general)
    - [Batch Schedule Actions](https://kb.opus1.io/calendar-scheduling?hsLang=en#batch-schedule-actions)
    - [Calendar Notes & Display](https://kb.opus1.io/calendar-scheduling?hsLang=en#calendar-notes-display)
    - [Enrollment](https://kb.opus1.io/calendar-scheduling?hsLang=en#enrollment)
    - [Recurring & Rescheduling](https://kb.opus1.io/calendar-scheduling?hsLang=en#recurring-rescheduling)
    - [Substitutes](https://kb.opus1.io/calendar-scheduling?hsLang=en#substitutes)
- [Clients](https://kb.opus1.io/clients?hsLang=en#main-content)

    - [Account Managers & Dependents](https://kb.opus1.io/clients?hsLang=en#account-managers-dependents)
    - [Client Experience](https://kb.opus1.io/clients?hsLang=en#client-experience)
    - [Client Records](https://kb.opus1.io/clients?hsLang=en#client-records)
    - [Credits](https://kb.opus1.io/clients?hsLang=en#credits)
    - [Gift Cards](https://kb.opus1.io/clients?hsLang=en#gift-cards)
    - [Invoices](https://kb.opus1.io/clients?hsLang=en#invoices)
    - [Payments & Auto-Pay](https://kb.opus1.io/clients?hsLang=en#payments-auto-pay)
    - [Subscriptions](https://kb.opus1.io/clients?hsLang=en#subscriptions)
    - [Waitlist Notifications](https://kb.opus1.io/clients?hsLang=en#waitlist-notifications)
- [Communication](https://kb.opus1.io/communication?hsLang=en#main-content)

    - [Email & Notifications](https://kb.opus1.io/communication?hsLang=en#email-notifications)
    - [SMS](https://kb.opus1.io/communication?hsLang=en#sms)
    - [Voice](https://kb.opus1.io/communication?hsLang=en#voice)
- [Grow Your Music School](https://kb.opus1.io/grow-your-music-school?hsLang=en#main-content)

    - [Convert Prospects](https://kb.opus1.io/grow-your-music-school?hsLang=en#convert-prospects)
    - [Email Campaigns](https://kb.opus1.io/grow-your-music-school?hsLang=en#email-campaigns)
    - [Get Found & Capture Leads](https://kb.opus1.io/grow-your-music-school?hsLang=en#get-found-capture-leads)
    - [Reviews & Reputation](https://kb.opus1.io/grow-your-music-school?hsLang=en#reviews-reputation)
- [Payment Processing](https://kb.opus1.io/payment-processing?hsLang=en#main-content)

    - [General](https://kb.opus1.io/payment-processing?hsLang=en#general)
    - [Opus1 Payments (Stripe)](https://kb.opus1.io/payment-processing?hsLang=en#opus1-payments-stripe)
    - [Clover Connect (FiServ / Cardpointe)](https://kb.opus1.io/payment-processing?hsLang=en#clover-connect-fiserv-cardpointe)
- [Reporting](https://kb.opus1.io/reporting?hsLang=en#main-content)

    - [Attendance](https://kb.opus1.io/reporting?hsLang=en#attendance)
    - [Credits](https://kb.opus1.io/reporting?hsLang=en#credits)
    - [Invoices](https://kb.opus1.io/reporting?hsLang=en#invoices)
    - [Subscriptions](https://kb.opus1.io/reporting?hsLang=en#subscriptions)
    - [Transactions](https://kb.opus1.io/reporting?hsLang=en#transactions)
    - [Data Exports](https://kb.opus1.io/reporting?hsLang=en#data-exports)
- [Services](https://kb.opus1.io/services?hsLang=en#main-content)

    - [Appointments](https://kb.opus1.io/services?hsLang=en#appointments)
    - [Building Services](https://kb.opus1.io/services?hsLang=en#building-services)
    - [Cancellation](https://kb.opus1.io/services?hsLang=en#cancellation)
    - [Events](https://kb.opus1.io/services?hsLang=en#events)
    - [Optimization & Conversion](https://kb.opus1.io/services?hsLang=en#optimization-conversion)
    - [Payment Plans](https://kb.opus1.io/services?hsLang=en#payment-plans)
    - [Sessions](https://kb.opus1.io/services?hsLang=en#sessions)
    - [Subscription-Only](https://kb.opus1.io/services?hsLang=en#subscription-only)
- [Staff](https://kb.opus1.io/staff?hsLang=en#main-content)

    - [Availability & Self-Booking](https://kb.opus1.io/staff?hsLang=en#availability-self-booking)
    - [Calendar Sync](https://kb.opus1.io/staff?hsLang=en#calendar-sync)
    - [Onboarding & Offboarding](https://kb.opus1.io/staff?hsLang=en#onboarding-offboarding)
    - [Payroll & Compensation](https://kb.opus1.io/staff?hsLang=en#payroll-compensation)
    - [Roles & Permissions](https://kb.opus1.io/staff?hsLang=en#roles-permissions)
    - [Teacher Tools & Access](https://kb.opus1.io/staff?hsLang=en#teacher-tools-access)
    - [Time-off](https://kb.opus1.io/staff?hsLang=en#time-off)
- [Stats](https://kb.opus1.io/stats?hsLang=en#main-content)

    - [Conversions](https://kb.opus1.io/stats?hsLang=en#conversions)
    - [Client Metrics](https://kb.opus1.io/stats?hsLang=en#client-metrics)
    - [Dashboard](https://kb.opus1.io/stats?hsLang=en#dashboard)
    - [Session Enrollment](https://kb.opus1.io/stats?hsLang=en#session-enrollment)
    - [Today](https://kb.opus1.io/stats?hsLang=en#today)
    - [Utilization](https://kb.opus1.io/stats?hsLang=en#utilization)

[![Chill listening crop-3](https://kb.opus1.io/hs-fs/hubfs/Opus1-3-icon-color-2.png?width=35&height=24&name=Opus1-3-icon-color-2.png "Chill listening crop-3")](http://opus1.io)

<https://www.facebook.com/opus1.io/>

Copyright © 2025, Opus1.io