Why generic loyalty platforms miss it.
A dermatology practice can't run loyalty the way a retail-style med spa can. Punch-card aesthetics undermine the clinical trust patients are paying for. The platform has to feel premium and quiet, not loud and gamified. The same patient who trusts you with a biopsy result will quietly stop opening messages that read like a car-wash promotion. Every touchpoint — push copy, reward names, app design — has to hold the register of your exam rooms.
Patient records live in an EHR (or two). Loyalty platforms that demand duplicate data entry or that fight the EHR for primary-record status get abandoned by clinical staff within weeks. The loyalty layer has to be additive, not territorial. Your MAs and front desk already re-key enough between systems. If earning points means a second lookup in a second tab while a patient waits at checkout, the program dies quietly at the desk.
A patient seeing the same provider for a mole check and a Botox touch-up is one patient with two contexts. The loyalty program should engage the cosmetic context without surfacing in the medical one — and definitely without HIPAA gray areas. Nobody wants a filler promotion landing the same afternoon as a pathology follow-up. That separation has to be structural, built into how the platform scopes members, not a checkbox staff have to remember under pressure.
Existing features, re-pointed at your problem.
The default Loyalty Flow patient app is closer to a luxury aesthetics brand than a retail loyalty app. Serif headlines, restrained color, no gamification by default. Configure the App Builder to dial it further toward your clinical brand if you want. Serif type, muted palette, no confetti — the app should look like it belongs to the same practice that reads the dermatoscope.
Tag patients as cosmetic, medical, or both. Loyalty messaging — drops, rewards, push — scopes to the cosmetic side only. The medical record stays in your EHR; the loyalty record stays in Loyalty Flow. A patient who is both gets cosmetic messaging only; their medical context never enters the loyalty layer at all.
Loyalty Flow doesn't claim to be the patient record of truth. We hold loyalty data — members, points, transactions tied to cosmetic visits. Your EHR holds the medical record. CSV exports and API access mean the two systems play nicely. And if you ever leave, your member list, balances, and history export cleanly — no hostage data.
Many dermatology practices sell physician-grade product on subscription. The membership + web checkout flow handles recurring product memberships natively — gifting, pausing, restarting — on the same surface where members track points. Physician-grade skincare is the most natural recurring line in dermatology, and the platform treats it like the subscription business it actually is.
The POS handles cosmetic-side charging through Stripe or Payroc. Medical billing stays in your existing system. Patients get one receipt for cosmetic charges; medical charges flow your usual route.
Percentage-of-revenue platforms commonly take 5-15% of the gross that moves through them — on a mixed medical-cosmetic practice, that's a tax aimed squarely at the cosmetic revenue you're trying to grow. We wrote up why Loyalty Flow charges a flat fee instead, and why that matters more in dermatology than almost anywhere else.
Founding clinics in this vertical will help us define what stays in Loyalty Flow vs. what stays in the EHR. We don't want to be everything — we want to be the right layer.
I run a med spa, not a dermatology practice, so take this for what transfers. At Prosper we drew one line early: Loyalty Flow never touches the chart. No diagnoses, no photos, no treatment notes — just members, points, and transactions. The platform stores no PHI by design, and a BAA is available on request rather than being a crutch we lean on. The ledger knows a patient bought something on a Tuesday; it doesn't know why. For a practice where the medical record carries real regulatory weight, that boundary isn't a limitation — it's the whole point. — Robbie