WHY WE BUILT THIS
Selling retail meant bending the platform around a workflow it was never built for.
Retail makes up a real share of your revenue, but until now there was no clean way to capture it. To sell a bag of food, your team had to book a daycare reservation and attach a blank pet perk — a workaround that muddied your records and made the numbers hard to trust.
So we made Retail a primary service in its own right. Configure the items you sell, ring up a sale in a few clicks, add retail to an existing visit, and see every transaction land cleanly in reporting. No more pet perk gymnastics — just sell, collect, and report.
WHAT IT MEANS FOR YOU
Sell physical goods, properly. Retail is now its own service type — transactional, not pet-based. It doesn’t consume a resource or occupy a slot, so selling a product no longer means faking a reservation.
Build your own catalog. Configure inventory, group offers into categories, and set per-item pricing yourself — all from the UI, so you can keep up as your shelf changes.
One Visit, one checkout. Add retail to an active visit or sell it standalone. When dates overlap, it groups into the same payment screen so your team collects everything together.
Clean numbers. Retail flows into every existing report as its own service type, plus a dedicated retail view — so you can see what’s selling without untangling it from visits.
HOW IT WORKS
Retail follows a simple data model: Inventory → Offer. Inventory items are the building blocks; an offer packages one or more of them at a price your team can sell. Set up the building blocks first, then sell.
1. Configure your inventory
Go to Configuration Settings → Retail → Inventory and click Add New.
Each item needs a Display Name and an Item Cost (your facility’s cost, used to gauge margin when you build an offer). Set the item Active to make it sellable; an Inactive item makes any offer that contains it unsellable. Items are listed alphabetically and editable from the same page — search by name to find one fast.
2. Create your categories
Categories control how offers sort and separate inside the selling flow. Create these before your offers so each one has a home. Reorder groups with the up and down arrows — the topmost group appears first in the flow.
3. Build your offers
Go to Configuration Settings → Retail → Offers and click New Offer.
Required fields: Display Name, Offer Group, Description (shown as a tooltip when selling), Price, and the Inventory items included. You can also set a Custom Tax Rate to override the base retail rate per offer. All pricing is set as a rate per item — there’s no flat-fee or tiered model. Turn an offer Inactive and it drops out of the selling flow but stays visible (and filterable) on the offers page.
4. Booking settings
Retail booking settings carry a Tax Rate and a payment configuration. Standalone retail requires full payment upfront — cash, card, and “other” all collect in full, with no partial payments. Pay with Wallet is the one exception: a partial wallet payment can be topped off with a second method to cover the balance.
5. Selling retail
Selling mirrors the package flow: find the customer, open the booking drawer, and select offers. The drawer sorts offers by category and shows only Active offers. There’s no occupancy check, since retail consumes no resource.
Add multiple offers to a single invoice, then move to the payments page to collect. Retail is admin-initiated only — pet owners can’t buy on their own. Invoices can be edited even after money is collected, and membership discounts or package credits can be applied at the line-item level.
6. Upselling retail on a visit (in-stay)
Retail can be added to any active visit, on days that fall within the reservation’s date range. Added this way, it appears on the visit side panel under “Visit Includes” with a linked invoice on the payments page. Need to sell outside the reservation’s dates? Book a standalone retail offer instead. If the primary reservation is later cancelled, the retail purchase becomes a standalone transaction.
A FEW THINGS TO KNOW
Retail is admin-initiated. Pet owners cannot purchase retail through their portal; this V1 is built for brick-and-mortar operations.
“Sold” is expected with retail upsell before payment is collected. Non-visit invoices (retail, memberships, packages, wallet) read as Sold once created and confirmed — money still needs to be collected with the rest of the order.
Upsell vs. standalone is date-driven. Retail is allowed to be added into a visit’s order only within the dates of that reservation; outside that range, sell it standalone.
Returns: for a full return, refund the payment and cancel the invoice (you can cancel after the sale date). For a single item, edit the invoice to remove it and refund the difference.
Reporting lives in two places. Retail appears across all existing reports as a service type, plus a dedicated retail report showing qty sold per offer over a period. It does not get its own line on the main dashboard.
No inventory tracking in V1. Stock counts, low-stock alerts, and snapshotting aren’t available yet — Stock management is scoped for V2.
❗ Setup required before you sell ❗
Unlike some releases, Retail needs configuration before it’s usable — build your inventory, create your offer groups, then your offers, and set your tax and payment options. Once that’s in place, retail is ready to sell from the booking drawer. Reach out to our support team any time to get access to the retail module.
