Loyalty Program
The loyalty program lets you reward students with points for attending classes, making purchases, and referring friends. Students accumulate points and redeem them for rewards you define — discounts, free classes, account credit, or custom prizes.
Enabling the program
Go to Settings → Loyalty and toggle Enable Loyalty Program on.
Configuring point rules
| Setting | Description | Default |
|---|---|---|
| Points per dollar spent | Points awarded for every $1 paid on class bookings and package purchases | 1 |
| Points per check-in | Points awarded each time a student checks in to a class | 10 |
| Points per referral | Points awarded when a referred student makes their first booking | 50 |
| Points expiry (months) | How many months before unused points expire. Leave blank for no expiry. | No expiry |
Click Save Configuration to apply your changes. The program starts awarding points immediately when enabled.
Creating rewards
In the Rewards Catalog section, click Add Reward and fill in:
| Field | Description |
|---|---|
| Name | The reward name students will see, e.g. "Free Class" or "10% Off" |
| Description | Optional details about the reward |
| Points required | How many points the student must spend to redeem |
| Reward type | One of: % Discount, Fixed Discount, Free Class, Account Credit, Custom Reward |
| Value | For discounts: the percentage or dollar amount. For credit: the amount added to the student's balance. Not used for Free Class or Custom. |
| Max redemptions | Optional limit on total redemptions. Leave blank for unlimited. |
Reward types explained
- % Discount — Gives the student a percentage off their next purchase (e.g. 10% off).
- Fixed Discount — Gives a fixed dollar amount off (e.g. $5 off).
- Free Class — Entitles the student to attend one class at no charge.
- Account Credit — Adds a dollar amount to the student's credit balance, which is automatically applied to their next booking.
- Custom Reward — A reward you fulfill manually (e.g. studio merchandise, a private session). Track redemptions in the dashboard and fulfill offline.
You can deactivate a reward at any time by toggling its Active status. Deactivated rewards can no longer be redeemed but previously redeemed rewards remain valid.
How students earn points
Points are awarded automatically:
| Action | When points are awarded |
|---|---|
| Class check-in | When studio staff checks the student in to a class |
| Payment | When a payment is completed (class booking or package purchase) |
| Referral | When a student referred by this student completes their first booking |
Points are recorded in a ledger. Each entry shows the points earned, reason, and running balance. Points from the same event are never awarded twice (idempotent).
Manual awards
Studio owners and admins can manually award points to any student via the API (POST /api/loyalty/points). This is useful for special promotions, contest prizes, or correcting errors.
How students redeem rewards
Students view their points balance and available rewards on their dashboard. To redeem:
- Student selects a reward from the available catalog.
- If they have enough points, the redemption is processed instantly.
- Points are deducted from their balance.
- For Account Credit rewards, the credit is automatically added to their balance.
- For other reward types, the redemption is marked as Pending until used.
Points expiry
If you configure a points expiry period, points that are older than the configured number of months will expire. Expired points are deducted from the student's balance automatically.
Setting a points expiry (e.g. 12 months) encourages students to stay active and redeem their rewards regularly.
Viewing loyalty data
As a studio owner
- Settings → Loyalty — Configure point rules and manage the rewards catalog.
- Student profile — View individual student point balances and transaction history.
As a student
- Dashboard — View your current points balance and available rewards.
- Redeem — Browse rewards and redeem directly from the dashboard.
API reference
| Endpoint | Method | Description |
|---|---|---|
/api/loyalty/config | GET | Get loyalty configuration |
/api/loyalty/config | PUT | Update loyalty configuration (owner/admin) |
/api/loyalty/rewards | GET | List all rewards |
/api/loyalty/rewards | POST | Create a reward (owner/admin) |
/api/loyalty/rewards/:id | PATCH | Update a reward (owner/admin) |
/api/loyalty/rewards/:id | DELETE | Delete a reward (owner/admin) |
/api/loyalty/points | GET | Get current user's points balance and history |
/api/loyalty/points | POST | Manually award points (owner/admin) |
/api/loyalty/redeem | GET | Get current user's redemption history |
/api/loyalty/redeem | POST | Redeem a reward |