Stored Value and Custom Websites Are Now Available to Everyone

Every merchant can now turn on customer balances and a custom website, and a time your booking page shows as available is a time that actually books.
Stored Value Is Open to Every Merchant
Stored Value is out of early access. Turn it on from Add-ons → Stored Value & Customer Balances, name the balance your customers will see, and launch your program. From there customers can preload funds and pay from their balance at checkout.
The Products & Add-ons page showing Custom Website and Stored Value & Customer Balances available to activate
Naming the balance is the one decision worth thinking about, so there are quick-pick suggestions like "Store Credit" and "[Your Business] Cash" to start from, whether you're setting it up for the first time or renaming it later.
Custom Websites, Out of Beta
The Custom Website add-on is now available to every merchant. Turn it on from Add-ons →
Website and you get a branded storefront at <your-handle>.decal.site.
Nothing switches on by itself. The add-on stays off until you enable it, and merchants already using it are unaffected. Custom domain support for your Decal Site is on the roadmap and will roll out to select merchants in private beta soon.
Booking Availability Comes From One Place
A time your booking page shows as available is now a time that actually books. The times it lists, the times the dashboard offers when you book someone in by hand, and the check that runs at Add to cart and again just before payment are all the same calculation. They used to be separate, and separate implementations can disagree, which is how a class could show seats free and then get refused at checkout.
One behavior follows from that merge. An offering at a location with no business hours configured is now closed everywhere. It already showed no times on your booking page, and it now refuses the booking too, rather than accepting any time of day.
The booking page's date list and its dimmed-day prediction come from the same place as everything else now. Which dates are offered hasn't changed, but the two can no longer drift apart, which would have looked like a date quietly missing from the picker.
Your Notice and Advance Windows Apply Everywhere
Your minimum booking notice and maximum advance window now hold wherever a booking can be made, not only over the times your booking page lists. A customer who left the page open until their chosen time fell inside your notice window used to be able to add it to their cart and only hear about it at payment. They're told at Add to cart now, in words that point at the fix: pick a later time.
The advance window was only ever applied to what the booking page showed, so a booking made any other way could land years out. It now holds at add-to-cart, at checkout, and on a reschedule.
Booking from the dashboard is unaffected. Both limits are policy for your customers, so booking someone in for tomorrow morning, or a year out, still works.
Revenue Stops Counting Balance Twice
Your revenue figures now reflect money you actually collected. A customer's balance load was being counted as revenue when they bought it and counted again each time they spent it down, which overstated revenue for any merchant running a stored value program. The revenue chart matches the card now.
Average order value measures what customers bought per order and no longer includes balance loads, which are deposits rather than purchases. Total orders and total customers are unchanged, since a load is still a real order from a real customer. Each card names which basis it's on, so it's clear why average order value isn't revenue divided by orders.
The figures are computed from your order history on every page load, so corrected numbers appear retroactively across every period, trend comparisons included.
Minor Improvements
- Old
decalpassport.comlinks land where they should. Apex,www, and every merchant subdomain redirect permanently to the matching page ondecal.site, keeping the full path and query, so bookmarks, printed QR codes, shared links, and search results all still work. - Tables that show every row stopped after the tenth. Website Pages, Website Domains, and your saved payout wallets among them had no page controls and no way to see the rest. They show everything they hold now.
- Site metadata errors appear under the field they belong to instead of in a toast, and Save stays disabled until you've actually changed something.
- Records report a version over the API and in webhooks. Customers, orders, and locations now carry a counter that goes up only when the record actually changed, so if two webhook deliveries arrive out of order you can tell which describes the newer state. A re-sync that rewrites a record with identical data reports the same version rather than looking like a fresh edit.
- A balance program left unnamed no longer produces a nameless line on a receipt. Programs now require a name, and any that were missing one are renamed to "[your business] Balance".