aibrevoBook a call

How to Track Med Spa Prepaid Packages in GoHighLevel (No Native Ledger)

To track med spa prepaid packages in GoHighLevel, know the gap first: it has no documented ledger for prepaid treatment packages: it cannot deduct a session per visit or show sessions remaining. You can sell the package natively and track usage with contact custom fields and workflows, a design pattern that needs audits. Gift cards, installments and a booking-system ledger are the alternatives.

Part of the guide: GoHighLevel memberships and packages for med spas

Key takeaways

  • No HighLevel help article we opened describes a feature that deducts a session per booking or shows sessions used and remaining. HighLevel's idea board holds merged requests for exactly that, which means it was requested, not shipped.
  • Gift cards are native and carry a dollar balance with an expiry date, but HighLevel's guide says they are not yet supported on Memberships, and they do not count treatments.
  • A custom-field ledger is a design pattern, not a feature: a number field for sessions used, an Appointment Status trigger on Showed, and an Update Contact Field action. It is exposed to missed status changes, reschedules and refunds.
  • Keep one system as the source of truth for the balance. If the booking system tracks credits, sync only a read-only copy to GoHighLevel for messaging.
  • Illustrative arithmetic: a $1,200 six-session package carries $200 per session, so after two visits $800 of prepaid value is unredeemed. Ask your accountant how to book it.

The problem: you need to track med spa prepaid packages. A client buys six laser sessions, comes in twice, and the front desk needs to know she has four left, in the system, without a sticky note. GoHighLevel will take her money for the package, but it will not keep the count. This post lays out your options, shows the one build that stays inside GoHighLevel (labeled as a design pattern, not a feature), and lists where it breaks. It sits under GoHighLevel memberships and packages for med spas and the setup for med spas service page.

Checked on October 15, 2026 against HighLevel’s gift card guide, calendar and payments help articles, workflow trigger and action articles and its idea board.

Can you track med spa prepaid packages natively in GoHighLevel?

No, based on the pages opened for this guide. HighLevel’s help articles on products, subscriptions, calendars, gift cards and workflow actions describe no session-credit or package-balance feature. The Appointment packages thread on HighLevel’s idea board merges many customer requests into one: auto-deduct a session per booking, show sessions used and remaining, book several dates in one purchase, and support multi-treatment spa packages. One of the merged requests names spas directly. A request on an idea board is not a release. If your account has a newer feature, use it and ignore the rest of this post.

What are your options for selling a package?

Option What it tracks Native? Best for Main risk
Gift card A dollar balance with an expiry date Yes Prepaid credit, gifting No treatment count; not yet on Memberships; one expiry for every order of a product
One-time product plus custom-field ledger Sessions used, set by a workflow Pattern you build Small package menu, staff who audit Drift from missed status changes
Recurring product with number of payments Installments, not sessions Yes, billing only Financing a package Session release is still manual
Ledger in the booking or POS system Credits per client In that tool Spas that already count credits Needs a sync to message clients
Spreadsheet through a Google Sheets action Rows per purchase Action exists Short-term stopgap Manual lookups, no client view

HighLevel’s gift card guide says a card has denominations, an expiry date set on the product that applies to every order of that product, and redeems at supported checkouts including calendars and invoices. It also says gift cards are not yet supported on Memberships. A $1,200 dollar-balance card is not the same as six laser sessions, because a price change or a different treatment changes what the balance buys.

How do you build a package ledger in GoHighLevel? (a design pattern)

This is a design pattern. It uses documented triggers and actions, but the combination is not a HighLevel feature and HighLevel does not support it as one. Build it only if your package menu is small and someone owns the audit.

  1. Define the fields. Create contact custom fields: package name, sessions purchased, sessions used, package purchase date and package expiry date. One package per contact keeps it simple. If clients can hold two packages, use a naming scheme per package or move the ledger out of GoHighLevel.
  2. Sell the package. Create a one-time product for the package price under Payments > Products and sell it by payment link, invoice or order form. See HighLevel’s product guide for the selling methods.
  3. Set the starting balance. Use the Payment Received trigger, filtered to that product and to Payment Status = Success, per HighLevel’s trigger article. Add an Update Contact Field action to set sessions purchased and an expiry date. Add a note with the purchase details so the history is readable.
  4. Deduct on attendance, not on booking. Trigger on the Appointment Status trigger with status Showed, filtered to the treatment calendar. HighLevel lists Showed as the status for a client who attends. Then update sessions used. Staff must set the status (our reminder and no-show guide covers the Update Appointment Status action), and your front desk has to decide who owns that step.
  5. Do the arithmetic somewhere you trust. The action list we opened shows Update Contact Field, Add Note, Webhook, Google Sheets and Custom Code actions, but we did not verify an action that does arithmetic for you. Test the decrement on a dummy contact. If you use Custom Code or a sheet for the math, document it so the next person can maintain it.
  6. Message from the field. Send an offer when the remaining count reaches one, and a reminder 30 days before the expiry date. The membership and package renewal advice in our automation guide explains why the trigger should read the client’s own field rather than a flat calendar date.
  7. Add a correction path. Give staff a task or a form that fixes the field and writes a note. Without it, the first wrong count becomes permanent.

