Appearance
Changelog
All notable updates, new features, and improvements to BridalOp.
v1.11 — September 14, 2026
Staff Scheduling — new module
- Who's working, and when. A new Schedule under Staff. Set the days somebody normally works on their own page — Staff → edit someone → Usual week — then Build from patterns turns those into real shifts for as many weeks ahead as you like, in one press. See Staff Scheduling.
- A day can hold more than one shift. A ten-till-two and a four-till-eight on the same Saturday is a normal thing to work, and the schedule can say it.
- Draft until you publish. Move a half-built week around all afternoon without the floor watching it change, then publish when it's ready. Your team sees their own week, and their hours, under My Schedule.
- Building again never undoes your edits. Move somebody's Monday to a late and rebuild, and you keep the late — you don't get a second Monday shift back at the original time.
- Booking that counts people, not rooms. Three fitting rooms and two people in shouldn't mean three appointments at once. Switched on for your store, how many can run at once becomes the smaller of your rooms and the people actually working — and a tailor in the back never makes a fitting slot bookable. Off until you ask for it, and ignored on any day with no published schedule, so a forgotten week can't close your calendar.
Bri can make changes now
- Ask her to do things, not just look them up. "Schedule Brittany Ward Tuesday from 9 to 3." "Block Tuesday the 15th from 4pm to 6pm." "Note on Sarah's file that she's allergic to tulle." "Add a new customer, Jane Doe, 555-1234." "Set up 20% off called Spring Sale." "Draft an invoice for Sarah, $450 for alterations." See Ask Bri.
- She always asks first. Bri tells you exactly what she's about to do — the full date, the full name, the amount — and waits for you to say yes. Read it before you agree; "Tuesday" is two different dates, and that's where you catch the wrong one.
- Where she stops. Discounts are created switched off, so nobody can use one until you turn it on. Invoices are drafts and are never sent. Two people with the same name stops her rather than making her guess. A likely duplicate customer stops her too. And she works with your own permissions — if you can't edit the schedule in BridalOp, asking Bri won't change that.
- She'll never take a payment, issue a refund, cancel or reschedule on a customer, email or text anybody, delete anything, or change your settings. Every change she does make is recorded in your Activity Feed against whoever asked for it.
- "What can you do for me?" is now the first suggested question, which is the quickest way to see the list.
Tux Rentals
- Scan the box, both ways. Scan the box on a party: scan each garment as you unpack it, then again as it goes into the return box. Before you seal it, the screen tells you what isn't in there. Your vendor rebills weekly for what they don't get back, and the only moment anybody would notice a missing vest is while the box is still open. See Tux Rentals.
- Both passes record the actual barcode, so when a vendor sends a garment under another garment's number you can show you returned exactly what you were sent.
- Package pricing. One look, several prices, depending on how much of it he takes — complete outfit, coat and trousers, coat only. Pick which pieces each price covers, then set each man's price on his own row. Anything beyond it is charged on top.
- Sizes that fit the garment. A coat is 46R and fits one box; trousers are a waist and an outseam, a shirt is a neck and a sleeve, shoes are a size and a width. The right fields now appear for whatever piece you're on.
- Belly added to the men's measurements — taken over the stomach at its fullest rather than at the waist, because it's what decides a portly cut.
Point of Sale
- A custom item. Not everything you sell is in Products. + Custom item at the top of the product grid takes a description, a price, a quantity and whether it's taxable, and puts it straight on the sale — without creating anything in your catalog. For the jewelry case, an alteration charge, or old stock from a vendor who no longer exists. See Point of Sale.
Inventory
- The Price column shows the selling price. It used to show what you paid, under a heading that said Price — which is a quiet way for somebody to quote your cost to a bride.
- Cost is now a permission. It appears as its own column beside the selling price, but only for people with products.cost — owners, managers and accountants by default. It's removed before the page loads rather than hidden on screen, so it isn't in the page source either, and a customer standing beside the screen can't read it. Take the permission off a role under Settings → Roles & Permissions to hide it from them.
Support
- Attachments open instead of downloading. Images open in a viewer you can page through, PDFs open in a new tab, and everything else still downloads. No more round trip through your downloads folder to read a screenshot.
v1.10 — September 11, 2026
Commissions
- Pay on what somebody sells in a month, not just on what they sold. A new Monthly tiers plan on Commission Rules: set the totals that unlock each rate, and the month's total picks one rate that applies to the whole month. $30,000 at a 5% tier earns 5% of all $30,000, not 5% of the part above the threshold. Tiers can be shared across the team or set per person, and there's no limit on how many you have.
- The cliff is shown to you as you set it up, in your own numbers — "at $24,999 this pays $499.98, at $25,000 it pays $1,250". Threshold pay jumps by design, and for a lot of shops that jump is the point; it just shouldn't be a surprise on a payslip.
- Each person is on one plan or the other. Per-line rates and monthly tiers answer different questions, so somebody moved to tiers earns nothing per line and all of their commission comes from the monthly settlement. Their old per-line rules are hidden rather than deleted — move them back and everything is as it was.
- A new Commission Settlements screen for closing a month: sales, refunds, the rate each person earned, and how far anyone is from their next tier. Settle one person or everybody at once. A month that hasn't finished can't be settled, because its tier isn't decided until it is, and a settled month stops recalculating — that figure is what went to payroll.
- You choose what a refund does to tiered commission: take it off the month it was refunded in (the default), off the month it was sold in, or leave commission alone. The default never reaches back into a month you've already paid.
- Nothing about existing commission changes. Everyone stays on per-line rates until you move them.
Tux Rentals — new module
- Suit and tux hire, for the party rather than the person. A new module — off unless you switch it on under Modules — that tracks a whole wedding or prom party: who's in it, what each man is wearing, what he measures, when it's due back and what he owes. Built for the ordinary case where your supplier ships the garments and takes them back, not for hiring out a rack you own yourself. See Tux Rentals.
- A board that tells you what today is, not a list. Overdue, deadlines this week, arriving, collecting, due back — and the panel that matters most: parties with a vendor deadline coming and people still to measure. Three weeks out with six of nine measured and nobody noticing is the failure this module exists to catch.
- One link the couple shares with everyone renting. They text it to the party; each person picks their name, puts their own measurements in, and your board fills up without a phone call. The shared page shows only the look, the date and who's done what — measurements, contact details and money sit behind each person's own private page. Anything entered this way is flagged as self-reported, because those are the numbers that produce a coat that doesn't fit on the Friday.
- Looks rather than items. A tux is a composition — coat, trousers, shirt, vest, tie — so you build the look once and dress the party from it. Change a look afterwards and nobody is quietly rewritten; you get a button that re-applies it and tells you who it couldn't touch.
- Measurements are versioned, never overwritten. Re-measuring keeps the old set, because a boy measured in February is a different size in June and "did we measure wrong, or did he grow?" is a question an overwrite destroys the evidence for. Men's and boys' field sets, and every set records where the numbers came from.
- Three sizes, not one — what was measured, what BridalOp suggested, and what you actually ordered. The suggestion shows its working, your supplier's own size chart wins over the generic rule, and ordering something different asks you to say why. When a coat turns up three sizes too big, that's what answers which number was wrong.
- A return checklist with a price on every line. The vest, the tie and the studs are what go missing, and your supplier bills you for each one. Everything is ticked by default and you untick what didn't come back. Damage only proposes a charge when the person didn't take the damage waiver.
- Nothing ever charges a card on its own. A late return is flagged with the amount worked out — from a return date that already accounts for days you're closed — and somebody presses the button. Recording what's missing and billing for it are separate permissions.
- Due dates don't assume Saturdays. Pickup moves back and returns move forward to a day you're actually open, from your booking hours and holiday closures. A Thursday wedding comes back Friday; a Saturday one comes back after the days you're shut.
- Prom parties run on the same spine, so the revenue report splits weddings against prom. It stays independent of the Prom module — dress exclusivity is about gowns, and nobody minds two boys in the same tux.
- Switching it on also gives you three appointment types, a rental agreement template to edit, a Tux Rentals report, and eleven automation triggers including one that warns you before a party misses its deadline. See Setting Up Tux Rentals.
v1.9 — September 10, 2026
Appointments
- An extra that actually holds the shop. Tick Takes the whole shop on an appointment extra and it stops being a charge and starts being a rule: choosing it only offers times when nothing else at the location is booked, and once it's on the books that time stops being offered to anyone else, however many fitting rooms are free. An extra called "Private Appointment" used to charge for privacy without delivering it — a second customer could book the room next door. It's a setting on the extra rather than a fixed feature, so a trunk show can use the same thing. If you deactivated a fitting room to fake this, turn it back on. See Takes the whole shop.
- You choose when the booking page asks about extras — before she picks a date, or after. Asking first is what lets the calendar only ever offer times that can genuinely be private, rather than letting her pick 11:00 and telling her two steps later that it won't work. The default is unchanged, so no existing booking page reorders itself. See When to ask about extras.
- Your staff aren't stopped by any of it. They still see those times, can book into them, and get a warning telling them what they've done instead of a locked door.
Automations
- Remind a bride a set number of days before her appointment. A new Appointment approaching trigger with a Days before appointment box — 2, or 7, or 1. Worth knowing it's checked once each morning rather than to the hour, and that BridalOp already sends 48-hour and 24-hour reminders on its own; this is for when you want your own wording, a text instead of an email, or a window the built-in ones don't cover. See Reminding someone before their appointment.
Products
- Variant photos can be added several at a time, the same as the main product photos. The variant slots took them one at a time, which was an oversight rather than a decision.
- Drag any photo into the order you want, on products and variants alike — the handle appears top-left when you hover. The first photo is the one the rest of BridalOp uses: the products list, the POS tile, invoice and order lines, and your lookbook. It now carries a Main badge so that relationship isn't invisible. Worth knowing a bulk upload arrives in the file picker's sort order rather than the order you clicked, so it usually still needs a drag. See Product Images.
Imports
A spreadsheet that isn't UTF-8 no longer kills the whole import. Excel routinely saves "CSV" in an older character set, and one accented character used to fail the entire upload with a message about JSON that told you nothing — 692 rows lost on a single file. Those files now import, and names like La Mariée keep their accent instead of being mangled.
A missing location column is no longer an error. Stock falls back to your primary location. This was by some distance the largest single cause of rejected rows. A misspelled location name only errors if you have more than one location — with a single boutique there's nowhere else it could have meant.
Product class accepts what people actually write — "Bridal Gown", "Shoes", "Accessories", "Prom & Homecoming", "MOB", "Evening Wear", "Tuxedos". Only the exact singular words were accepted before, which cost hundreds of rows.
Purchase price falls back to your cost column when the purchase-price column is blank, which is what most spreadsheets actually carry. See Products & Inventory Import.
Send a different email depending on what someone bought. Sale completed and Special order placed now carry the product type, so an automation can be conditioned on it — one email when a gown sells, another for a mother-of-the-bride dress. A sale holds a list, since one order is routinely a gown, a bridesmaid dress and a pair of shoes, so the operator is contains and the builder switches to it for you. Pair it with a step's wait time to send days after the sale rather than immediately. See Only when they bought a particular kind of thing.
Settings
Booking settings is now seven tabs instead of one long scroll. General, Booking Page, Payments & Fees, Appointment Types, Questions, Fitting Rooms and Extras. Seventeen sections on a single page meant everything you wanted was below the fold. Categories and appointment types share a tab, since a type belongs to a category and nobody sets up one without the other, and checklist templates sit with them because a template is assigned to a type. The tab you're on is remembered in the address bar, so saving something leaves you where you were — and on a phone the tab strip swipes sideways rather than wrapping. See Page Layout.
The Add/Edit Appointment Type form is two columns and much wider. Seventeen fields stacked in one narrow box meant scrolling past the photo picker to reach the price. What the appointment is sits on the left, how it behaves on the right, and the day and date restrictions run full width underneath.
Fixed
- Every booking on every boutique failed for three and a half hours on 8 September. The policy tick shipped that afternoon read the shop's record before it had been looked up, which killed the booking before the customer, the appointment, the confirmation email or the calendar sync. It caught shops with no policies published as well, because the lookup ran before the check that decides whether policies apply. Ten bookings hit it before a shop told us.
- The Suggested Add-Ons picker looked broken because you couldn't see it. The searchable product list was being drawn underneath the pop-up window it belongs to, so clicking the field appeared to do nothing at all. The same picker sits in the Add Line window on a purchase order and was dead there too.
- Booking settings kept your place. Saving a custom booking question threw the page back to the top, so working down a list meant scrolling back after every edit. Adding, editing or deleting a fitting room did it too, as did deleting an appointment type.
- Recording a payment on an invoice would have failed after taking the money — charging the card, marking the invoice paid, then dying before the receipt. It never fired on a live boutique; it was found by running static analysis across the app after the booking fault above, and fixed before anyone met it.
v1.8 — September 8, 2026
Point of Sale
- Come back to a sale you only took part of. A deposit now and the balance later no longer needs a layaway. Take what she's paying, let her go, and the order sits Active with the balance showing — reopen it from Orders and the button carries the amount still owed. It previously refused to reopen and quietly started a fresh cart instead, which stranded sales. See Orders.
- An order that still owes money can no longer be marked complete. Completing one books its whole total as revenue, so doing it with a balance outstanding reported a sale that never fully arrived, left the gown in stock and skipped the commission. It now points you at the till instead.
- Take a payment as a percentage. "50% down" is two keystrokes rather than a sum at the counter — type 50, press %, and it shows what that comes to before you commit. Works on layaway down payments and special-order deposits too. See POS.
Card Readers
- A Square charge can't be taken twice by accident. Cancelling can't recall a payment the customer has already tapped for — no system can — but the screen used to say "cancelled" anyway, so the sale was rung again and she paid twice. It now tells you the card was charged and shows the receipt. And before arming a Square reader, BridalOp checks whether that sale already has a payment it never recorded, and records that instead of charging again. A refunded charge is never pulled back in. See Card Readers.
- Square Register is not compatible, and we've stopped saying it is. Square support their terminal APIs on Square Terminal only, so a Register answers the pairing code with "Unsupported Square Product". It was listed as supported hardware in the app, the docs and on our website. Use a Square Terminal.
Appointments
- A separate no-show fee, charged when your team marks the appointment as a no-show — not on a timer, and not without somebody deciding it was one. See Cancellation & No-Show Fees.
- Two tiers on cancellation fees, so cancelling inside your notice window and cancelling a fortnight out aren't the same money. The early tier defaults to nothing, so an untouched account keeps charging exactly what it charged before.
- The fee box offers the right amount. Open a cancelled or no-show appointment and it suggests what your own policy calls for as a button. It doesn't charge it for you — your team know when it was your fault rather than hers.
Special Orders
- A deposit rule you set once. Settings > Products holds the percentage you take up front and how long after arrival the balance falls due. The till fills the deposit in; marking a dress Received sets the due date. See Special Order Deposits.
- The list shows what's owed. A Balance column with the due date under it, an Owes money filter, and a line at the top telling you how many dresses are sitting unpaid and what that adds up to — for the gown that arrives, goes on the rack while the bride waits to try it on, and is handed over with the balance never collected.
- A reminder for a balance that's gone past its date, as a new automation trigger. Fires once, on the day it tips over.
Automations
- Five triggers that were offered but never fired now do. Special order arrived, Layaway overdue, Quote sent, Contract sent, and Customer field changed were all selectable in the builder and silently did nothing — an automation built on one waited forever with no error. If you built one and wondered why it never ran, that's why, and it will run now. See Automations.
- Special order arrived now carries the balance still owed, so the message can name the amount rather than just the news that the dress landed.
- Preview an email or text before anyone gets it. Every email and text step in the builder has a Preview button — the message made up with a sample bride, in your branded layout, sending nothing. A test run was the only way to see one of these before, and a test run genuinely sends. It also names any merge tag that came out blank, which is how "Hi ," reaches a customer, and shows what a long text splits into. See Preview.
Policies
- The booking page asks for a tick now, and keeps the answer. It used to say "By booking, you agree to our store policies" in small print and record nothing at all. A shop charging $100 for a late cancellation should be able to show she was asked — so it's a checkbox she has to tick, and ticking it stores the time, her IP, her browser and a snapshot of the policy exactly as it read that day. Edit the policy next spring and the record still shows what she agreed to. Look under View Signatures on any policy. Gift card purchases keep the passive line. See Policies.
Vendors
- A Files tab on the vendor profile. The designer's own paperwork — custom measurement forms, order forms, price lists, terms — kept where anyone on the floor can find and print it, instead of in whoever's inbox it arrived in. Grouped by category, up to 10 MB a file, and downloads are served through BridalOp rather than a public link. See Vendor Files.
Imports
- Bulk import for vendor add-ons — rush fees, size changes, extra length, shipping. One row is one add-on, and filling in the Product Category column applies it to every dress from that vendor in that category automatically, which is usually the whole job. See Import.
Dashboard & Reports
- Sales counted after discounts. The sales-goal card summed order subtotals, which are line totals before any discount — so a $3,000 gown sold at $2,700 counted the full $3,000 towards goal while the sales report showed $2,700. Both figures now agree with Reports > Sales Summary. Your progress against goal may read slightly lower if you discount.
- "Today's Revenue" is now "Taken Today", and the goal card says "Sold This Month". They measure different things — money as it arrives, against sales that have finished — and calling both of them revenue is why a deposit could show on one and not the other. See Dashboard.
Fixed
- A booking question that wouldn't save, and wouldn't say why. Adding a checkbox to your booking form could be refused — a label over 255 characters is the easy way to hit it — and the modal showed no message at all, just sat there looking ignored. The refusal now appears under the field it belongs to.
- Booking alerts lost when a customer record had gone. Four notices — three new bookings and a cancellation — failed outright rather than sending without the missing name. Boutiques were never told. They now fall back to the name the booking was made under.
- Long texts were quoted at double the credits. Bulk SMS added up recipients times message segments, so a 200-character message quoted two credits a head and could refuse to send on a balance that covered it fine. BridalOp only ever charged one credit per message. The page now says so, and notes where the carrier splits the text.
- Every dropdown in the app now looks the same. A handful — the vendor Files category among them — were still rendering with the browser's own arrow.
- Emails missing from a customer's Communications tab. Anything BridalOp sent in the background — appointment confirmations among them — was recorded without which boutique it belonged to, so it reached the customer and then never appeared on her timeline. Sent, delivered, no trace. Fixed, and the existing history has been repaired.
v1.7 — September 1, 2026
Appointments
- Offer codes for appointment fees. Set up codes your team can apply while booking someone — a percentage or a flat amount off the fee. Staff only: they never appear on your booking page and a customer can't type one in, so a rate you offer a warm lead on the phone stays off the internet. Codes can expire, can be limited to a number of uses, and a code that can't be used is refused with the reason rather than quietly ignored. See Booking Settings.
- An Appointment Offers report showing which codes were used, what they cost you, and — the part that matters — how many of those appointments were actually kept. An offer that books ten and loses seven is worse than one that books three and keeps them. See Reports.
- Choose how far your appointment buffer reaches. The gap has always been kept inside a fitting room, so with two rooms a second appointment could start the moment another finished. You can now apply it between every appointment instead, whichever rooms they're in — for when the buffer is really about your consultants. Two appointments running alongside each other are still fine; it's the handover with no gap that's stopped. See Booking Settings.
Google Calendar
- Repointing your calendar no longer strands what's already synced. Changing which calendar BridalOp writes to used to leave every existing appointment in the old one, and quietly break updates to them. Your upcoming appointments are now copied across when you save, and the Synced indicator tells the truth about which calendar they're actually in.
- Only calendars you can write to are offered. A calendar shared with you as view-only could be selected as your sync target, after which every update failed silently. Read-only calendars remain available for importing blocked time, which is all they could ever do.
Staff
- Deactivating a staff member now actually revokes their access. It previously removed them from lists but left their password working. If someone has left your boutique and was never deactivated, doing it now is what ends their access. See Staff.
- Your staff list shows current staff by default. All and Inactive are a click away, and nobody is deleted — their sales, commission and hours stay attached.
- Switch between boutiques on your phone. If you own two, the switcher only existed in the sidebar, which is hidden on mobile. It's now at the top of the More sheet.
Reports
- Totals on report tables, on Item Sales and Category Sales. The total follows the search box, and averages and margins are recalculated rather than summed.
- Close Ratio can count something other than a gown, so an evening-wear appointment that closes on a formal is no longer recorded as a miss.
Purchasing
- A dashboard card for orders nobody is looking at — taken from a customer but never placed, sent to a vendor who never came back, or confirmed with no expected date. Owners and managers only, and absent entirely when there's nothing on it.
v1.6 — August 31, 2026
Prom Module
- No two girls from the same school in the same dress — tracked, not remembered. A new opt-in module that registers every prom gown against the school it was sold to, badges dresses a girl can't have in the POS and on the product page, and warns your team at the till if someone tries to sell a clash. Switch it on under Settings > Modules. See Prom Module.
- Dresses register themselves when they sell. No list to keep. A full refund gives the dress back automatically; a partial refund deliberately doesn't, since that's usually an alteration coming off rather than the gown going back.
- You decide how hard it pushes back. Warn, block, or record silently — plus who may override and whether they have to say why. Every override is recorded with its reason, so if the promise is being bent you can see it. See Prom Settings.
- A page girls can check for themselves. Choose a school, search a dress, get an answer — and a suggestion of what is still free at her school when it's taken. It never says who has a dress. Link it from your own website as proof the exclusivity is real.
- Holds, off by default, for a girl who has decided but hasn't paid. Every hold gets an end date so a forgotten one can't block a school for a season.
- Prom appointments ask for her school when she books, which is the only chance to get it before she's standing in your shop.
- A Prom Season report — sales by school, most spoken-for styles, and every override with its reason.
Appointments
- Choose how far your appointment buffer reaches. It has always been kept inside a fitting room, so with two rooms a second appointment could start the moment another finished. You can now apply it between every appointment instead, whichever rooms they're in — for when the buffer is really about your consultants rather than the rooms. Two appointments running alongside each other are still fine; it's the handover with no gap that's stopped. See Booking Settings.
Staff
- Deactivating a staff member now actually revokes their access. It previously removed them from lists but left their password working. Anyone deactivated can no longer sign in, and is signed out on their next click if they're already in. If someone has left your boutique and was never deactivated, doing it now is what ends their access. See Staff.
- Your staff list shows current staff by default, so people who have left drop out of view. All and Inactive are a click away. Nobody is deleted — their sales, commission and hours stay attached, so past reports keep adding up.
- Switch between boutiques on your phone. If you own two, the switcher only ever existed in the sidebar, which is hidden on mobile — so on a phone you were stuck in whichever one you were in. It's now at the top of the More sheet.
Reports
- Totals on report tables. Item Sales and Category Sales now add up across the bottom, and the total follows the search box — filter to one designer and the total is that designer's. Average price and margin are recalculated rather than summed, because averaging a column of averages gives a number that looks right and isn't.
- Close Ratio can count something other than a gown. It only ever counted bridal gowns, so an evening-wear appointment that ended in a formal purchase read as a miss. Tick whichever kinds of product should count as closing an appointment. Existing figures are unchanged unless you change them.
Purchasing
- A dashboard card for orders nobody is looking at. A dress taken from a bride and never actually ordered, a purchase order sent to a vendor who never came back, or one confirmed with no expected date. Owners and managers only, and absent entirely when there's nothing on it. Waiting periods are yours to set under Products & Inventory.
Fixes
- The cancellation fee switch explains itself. It refuses to turn on without a fee amount — sensible, since arming an automatic charge with no amount would charge your clients nothing. But it said nothing and simply sprang back, which looked broken. It now tells you what it needs.
- Customer profiles no longer scroll sideways. With enough tabs the page stretched instead of the tabs scrolling, pushing the right-hand column off screen.
v1.5 — August 23, 2026
Online Store
- The BridalOp plugin is now on WordPress.org. Install it from Plugins > Add New inside your own site — search for BridalOp — instead of uploading a file. Updates arrive the same way as any other plugin. View it on WordPress.org.
- FluentCart is now supported alongside WooCommerce. Same everything: products and photographs published from BridalOp, stock kept in step, orders coming back as real sales, refunds and cancellations putting the gown back on your racks. If you run FluentCart, turn on its own Inventory feature before connecting — while that is off it accepts stock levels and ignores them. See Online Store.
- Connecting a second store retires the first. Moving from WooCommerce to FluentCart no longer leaves both shops selling from one pool of gowns.
- A gown sold at the till now leaves your website within about ten seconds. It previously waited for the next ten-minute sweep — the window in which someone is most likely to buy the dress standing at your counter.
v1.4 — August 16, 2026
Online Store
- Sell your inventory through your own WordPress website. Tick Sell online on a product and BridalOp publishes it to your WooCommerce store with its photos, description, price and sizes. Stock is kept in step automatically — a gown that sells on the floor stops being buyable online within about ten seconds — and every online sale comes back as a real order in BridalOp with the gown taken off your racks. See Online Store.
- Orders to send. Paid online orders queue up on the Online Store page. Marking one as sent tells your website, which emails the customer that their order is on its way. Kept separate from payment on purpose: paid is not posted, and nobody wants a bride told her gown shipped the second she ordered it.
- Cancelling an order on your website puts the gown back on your racks. Previously it stayed marked sold — off the floor and unsellable — with nothing explaining why. BridalOp also tells you when a cancelled order still holds the customer's money, since cancelling doesn't refund anyone.
- Refunds go back through the provider that took the money. A refund issued in BridalOp on an online order returns the money through your website's payment provider. Where that isn't possible — bank transfer and pay-on-collection never are — BridalOp says so before you click rather than failing afterwards.
- Choose which system sends online sales to QuickBooks. If your website already posts them, BridalOp won't, so your revenue isn't counted twice. BridalOp names any connector it can see running on your site.
- BridalOp now notices when your website goes quiet and emails you, including the case where the plugin has been deactivated — where stock updates keep working normally but orders silently stop arriving.
v1.3 — August 15, 2026
Booking
- Embed the booking form on your own website. Copy a short snippet from Settings > Booking and paste it into any page — WordPress, Squarespace, Wix, Shopify or a hand-built site. The form appears inside your page with your header, footer and branding intact, and resizes itself as the bride moves through the steps, so she never has to leave your site to book. Multi-location boutiques get a separate snippet per location, so a location's page books that location with no picker step. See Booking Settings.
- Appointment buffer times now apply on both sides of a booking. Previously a booking could start at the exact moment another ended, ignoring the buffer entirely.
- Online bookings now count towards fitting room capacity. Appointments booked through the public page weren't being counted when working out availability, so slots could be offered no matter how full the day already was.
Point of Sale
- Every variant is now sellable at POS. Tapping a product shows each size and colour — including ones with nothing on the rack, marked Not in stock — instead of silently adding whichever single unit happened to be in stock.
Purchasing
- Edit a line until it's received. Cost, dates and amount paid can be corrected on any line that hasn't been received yet, including one you've just un-received — previously un-receiving left the line uneditable, so "correct it and receive it again" wasn't actually possible.
Vendors
- Clearer size chart errors. Adding a second size chart with a name already used for that vendor now explains the problem instead of appearing to save and silently discarding it.
v1.2 — July 28, 2026
A wide update spanning point of sale, purchasing, reporting, booking, and integrations — much of it driven directly by boutique feedback.
Point of Sale & Orders
- Per-item sales tax. Products now have a Charge sales tax on this item toggle (default on). Turn it off for tax-exempt items like services, and tax is charged only on taxable lines at checkout. The POS cart adds a per-line Tax checkbox to override on the spot. See Products and POS Terminal.
- New "Service" product class — for items like Wedding Day Delivery, alongside Gown, Bridesmaid, Accessory, etc. See Products.
- Reassign salesperson on a completed order — owners and managers can correct a mis-typed salesperson on a finalized sale without reopening it; the commission is recomputed for the corrected person so every report agrees. See Orders.
Purchase Orders
- Shipping & Fees (landed cost). Record extra inbound costs — Shipping, Tariff/Duty, Customs, Processing, Handling, or Other — per item or shipment-wide, with a Goods + Fees = Total landed cost summary. See Purchase Orders.
- Un-receive a line — reverse a mis-entered receive: it removes the created inventory unit (unless already sold/reserved) and reverts the line so it can be corrected and received again. See Purchase Orders.
Reporting & Analytics
- New Sales by Zip Code report — traffic and sales grouped by customer zip.
- Close Ratio now has a Consultation Types multi-select, so you choose exactly which appointment types count as bridal consultations (no missed closes).
- Commissions report supports a tenant-wide "X% on all sales" rule and shows the actually-applied rate and de-duplicated totals.
- Team Sales now credits the assigned salesperson (falling back to whoever rang it up), so sales aren't shown as "Unassigned".
- Revenue figures across reports are shown net of sales tax.
Products, Inventory & Vendors
- Copy add-ons from another vendor in one step — for vendors that share an identical add-on list. See Vendors.
- Auto-generated barcodes when you add an inventory item without typing one.
- More label formats & print options — Avery 5160, Dymo 30334 (2¼×1¼), a 2⅛×4 notes label and per-item notes sheet, MSRP-strikethrough + sale price, and print-field toggles. See Inventory.
Appointments & Booking
- Minimum booking notice and bookable date-windows on appointment types; same-day appointments on the staff booking page. See Booking Settings.
- Save card on file for free appointments and a Charge cancellation fee action on the appointment slide-over.
- Owner/manager alerts (opt-in) for new bookings, cancellations, and reschedules; client self-cancel/reschedule now notify staff in-app with a Rescheduled indicator.
- Possible-duplicate flagging — matching booking names prompt staff instead of silently merging.
- A unified, editable "How did you hear about us" source list drives the booking question and reports; on-booking profile fields and the booking address now save to the customer profile.
Dashboard
- New Awaiting Completion panel — past-due appointments never marked complete, so you can reconcile them (and keep Close Ratio accurate). "Needs Confirmation" no longer flags already-confirmed appointments. See Dashboard.
Staff & Roles
- New Accountant role (reports + read-only financials), multiple owners, and a "choose your store" login + store switcher for team members in more than one boutique account. See Staff and Roles & Permissions.
Automations & Integrations
- New "Send a contract" automation action — tie a contract to an action (e.g. special order placed → send the Special-Order Agreement). See Automations.
- New Klaviyo integration — sync customers out to Klaviyo, and bring Klaviyo leads into BridalOp via a private webhook URL (deduped, tagged
lead).
Customers & Data
- Email a customer directly from their profile with a branded compose modal, logged to their timeline. See Customers.
- Import duplicate handling clarified and hardened — with the Skip strategy, re-importing the same file won't create duplicate customers or duplicate inventory. See Import Data.
Fixes & Hardening
- Appointment times in email and in-app notifications now match your calendar exactly (timezone fix).
- Ongoing security and dependency hardening.
v1.1 — May 14, 2026
The first post-GA update — focused on reporting depth and booking flexibility.
Reporting & Analytics
- New Sales Dashboard at
/reports/sales-dashboard— seven KPI tiles in one screen (Revenue This Month / Quarter / YTD with deltas, Appointments Booked, Close Ratio with weekly sparkline, Gross Margin by Department, Highest Margin Categories). Every tile drills into the underlying report. Pinned to the top of/reportsand the home Dashboard. - New Department Margin report at
/reports/department-margin— gross margin grouped by product type (Gowns / Bridesmaid / Accessories / Veils / Shoes / Alterations / Other) with KPI tiles, a bar chart, and a per-department table. - New Close Ratio report at
/reports/close-ratio— bridal-appointment-to-gown-sale conversion ratio with a configurable window (14 / 30 / 60 / 90 days), store and per-consultant views, and a dedup rule that stops repeat consultations from inflating the number. - Category Sales report gained COGS, Gross Margin, and Margin % columns.
order_lines.unit_costis now snapshotted at sale time, so historical margin doesn't drift later when product costs change. Existing orders backfilled from the inventory item's purchase price (with fallbacks).
Public Booking
- New Appointment Categories — group your appointment types into customer-facing buckets (Bridal, Bridesmaid, Service Visits, etc.). The public booking page gains a new What are you here for? step between location and type pick. Tenants with no categories keep the existing flat list. Uncategorized types surface under a synthetic Other bucket.
- New Show on public booking page flag on appointment types — distinct from Active. Lets you keep a type usable by staff (e.g., Pickup, Alterations Fitting, Trunk Show) while hiding it from the public page. Cards in the Appointment Types list now show a Staff only badge when the flag is off. When every type is hidden, the public page falls back to a "please call the boutique" message.
Vendors
- New Portal URL field on vendors — the URL of the vendor's own account portal (where you log in to place POs, check stock, etc.). Auto-prepends
https://if you paste a bare domain. Surfaced in four places: a prominent Open Portal button on the vendor profile header, the vendor contact card, an external-link icon in the vendor list, and an Open Portal ↗ link under the vendor name on every Purchase Order detail page.
Staff & Access
- New Account Access card under the Staff page (owners only) — grant another existing BridalOp account the ability to switch into your account with full administrator access. Distinct from inviting a staff member: the grantee keeps their own home tenant and uses the account switcher in their sidebar to flip between accounts. Email + in-app notification invite, single-click accept, revoke or self-revoke any time.
v1.0 — May 4, 2026
BridalOp is out of beta. v1.0 is generally available to every boutique, with a substantial list of new modules and platform polish layered on top of the beta foundation.
New Modules
- Quotes — pre-sale estimates with a public Accept / Decline page, one-click conversion to a draft order or invoice
- Customer Forms — build reusable questionnaires (style preferences, intake, post-appointment surveys) sent via email + SMS with a tokenized fill page
- Card Readers — Stripe Terminal (BBPOS WisePOS E, S700 / S710) and Square (Terminal, Register) with on-device tipping
- Lookbook + Automations (v1) — shareable customer-facing catalog plus the first slice of the Automations engine for follow-ups, reminders, and curated lists
- Referral Program — built-in referral tracking so brides can refer friends and earn rewards
- Appointment Conditions — deposits, lead times, and customer-type restrictions per appointment type
Booking & Appointments
- New Checklist Templates — reusable task lists tied to appointment types; ticking on the slide-over stamps name + timestamp and writes to the activity log
- Booking settings page reflowed into a 3 × 2 grid; Appointment Types now display as a card grid
Products, Inventory & Vendors
- "Class" renamed to Product Type across the UI
- New Show on Ecom toggle, LB / EC visibility badges, and Discontinued product state
- Qty on Hand column on Variants, bulk image upload, and inline editing of Status / Location / Condition on Inventory Items
- New Palette card — pull a vendor Color Group + Size Chart, plus an Extra Colors chip editor
- New per-product Pricing Rules with Calculate from cost & pricing rules helper
- Vendor profiles gain Color Groups, Size Charts, and Vendor Pricing that cascade to every product
- New Low Stock Alerts under Settings > Products & Inventory — notify immediately or as a daily 6 PM summary, with per-staff recipient picker
Payments
- Two independent Tipping toggles — on-reader (POS) and on the public invoice payment page (presets
1% / 3% / 5% / Custom / No Tip); invoice tips credited to the invoice's Sold By consultant - Card Readers as a top-level Settings page with full Stripe + Square pairing flows
Customer Profile
- New Forms tab for sending and reviewing customer questionnaires
- New Internal Documents files category gated by the
customer-files.internalpermission (Owner + Manager by default)
Sales Goals — Per-Staff
- Scope selector now supports Store Total, any Location, or any Staff member
- Non-owners / non-managers see a personal Your [Month] Goal ring on the Dashboard, attributed via
sold_by(matches commissions)
Email & Branding
- Tenant brand color + auto-contrast text power the Customer Form Invitation and Quote Sent CTAs
- Inline text links in default emails render near-black with underline for WCAG safety on light brand colors
Bri (AI Assistant)
- Updated to know about Quotes, Customer Forms, Internal Documents, per-staff Sales Goals, palettes, pricing rules, checklist templates, and Card Readers — see Ask Bri → What You Can Ask
Support & Polish
- Support ticket textareas now show a live 5,000-character counter (amber at 4,500, red at 5,000) with browser-side
maxlengthenforcement - Long tokenized URLs in SMS previews wrap inside the modal instead of overflowing
v1.0 Beta 1 — April 13, 2026
- Initial beta launch of BridalOp to a select group of boutiques
Check back here for the latest updates to BridalOp.

