Zdrovia sells three things to patients: products from your inventory, packages of sessions or credit, and the services they book. This page covers the surfaces that put those in front of a patient and price them.
| Page | Route | What it does |
|---|---|---|
| Storefront | /dashboard/storefront |
Which products are for sale online |
| Packages | /dashboard/packages |
Session bundles and gift cards |
| Promotions | /dashboard/promotions |
Codes, private links and automatic offers |
Patients see all of it in the portal shop at /portal/shop.
Storefront
A listing is a product seen from another angle: the same inventory record, marked as sellable online.
Navigate to Storefront in the sidebar. The three tiles at the top split the same list rather than counting different things — every listing is either up or held back:
| Tile | What it holds |
|---|---|
| All listings | Everything listed for online sale |
| Published | Visible in the shop right now |
| Hidden | Listed, but held back |
Listing a product
- Open the product from Inventory or from the Storefront page
- Add the listing details — shop name, description, images, online price
- Save
The listing editor is the same one Inventory uses, because a listing and a product are one record.
Publishing and hiding
Toggle Published on any row. Hiding a listing pulls it from the shop immediately without deleting anything — stock levels, past orders and the product record are untouched.
Stock
Online sales draw from the same stock as clinical dispensing. There is no separate online inventory to keep in step.
Form-gated products
Some products should not be bought without a practitioner seeing something first. A listing can require a form, and the purchase is blocked until the submission is reviewed.
When a patient submits a gating form, it appears in Form Reviews (/dashboard/form-reviews) — submissions waiting on a practitioner before a gated product can be bought.
From there, for each pending submission you can:
| Action | Effect |
|---|---|
| Approve | The patient may buy the product |
| Reject | The purchase stays blocked |
| Invalidate | An earlier approval is withdrawn |
If a patient submits a newer revision while you are looking at an older one, Zdrovia tells you which revision to act on rather than letting you act on the superseded one.
See Forms for building the form itself.
Packages
A package is prepaid value. Navigate to Packages in the sidebar.
The four tiles filter the same list they count — including withdrawn packages, so the number you press is the number you get:
| Tile | What it holds |
|---|---|
| All packages | Everything, active or not |
| Active | Currently on sale |
| Session bundles | Packages granting sessions |
| Gift cards | Packages granting a balance |
The two kinds
| Kind | Grants |
|---|---|
| Session bundle | A number of sessions of specified services |
| Gift card | A monetary balance to spend at the clinic |
A package can grant sessions, a balance, or both. Leaving a field blank grants none of that kind.
Configuring a package
| Field | Description |
|---|---|
| Kind | Session bundle or gift card |
| Name | What the patient sees |
| Description | What it includes |
| Price | What it costs |
| Sessions | How many, and of which services |
| Credit | The balance granted |
| Valid for | How many days before it expires — blank for no expiry |
| Active | Whether it is currently on sale |
Packages a patient holds
A patient’s packages appear on their profile as a card, and in their portal. Sessions are drawn down as they are used; balance is applied at checkout.
Withdrawing a package
Set it inactive rather than deleting it. Packages already sold keep working; the package simply stops being offered.
Promotions
Codes, private links, and offers that apply on their own. Navigate to Promotions in the sidebar.
Promotions come in two families, shown as tabs:
| Tab | What it is |
|---|---|
| Marketing | Discounts on what the clinic sells |
| Recommendation | Offers tied to what a clinician recommended |
How much comes off
| Kind | Effect |
|---|---|
| Percentage | A share off whatever the offer covers |
| Fixed amount | Off the matched subtotal, once |
| Per unit | Off every unit the offer covers |
How the shopper gets it
| Method | How it reaches a cart |
|---|---|
| They present a code | The shopper types it at checkout. Shareable — and so is the discount |
| Applies on its own | Every qualifying cart gets it, with nothing to present |
| Private link only | Reached by a signed link you mint from the offer’s actions. It applies to nobody’s cart otherwise |
Building a promotion
The dialog is five sections:
| Section | What you set |
|---|---|
| The offer | Name, and how much comes off |
| How shoppers get it | Code, automatic, or private link |
| What it applies to | Which products, packages or services it covers |
| When it runs | Start and end |
| Limits | Caps on redemption |
Private links
Link to this offer mints a signed link for an existing promotion. For a code-based promotion the link is a second way in and the code keeps working; for a link-only promotion it is the only way in.
Private link creates the offer and its signed link together, in one step — for a one-off offer you want to send to a single person.
Withdrawing a promotion kills its links. A link names the promotion by id, so it survives any edit to the offer’s terms.
Withdrawing
Promotions are withdrawn rather than deleted, so a cart that already used one still reconciles.
Getting paid
Online sales settle through your payment account. Deposits, checkout, refunds and payouts are covered in Payments.
Tips
- Publish a small shop first. A shelf of five things a clinician actually recommends outsells a catalogue.
- Use per unit discounts for consumables and fixed amount for a one-off gesture — a percentage off a large basket is rarely what you meant.
- Prefer a private link over a code for anything you don’t want forwarded. A code is shareable by design.
- Give gift cards an expiry only if your provincial rules allow it. Leaving Valid for blank means no expiry.
- Gate the products that clinically need gating, not the ones you want to talk about first — every gated product adds a review to someone’s queue.