Where does a hand-built package ledger break?

Event What happens to the count Fix
Client marked Showed, then the status is corrected The workflow already deducted Add an If/Else or a reverse workflow on status change, and a correction task
Client reschedules Appointment status changes; a naive trigger may fire twice Deduct only on Showed and test reschedules
Client cancels or no-shows No deduction, which may or may not match your terms Decide the policy in writing first
Refund on the package The count does not change A refund process that also edits the fields; HighLevel handles refunds under Payments > Transactions
Two treatments in one visit One status, one deduction Use a calendar per treatment or a manual task
Staff books without the calendar No trigger fires A weekly reconciliation against the booking system

Check the ledger weekly against the booking records and on any complaint. Treat the field as a convenience copy, not as a record you would defend in a dispute.

What if your booking system already tracks credits?

Let it own the balance. Boulevard, Mangomint, Zenoti and similar platforms are built around credits and visit history, and a second ledger in GoHighLevel will drift from the first. Sync only what messaging needs: sessions remaining, expiry date and a membership status flag. The sync options and their limits are covered on the booking software integration page. We have not audited each vendor’s current package features, so confirm with the vendor.

What does a package look like in numbers? (illustrative)

These figures are illustrative, not a pricing recommendation. A spa sells a six-session package at $1,200, which is $200 per session. After two visits, 2 of 6 sessions are redeemed and $800 of prepaid value is not yet redeemed (4 sessions at $200). If the client reschedules a third visit and the status is accidentally set to Showed, the ledger shows 3 remaining while the truth is 4, a $200 error the client discovers at the front desk. How to account for unredeemed prepaid value is a question for your accountant; we did not source a rule for it.

What about expiry and refunds on prepaid packages?

Both are policy and law questions first and a software question second. GoHighLevel can store an expiry date and message the client before it, and it can process a refund under Payments > Transactions where the provider supports it, as the Subscriptions page article notes for payment refunds. It does not enforce either. Write both rules into the package terms the client accepts at purchase, and have counsel check how your state treats expiring prepaid services. We did not open a state source for this page.

Who should build this?

If you want a package ledger inside GoHighLevel, scope it as a custom build with an audit step, not as a toggle. aibrevo does this as part of a med spa GoHighLevel setup and will tell you when your menu is better served by the booking system. For a scoped quote, see the GoHighLevel service page.

Founder’s note, Alpit Patel. I see package balances drift out of sync a lot. Decide which system owns the session balance first. Two systems that both deduct sessions will drift apart. If the balance has to live in GoHighLevel, my rule is to deduct only when the appointment is marked Showed, and to give staff a way to correct it. A custom-field ledger is a design pattern, and it breaks on reschedules and refunds (see the table above). I founded aibrevo in San Francisco in 2021, and through autoesta I have overseen 320+ GoHighLevel implementation projects across med spas, real estate, healthcare, dental, home services, SaaS and professional-services clients in the US, UK and UAE. About Alpit

Sources

All checked 2026-10-15.

More guides

Related reading

FAQs

Can GoHighLevel track med spa prepaid packages?

Not as a native feature, according to the help pages we opened and HighLevel's idea board, where session-pack requests are merged into one open thread. GoHighLevel can sell the package and charge for it, but it does not deduct a session per visit or display sessions remaining without a build you maintain.

How do I show sessions remaining in GoHighLevel?

Create contact custom fields for sessions purchased and sessions used, update them with a workflow when an appointment is marked Showed, and show the result in messages with the field merge value. This is a design pattern, not a HighLevel feature, and it needs regular checks against the booking system.

Can I use GoHighLevel gift cards as a med spa package?

Only as a dollar balance. Gift cards in HighLevel have denominations, a product-level expiry date and redeem at supported checkouts such as calendars and invoices. They do not count treatments, share one expiry across all orders of a product, and are not yet supported on Memberships per HighLevel's guide.

Can I sell a package in installments in GoHighLevel?

Yes, with a recurring product that has a number of payments, or with recurring invoices. HighLevel lists number of payments as an optional field on a recurring price. Test what happens at the final payment before launch, and decide separately how sessions are released while the client is still paying.

What happens to package sessions when a client reschedules or cancels in GoHighLevel?

Nothing automatic happens to a hand-built balance. HighLevel's appointment statuses change, but your custom field only changes if a workflow you built reacts. Treat a deduction as final only when the appointment is marked Showed, and give staff a way to correct the number.

Do prepaid med spa packages expire, and can I enforce that?

You can store an expiry date in a custom field and message the client before it, but GoHighLevel will not block redemption on that date. Whether and how a prepaid package may expire is set by state law and your written terms. We did not open a state source, so confirm with an attorney.

Should packages live in my booking software instead?

If the booking system already counts credits, yes. Let it own the balance, and sync status to GoHighLevel only for reminders and renewal offers. Two systems each deducting sessions will drift apart, and the client will see the wrong number in a text.

Stuck on this? Ask an engineer

Not ready for a call? Send one question about your setup. An engineer replies by email within one business day.

Want a second opinion on your setup?

A free 30-minute call with an engineer. A written read on your current setup, whether or not you hire us.