Skip to main content
Docs
What's new

Product updates

The latest improvements to DISTRYB — new features, upgrades, and fixes. Come back any time via the ? menu in your dashboard.

Jump to a date

Oct 13, 2026

Added

As of October 13, 2026, DISTRYB is a federally registered trademark — U.S. Registration No. 8,503,804, on the Principal Register of the United States Patent and Trademark Office.

What that means for you: nothing you need to do. Your account, your orders, and your data are unchanged. You will see a ® beside the DISTRYB name in a few places and a trademark line in the site footer — that is the whole visible difference.

Why it is worth saying. A registered mark is what lets us act when somebody trades on this name — a copycat storefront, a fake invoice, a "DISTRYB" that is not us. If you are a supplier or retailer here, the brand your buyers see on an order confirmation is now one with legal teeth behind it.

If you refer to us in your own materials, the correct form is DISTRYB® on first or most prominent use, and the attribution is "DISTRYB® is a registered trademark of Resilient Spirits LLC." Resilient Spirits LLC is the company; DISTRYB is the name it trades under.

Bottl.Service and DISTRYB.AI are not covered by this registration and should not carry the ® symbol. They are separate marks at different stages.

Oct 11, 2026

Fixed

Gallons now count every container in a pack. A six-pack is six cans and a case is twenty-four, and the figures on your stock movements, invoices and state returns say so. Before this, a pack was measured as though it were a single vessel — so a 12-pack of 355ml cans reported the liquid of one can, twelve times short.

The same fix handles the other direction. Some supplier feeds print a pack's total volume as the bottle size — "288.00 fl oz" for a case of twelve-ounce cans — and read as one container that overstates a return by the pack count. Those rows now resolve to the can, and where the pack count isn't recorded the line is marked unmeasured rather than filed at a size nobody can confirm.

Single bottles were never affected, so spirits and wine figures do not move. Beer and ready-to-drink packs are where you'll see the change — on the stock-edit panel, which tells you the gallons a removal will report, and on the Samples & Damages and movement receipt pages.

Oct 10, 2026

Added

Every business can run events. Distributors, brands, distilleries and retailers now get the full Events tools — tickets, the bar, partners, photos, codes and the door. Before, the Events page told anyone without a creator link to ask us to set one up, even though nothing actually needed it.

Invite creators to co-host. On an event's Partners tab, invite a creator by their Bottl.Service @username. They get a notification and a new Co-hosting page on Bottl.Service where they accept, and get their own link for the night.

  • Every bottle bought through their link earns their usual commission — and counts toward your event, so you can see what the night sold.
  • You can also give a creator a share of the door, set on their row like any other partner. Shares across brands and creators can never add up to more than the door took.
  • A creator needs a creator link to be invited, because that link is how their sales are credited.

Oct 9, 2026

Added

Co-hosting a night with another business now works end to end, and both sides get told.

Inviting. On an event's Partners tab, pick a business you already work with or search for any other, and invite them. The door share is optional now — leave it blank when they're bringing stock rather than splitting admission, which is the usual arrangement with a brand. They'll see "no share of the door" rather than a confusing 0%.

Asking for stock. On the Bar tab, ask any business on the night for specific bottles — six of the 1L gin to pour, a case of the vodka to sell. Each product is answered separately, so a brand can supply the gin and pass on the vodka.

The other side. Everything addressed to your business now lands on your own Co-hosting page, with a count on the sidebar when something is waiting:

  • invitations to co-host, to accept or decline;
  • requests for your stock, where you choose which premises the bottles come from and set them aside — or say you can't supply them.

Setting stock aside reserves it on your own shelf, from your own premises, until the night is over. Nobody else can reserve your stock; only you can, and only you decide where it comes from. Saying no is worth saying — the host sees it either way, and an unanswered request looks the same to them as a bar with nothing on it.

Every one of these now raises a notification, so nothing waits on someone remembering to send a link.

Three things about an event's bottles that nobody could see until now.

Guests see the lineup. The event's public page — the one a printed code opens — now lists every bottle set aside for the night: what's being poured to taste, what's for sale, and where a bottle can't be sold in that state, it says tasting only here instead of offering a purchase the checkout would refuse. After the night the same list reads as What was on the bar, so somebody can go back and find the thing they liked. Each bottle links to its page. Quantities are never shown — what a brand brought is its own business.

Brands see why their shelf is short. On Inventory, a bottle set aside for an event now says so beside the count: 6 set aside for Friday Tasting · to pour. The available number was already right; now it has a reason next to it.

Hosts invite several at once. On an event's Partners tab, tap any number of businesses and invite them together. Inviting several gives everyone no share of the door — a share is agreed with one partner at a time, and can be set on their row afterwards. Searching for a business you don't already trade with still works; it's labelled, and they're told, rather than hidden. Inviting someone to an event never creates a partnership on its own.

Also fixed from the same round of testing: notification rows in the bell now actually open what they're about (no row had navigated since the tray was redesigned), the business inbox had been silently empty for every notification type, and a printed code can now be pointed at another website — the option couldn't be selected before.

Oct 6, 2026

Added

A back bar sells a bottle of gin whole and pours the same gin into a Negroni. Until now a product had to be one or the other.

On My Catalog, Sold as is now two switches instead of a choice. Turn on Bottle, Pour, or both. When both are on, you set two prices — a pour's price has little to do with what the bottle costs, so neither is worked out from the other.

Guests pick which they want, each with its own price, and the two sit in their order as separate lines. A shot is simply a pour: turn Pour on, give it a price, and it's orderable on its own as well as inside a cocktail.

Your counts behave exactly as before. A bottle leaving the building draws the count down. A pour never does — we can't know how many ounces went into the glass, and guessing would be worse than not counting. That's unchanged; it now just applies per sale rather than per product.

Nothing turns on by itself. A product is only offered a given way if you switch it on and price it — a pour with no price set stays off the menu rather than being sold for nothing, and the catalogue tells you so. Bottles only appear where a room pours; a package store can't be set to sell pours, because there the bottle really is leaving.

You know what you want to stock. You should not have to know which of your suppliers happens to carry it.

Shop Wholesale now opens on products, across every supplier licensed to sell into your state. Search by product or brand, see who offers it and at what price, and add a case to your cart from the row — no picking a supplier first.

You only see what you can actually order. Two things have to be true for a row to appear: the supplier is licensed to sell into your state, and the product is registered for sale there. Both are checked before the page is built, so the list is what you could put on a purchase order today rather than a catalogue you have to narrow yourself.

If you want to see the rest, you can ask for it. Tick "Also show products not yet available in my state" and products that are not registered in your state appear too, clearly marked and not orderable. That is worth doing when there is something you would buy if it were available — it is how a supplier learns there is demand to register it where you are.

Price cuts and promotional offers show inline, with the reduced price beside what it was. A conditional offer — "20% off orders over $500" — shows as the condition rather than a unit price, because it is not what you would be charged on a smaller order.

Search covers the whole catalogue, not just what loaded. Typing a product or brand asks the server, so a supplier's hundredth SKU is as findable as their first.

Browsing one supplier at a time is still there, now called Browse by Supplier. Use it when you are working a particular supplier's price list, or when you want to see everything they list including what you cannot order yet.

Fixed

Purchase History showed what a supplier had recorded selling you from their own books — an account they'd linked to yours from outside DISTRYB. It did not show the orders you placed on DISTRYB.

If all your buying happens here, that meant the page was empty. Permanently. Even with a delivered order sitting in My Orders.

It now shows both, grouped by supplier, with what's paid and what's still owed — the orders you placed here alongside anything a supplier has shared from elsewhere. Nothing is counted twice.

If you've never bought from a supplier outside DISTRYB, this is the first time the page has had anything to tell you.

After you claimed a brand, My Brand Partners still listed it as Unclaimed · invite and still offered you the Claim button — so the page contradicted the claim you had just filed, and the only way to find out where it stood was the review thread in Messages.

  • A claim under review now says so. The brand shows Claim under review, with a link straight into the thread where our team asks for your documents.
  • The link in your "Brand claim update" notification now lands somewhere useful. It always pointed at this page; the page just had nothing on it about claims.
  • Approved claims need no badge. Once we approve one, the brand is yours and the row simply reads You own this — which is the truthful version of the same news.
  • Viewing as another business now shows that business's own brands as theirs, instead of labelling them "Connect".

Nothing to do on your side, and claims you have already filed will show their status the next time you open the page.

A supplier can make something cheaper two ways: cut the list price, or run a promotion off it. From your side those are the same thing — the bottle costs less this week — but the Price Drops page only ever looked at price cuts.

So a supplier running a promotion on a product they had not also marked down did not appear there at all. The page read as a list of everything going cheaper on the platform while showing roughly half of it.

Both now appear, side by side. A promotional offer shows up in Price Drops the same as a cut does, and still carries its end date — because a promotion reverts and a cut does not, and setting your shelf price off an unlabelled promotion is how you lose the margin when it ends.

Nothing about who can see what has changed. Promotional offers pass exactly the checks cuts already passed: a supplier who is not licensed to sell into your state does not appear, and neither do their prices. A conditional offer — "20% off orders over $500" — still shows as the condition rather than as a unit price, because it is not a price you would be charged on a smaller order.

A price cut still only appears if the supplier chose to feature it. That has not changed and is their call; a lower price is often negotiated, and publishing one by default would broadcast it to their other buyers.

And when there are more deals than the page can show, it now says so instead of letting a sample read as the whole market.

If you built your own role on the Roles page and ticked Message other businesses, that person could open and send messages, but their Messages page did not refresh on its own. New replies only appeared when they switched threads or reloaded. The built-in roles never had this problem.

The cause was that only the role's name travelled with the sign-in, not what the role is allowed to do. Anything checking permissions in the background had no way to see a role you invented yourself, so it fell back to refusing. Permissions now travel with the sign-in, so a role you define is treated exactly like a built-in one.

Two things worth knowing:

  • Granting takes effect within the hour. Tick a permission and the person has it immediately everywhere they click. The live-updating part catches up on their next sign-in refresh, usually within an hour, without anyone having to sign out.
  • Removing takes effect at once. Untick it and we end that person's current sessions on the spot, so the change applies immediately rather than lingering. Only removing does this. Granting never signs anyone out.

Products on My Catalog showed a box instead of their photo — including products whose picture is sitting in the master catalogue.

Stock arriving from a delivered order lands on your shelf carrying a name and a link to the master product, but no picture of its own. The page only went and fetched the master product when a row was missing its name, so a row that had a name kept its blank picture, and a box looks exactly like a product that simply has no photo.

The master catalogue is now read for every row that points at one, so the name and picture you see are the product's own rather than whatever copy your row happens to hold. Rows that aren't matched to a master product — an import in your own wording, with no barcode match — are unchanged and still show what you typed.

Everything counted was labelled "Bottle" — on your catalogue and on a guest's menu. A four-pack of Barefoot said Bottle. So did a keg.

Your catalogue decides what one of these is. If the product carries a pack size, that is the number shown — and it is the same number a case line is billed and filed by, so the two can no longer say different things about the same product. Where your catalogue doesn't say, we read the packaging out of the name the product arrived with: names turn up spelled "Diet Pepsi Cola Soda Pop 12 fl oz 12 Pack Cans", and tidying that away to get a clean product name used to throw the facts out with it.

A four-pack says 4-pack, a can says Can, a keg says Keg. Ordering one twelve-pack gets you twelve, so calling it "a can" was the wrong word in a place where the price sits next to it.

Guests see it next to the price too — a 6-pack of White Claw reads 6-pack, where the bar's menu previously said nothing at all about how many they were ordering.

About one product in five now reads as something other than Bottle: 360 four-packs, 254 twelve-packs, 226 six-packs, 38 cans, two kegs and a long tail besides. Two thirds of those come from your catalogue's own pack size rather than from a name. A product nothing describes is unchanged — roughly seven in ten of the list — and still reads Bottle: we'd rather say the ordinary thing than guess at a product nobody described.

Private person-to-person threads were missing the paperclip. You could attach a photo, a PDF or a spreadsheet in any business conversation, an order room, a deal room or your team channel, but not in a private message to one person. There was no explanation on screen, just no button.

Sending them always worked. Only the button was missing, so the files were never the problem.

Private threads belong to the people in them and no company is a member, which is exactly what keeps them private. The check for the paperclip asked whether your company was in the room, so in a private thread it answered no for everyone, including the two people actually talking. It now asks whether you are in the room.

PLUG and the community boards still have no attachments, which is deliberate.

If you already belonged to one business and were invited to another, accepting that invitation failed. You saw an error, and the new business did not appear in your account switcher.

The invitation had actually gone through. Your place on the new team was recorded before the error happened, so the only thing missing was the link between your sign-in and the new business. That is why some people found the business appeared later on its own, after signing out and back in.

Accepting an invitation now completes properly the first time, whether it is your first business or your fifth. If you hit this before, the business you joined is already there waiting and needs nothing from you.

Oct 5, 2026

Added

Your customer's first question after "confirmed" is when, and the answer used to live three steps away — the date field only existed inside the Schedule delivery form, which does not open until an order is being packed. On a freshly confirmed order there was nowhere to put it.

  • There is now an Expected delivery field in the order drawer, from the moment you confirm onward. Set it, move it, or clear it at any time.
  • Setting it at confirm rides along on the confirmation email, so the one message that was already going answers "when" as well as "what".
  • Moving it later tells your customer in the platform, and only on a real change — re-saving the same date is not news, so the notice stays worth reading.

Clearing a date says so plainly rather than sending an empty one, and an order entered after the fact still sends nothing, as before.

Duplicate payouts, an order credited to the wrong broker, an order amended after it paid — it happens. Until now there was no written answer for what came next, which is a bad thing for a broker to have to guess about.

  • We never take money out of your bank account. A correction can reach what is still in your Stripe balance, and what you earn next. Nothing else.
  • Three outcomes, and you are told which in writing, with the amounts — returned from your balance, withheld from your next commission, or written off by DISTRYB.
  • The payout that applies a withholding says so, rather than arriving smaller than you expected with nothing to explain it.
  • A distributor cannot do this to you. Corrections to paid commission are made by DISTRYB, not by the party on the other side of the deal.

Full detail, including the one case where we may ask you first before returning more than your balance holds: Broker commissions & payouts.

Improved

Your Customers page said it listed retailers "who've ordered from you or connected". Only the first half was ever true: the list was built from orders, so a shop you set up yourself sat nowhere on the page until it placed its first order — and placing that first order for them is exactly what you come to this page to do.

Accounts you set up or invited now appear straight away, with their locations and licences, marked by how they came to be yours rather than by an order they haven't placed yet. If you've invited someone and they've finished signing up, they're on the page.

They can be ordered for, too. The new-order customer picker was built from order history as well, so the shop you set up yesterday could be sitting on your Customers page and still be impossible to choose on a new order — the one order you were trying to place. It now offers everyone you've set up or invited.

And you can start that order from where you found them. Customers and the business profile both now carry a New order button that opens the order already on that customer, instead of sending you to Orders to retype a name you were just looking at.

And a business that has closed now says so. A customer that shut its doors kept rendering as an ordinary live account — worse, it sorted to the top of the list on the revenue it earned while it was open, so the loudest row on the page was the one thing on it nobody could act on. Closed accounts now carry a Closed label with the date, and sort below the businesses you can still sell to.

A business that has closed now says so wherever you meet it. Its trade profile used to read like any other account — licence standing, premises, a Message button — with nothing to tell you it had shut, which is the one fact that changes what you do next. A closed business now carries an Out of business mark there, and on a broker's book of accounts, and isn't offered for a new order.

Win-back lists know about it too, now. Brand-owner Leads, Brand Footprint and Territory Leads already set aside accounts the state register reports expired or revoked — but a register keeps reporting a licence active long after a business stops trading, so a business we'd been told had closed was still sitting at the top of the list, ranked on the revenue it used to make. It's now separated out with the rest.

Their history stays exactly where it was. Closing a business doesn't unwind what it bought: the orders, the invoices and the revenue are all still yours, still on the page, still in your totals. The number simply stops being presented as money you're still earning.

Opening a bill you owe showed you everything about it except a way to pay it. You read the invoice, went back to the list, found the row again, and paid from a table that shows less than the page you just left.

There's now a Pay invoice button on the invoice itself. It runs the same ACH payment as the list — the same fee breakdown before you connect a bank, the same 1–4 business days to clear — just from the page where you were already looking at the bill.

It appears on bills you owe, where the supplier can actually receive a bank transfer, and where money can still be collected. If two transfers for that invoice have already been returned, you'll see Bank transfers exhausted instead of a button that was only going to fail at the end — pay another way and tell the supplier.

Message about an invoice, and send the invoice with it

Message about invoice used to open a thread that said "Invoice INV-1101" and left the other side to go and find it. The message now carries a link to the invoice itself, so whoever you're asking can open the exact bill you're asking about.

Both of you can open that link — it lands on the invoice in your own account, whichever side of it you're on.

Distributors can set a minimum order value, and we have always enforced it — but only at the moment you pressed Place order. So you could fill a cart, read "Place order — $420", click it, and be told the distributor needs $500. The information arrived after the work, which is the worst possible moment for it.

Your cart now tells you while you are still shopping. A group that is under its distributor's minimum says how much more is needed, and the button for that group says why it cannot be used yet rather than failing when you press it. Add enough and both clear on their own.

It is per distributor, because each one is a separate order. A cart spanning three distributors is three purchase orders with three minimums, and one being short says nothing about the others. Only the group that is short is held back; the rest stay ready to place.

A distributor who has not set a minimum is not treated as having one. Nothing changes for them, and nothing in your cart will imply a threshold they never stated.

The figure and the wording come from the same check that accepts or refuses the order, measured the same way — on the value of the goods, before any discount, not counting freight or tax. So the cart and the checkout cannot disagree about whether your order can be placed.

A termination notice said that commission already earned was unaffected — true, but it gave no figure, so a broker had to take it on trust from the party that had just ended the deal.

  • The notice now carries the amounts, split the way the money behaves: payable now, on hold, and not yet earned.
  • Anything on hold names what is blocking it. This was the real gap — "already earned is not affected" is true and still misleading if a licence is missing, because nothing arrives and the reason was only ever recorded on the order rows.
  • It runs in the right direction. A broker reads what is owed to them; a distributor reads what is owed to themselves, never the reverse.

Ending a partnership still cannot un-earn a commission. Nothing about that changed — it is just now said with numbers.

Brokers: the Show on your public pages choice in Dashboard → Profile now reaches every place your company is shown, not only your public pages.

  • Message threads, org cards, the @-mention list, the follower lists and your transactional email all draw the picture you picked. Before, they read the company logo field directly, so choosing My photo left you a logo everywhere except your profile and broker page.
  • Nothing changes for producers, distributors or retailers — a company still shows its company logo, and a page about one of your stores still shows that store's own image.

If you have both a headshot and a company logo on file, the toggle appears in Dashboard → Profile; pick one and press Save profile. With nothing picked, the default is your photo.

A broker was being blind-copied on every customer-facing message about their own accounts — up to seven emails per order: the confirmation, the confirmed notice, the delivery notice, the invoice, the chase, the autopay reminder and the failed-debit notice. All of it telling them things the platform could simply show them.

  • The broker's copies are now in the dashboard, not the inbox. Same events, same detail, gathered where they already work instead of burying the one that matters under six that don't.
  • Your customers are unaffected and stay on email. That asymmetry is deliberate: a customer is usually not a platform user, so an in-app notice is a notice nobody opens. A broker is a real user with a dashboard, so for them the platform is the better channel.
  • One email still goes to a broker, because it needs to: a failed direct debit on an account they manage is time-sensitive and not something to find at next sign-in.

If you are a broker and were expecting blind copies on order and invoice email, that is why they stopped — nothing was lost, it is all on your dashboard.

Fixed

The picture at the top of a /@handle profile was drawn inside its circle rather than filling it — at about 70% of the width, on a black ring. It was most obvious on a broker's page, where the picture is a headshot rather than a company mark, and there was no setting that would change it.

  • It now shows exactly what you cropped. The circular cropper you upload through already decides what should be visible, so the page no longer insets or re-frames it on top of that.
  • Brand logos on the profile fill their circles too, for the same reason.
  • A logo drawn on a transparent background still sits on its dark plate, so nothing shows through behind it. If your mark is dark-on-transparent, pick a background in the cropper (White, Gold or a custom colour) and it is kept.

Clicking into a search box or a form field drew a gold outline around it — the same gold this product uses for warnings and pending states, which made the ordinary act of clicking into a field look like something had gone wrong with it.

That outline is the keyboard focus indicator, and it is there on purpose: it is the only way somebody navigating by Tab can see where they are. The problem was that browsers show it on text fields however you got there, mouse included, so it appeared for people who never needed it.

It now follows how you actually got to the field. Tab still outlines everything, exactly as before. Clicking no longer does.

Nothing was removed for anyone who relies on it. Keyboard navigation is unchanged across both the dashboard and the storefront, and if you have high contrast turned on you keep the outline either way — asking for more visual signal should never get you less. The documentation site also gets its own green focus outline back, which had been quietly overridden for some time.

If you are a broker with both a headshot and a company logo on file, your /@handle profile could show a different picture than your broker page. The broker page, your line card and the directory all honoured the Show on your public pages choice in Dashboard → Profile; your /@handle profile did not, and always drew the company logo.

  • They all ask the same question now, so there is one picture of you rather than two depending on which link somebody follows.
  • Your choice decides. Dashboard → Profile → Show on your public pages offers My photo or Company logo, and the toggle appears once you have both on file. It now governs your /@handle profile too, which its description says.
  • If you have never chosen, the default is your photo — the same default your broker page has always used. So a /@handle profile that was showing your company logo may now show your headshot; press Company logo if that is what you want everywhere.

Nothing changes for producers, distributors or retailers: a company page still shows the company's profile image.

Placing a wholesale order used to leave those items sitting in your cart until you finished paying. The order itself was already real at that point — the distributor's stock had been reduced, your invoice had been created, and the confirmation email had gone out — but the cart still showed the items with a live Place order button above them.

So if you placed an order, then used Back to cart to check something before paying, you were looking at a button that would place the whole order a second time. Two orders, two invoices, two emails to your distributor, and the stock counted twice.

Your cart now empties the moment the order is created, which is the moment it becomes real. The payment step tells you the order is placed and that you can pay now or later from the invoice — because either way it is already on your Orders page and already visible to the distributor.

Paying later was always allowed, and now it says so. Nothing about an unpaid order has changed: it keeps its number, its invoice, and its pay link. The only thing that changed is that leaving the payment screen no longer looks like leaving the order unplaced.

And a submission that reaches us twice is now treated as one order. If your connection drops at the wrong moment and the request arrives again, you get the order you already have rather than a second one. If you genuinely want to order the same thing again, that is still a new order — nothing stops you reordering.

If you think a duplicate slipped through before this, your Orders page lists every order with its number and date, and any order placed in error can be cancelled from there.

When your business cleared verification, a notification was supposed to appear in the app saying so — the one signal that doesn't depend on an email arriving, not bouncing, and not landing in spam.

It never arrived. Not for anyone, not once.

The notice was being created correctly, but nothing waited for it to finish writing before the work that created it ended — so it was discarded every time, silently, with no error anywhere. Approvals themselves were never affected; only the telling.

It now waits. Approving a business sends the in-app notice to everyone in that business, alongside the email, and the same fix covers the welcome message and the state peer-board join notice, which were being dropped the same way.

If your account was approved before today, you won't get a backdated notice — but you're already approved, and nothing about your account needs to change.

Yesterday's note said the Show on your public pages choice governed your broker page, your line card and the directory. Two of those three were true: the directory read your headshot straight off your profile and ignored the setting entirely.

  • It honours your choice now. Pick Company logo in Dashboard → Profile and the directory shows your logo, like your other public pages do.
  • A broker with only a logo is no longer faceless there. That card used to fall back to initials, because it was looking for a headshot and nothing else.

Nothing to do on your side, and the directory costs no more to load than it did.

Every order email ended in a View order button pointing at the dashboard. For a customer who has an account but has never signed in — which is most of a migrated book — that was a dead end. The invoice in the same email already had a no-login link; the order did not.

  • The View order button now opens the order itself, no sign-in needed, carrying the status, the expected delivery date, the items and the totals.
  • It is the same link as the invoice, so there is one credential per order with one expiry, not two to keep track of.
  • It shows that one order and nothing else — no history, no other locations, no account.

Your own order emails are unchanged: you have a dashboard, and they still point at it.

Oct 4, 2026

Improved

Two places showed you nothing useful until you paid for Market Intelligence. Both now show a genuine free signal.

Market Intel is no longer a bare paywall. The page leads with the movers in your state — which brands are rising and falling, and how many of them you carry — then the upgrade prompt underneath. It is the same free read the Sales Intel page already gave you, now in the place you would look for it.

The panel on a product told you numbers that were not real. Open a product without Market Intelligence and the market panel used to show an average retail price, a retailer count and a markup — example figures, blurred, invented. They are gone. In their place: whether that product's brand is one of the movers in your state right now, with the direction it is moving, and a plain "no signal yet" when it isn't one.

No exact figures are published either way — the free signal is brand names and direction only. Volumes, momentum and where your own prices sit locally remain part of Market Intelligence.

Oct 1, 2026

Added

Retailers have a new Deals page, beside Shop Wholesale. It lists wholesale offers that are cheaper than usual right now, however the seller made them so — a cut list price and a promotion running off it are different things to a distributor and the same thing to you.

  • Unfiltered by what you already buy. A cut on something you have never carried is the most interesting row on the page, so discovery is the point here. (An increase on something you do buy is the opposite: personal, and pushed to you.)
  • A conditional offer is shown in words, never as a price. "20% off orders over $500", buy-one-get-one, free shipping — none of those is a unit price, and printing one would quote you a number you will not be charged unless the whole order qualifies. Priced deals show the new price and the old one; conditional ones say what the condition is.
  • Anything priced from a promotion carries its end date, because setting a shelf price off an unlabelled promo costs you the margin when it reverts.
  • Only sellers licensed in your own state appear, and that is decided before the page is built.

Sellers: your cuts stay private unless you say otherwise. A lower wholesale price is often negotiated, so nothing is advertised by default. While a cut is live, its pricing row carries a Feature in Price Drops toggle. It does not hide or reveal your price — a buyer who can order from you sees the real number either way, because it is the price. It decides one thing: whether we feature the reduction to buyers browsing for deals. Each new cut starts switched off again, because agreeing to advertise one price is not agreeing to advertise the next.

Distributors, producers and distillers have a new Directory Demand page under Sales Intel. It answers two questions you had no way to ask.

What your market is looking for. The searches and profile views happening in your state, what share of them came from an AI assistant rather than a person, and the terms buyers are actually typing.

Who looked up your listings. For each licence you hold, how many times it was looked up, split between people and AI agents.

Counts only — never names. A search term appears only once enough separate people have used it, so nothing here can be traced back to one buyer, and the same floor applies to your own listings' numbers.

The headline and your own listings' lookups are free on every plan. Market Intelligence — included in Growth and above — opens up the full list of search terms in your state and the breakdown of which markets are being looked at most.

PLUG could read your account, connectors, invoices, orders and registrations, and nothing at all about brokers — the one part of the business where credit quietly goes missing.

"Did I forget to credit anyone last month?" PLUG now reads your broker partnerships and commissions, and can sweep for orders at a store in a broker's book that credited nobody. Clearing the "Sold by (broker)" field leaves no wrong record, it leaves no record — which is why a broker could never point at anything afterwards. The sweep is deliberately cautious: it won't flag an order that already credits someone, because there are ordinary reasons an order carries no broker at all.

And when the answer is "that was a mistake", it can be corrected — while the commission is still pending, which is where payout terms hold nearly all of them. Ask PLUG to move the credit and it tells you the amount before you confirm; a person approves it, every time. Commission is recomputed at the rate already stamped on that order, never the incoming broker's current rate — a correction fixes who earned, not what the deal was. Once a commission has been accrued or paid it is refused rather than rewritten, and you are told the two options that remain, because which one is right depends on the relationship between two businesses.

Moving commission needs the partnership permission, not the order one, so a rep cannot move credit onto or off themselves.

Sep 30, 2026

Improved

Ending a broker partnership always wrote a proper record: when it happened, who ended it, and the reason the person typed. It told nobody and displayed none of it. So a broker found out their deal was over by navigating to Partnerships, opening the Past tab, and noticing a red badge — no date, no reason, and no idea it had happened unless they went looking.

That matters more than it used to: a broker now receives their customers' invoices and chase emails, so they could watch a customer be billed while quietly earning nothing on it, with nothing anywhere saying why.

  • Whichever side did not end it is notified — in the dashboard and by email to the account desk, the same place the original partnership invite arrived. The reason travels in the message, not just on a page someone would have to think to visit.
  • The Past row and the partnership page now show it: the date it ended, which side ended it, and the reason — or "no reason was given", said plainly.
  • The page also says what it means. New orders earn nothing from that date. Commission already recorded on orders placed before it is unaffected and still pays.

The notice goes to everyone who can view partnerships, not only those who can manage them — being told your own deal has ended is not an administrative privilege.

Fixed

When a distributor or broker sets up an account for a business, the invite has to record something about what that business sells, and it records spirits — the careful default, because an unknown declaration is treated as alcohol and the licence rules apply from the first minute.

The intention was always that the business corrects it when they claim the account and tell us about themselves. Nothing ever asked them. So a café, a coffee cart or any other non-alcohol business invited this way would have stayed on record as a spirits retailer — and verification would have sent a reviewer chasing a liquor licence that business must never hold, leaving the account in manual review waiting on a document that should not exist.

Claiming an invited account now asks what you sell, and the answer is yours to give rather than your inviter's to guess. A business that sells no alcohol clears verification on its own instead of stalling.

Nobody had actually been caught by this before it was closed.

A special-event or temporary permit — a one-day beer showcase, a homebrew event, a tasting — is meant to expire the day after it is used. Your primary retail licence has nothing to do with it.

The nightly licence check did not know that. It read a spent one-day permit as a lapsed licence and suspended the store, with the shop's own retail licence current and years from expiry. Worse, it looked as though it had been fixed: the state sync would clear the account when it ran, and the nightly job suspended it again the next morning, so the sync's log reported success every single time.

Both the nightly check and the state sync now reach that question through one shared rule, so a used-up event permit cannot suspend a store in either of them. Anything that genuinely has lapsed is still caught.

Sep 28, 2026

Improved

Two gaps in where wholesale order email lands.

  • Your Orders email is honoured. If you set one in Company Settings, order confirmations, new-order alerts and delivery notices now go there. Invoices already used it; order email didn't, so it kept arriving at your main account address no matter what you'd set.
  • A broker who placed the order gets a copy. When a broker writes an order on your behalf, the retailer gets the confirmation and you get the alert — the broker who actually took the order used to see nothing after it left their hands. They're now copied on the confirmation, the confirmed notice and the delivery notice, at their own orders desk. It's a blind copy, so your customer never sees an address that isn't part of their own transaction.

The broker's copy also survives the whole order now, not just the first email: an order written as a draft and finalised later used to drop them from everything after the confirmation.

Tell PLUG something is broken and it used to ask whether you'd like it to send a bug report to the DISTRYB product team. If you didn't answer — and people don't, they've already moved on to a workaround — nothing was filed and nobody here knew.

It files it now, and gives you the reference in the same breath. You can correct it, add to it, or ignore it, and either way a human at DISTRYB has already been told. Reports land straight in front of our product team when they're written.

Say the same thing twice within half an hour and you get the existing reference back rather than a second report.

PLUG is also now told not to guess at a cause it can't check. Being sent to look at your popup blocker while the real fault goes unreported helps nobody.

More in PLUG — your AI assistant.

Find Retailers is a map you navigate by dragging, and on a phone the bottom of it was always below the fold — so you scrolled the page to reach a map that wanted the gesture itself.

The map now fills whatever is left of the screen beneath the controls, edge to edge, with the page sized to what you can actually see rather than to what sits behind the browser's address bar. The pointer across to the broker view is a link rather than a full-width button, so it no longer pushes the map down before you've started.

Both versions of the page got it, including the broker one with the extra row of tabs.

The chevron on a sidebar section is a control now, not a marker. Click it and the section's sub-pages unfold where you are — no trip through the parent page first, just to reach the one you actually wanted.

The rest of the row still goes to the parent page, and moving anywhere resets the sidebar to showing the section you've landed in.

Fixed

The Connect button for payouts on Connectors could fail and tell you nothing. Four things were wrong at once, and all four are fixed.

  • The account can actually be created. The payout-only path — a seller connecting so they can be paid for what they bill, and a broker's payout onboarding — asked Stripe for a combination Stripe refuses on live accounts, so it failed every time. It now asks for the shape Stripe accepts. Store, affiliate and creator connections were never affected by this and are unchanged.
  • A failure now says what went wrong. Every Connect button on that page already had an error message, rendered somewhere only the username-and-password connectors ever opened. So a refusal showed as "Opening…", then the button back to "Connect", and nothing else. The reason now appears on the connector's own card. If the list of connectors itself can't load, you get that too, with a retry, instead of a page that looks like you have no connectors available.
  • Stripe brings you back to the site you started on. Finishing setup from your DISTRYB dashboard returned you to bottlservice.com, which doesn't serve that dashboard at all.
  • We hear about it when it fails. A Connect attempt that errors now raises an alert on our side, rather than waiting for you to tell us the button does nothing.

One thing to expect while you set up: Stripe will ask you for card-processing details. A DISTRYB seller never takes a card payment — your buyers pay the platform and the money reaches you from there — but the account shape Stripe accepts carries card handling with it, and Stripe holds payouts closed until those questions are answered. Work through them; that is what switches payouts on.

More in Connectors and Payments & getting paid.

Nearby prospects — on Territory, and on Leads under Brand Footprint — shows licensed retailers near your accounts that don't buy from you yet. It filtered on license type, on distance, and on who is already a customer. It never asked whether the license still stood, so a premises the state records as ceased or revoked could be handed to you as a placement lead.

Both lists check it now, using the same rule that already decides who earns a pin on the map — so a prospect and a pin can't disagree about the same address.

A gap in our records is not a closure. Where we hold no standing for a premises, it stays a prospect: missing information from a state register isn't evidence a business shut its doors.

This was easy to miss because our copy of the state registers only ever asked for active licenses, so almost everything in it looked open. Now that ceased and revoked licenses are collected too, the registers say what they actually say — and the lead lists read them properly.

It's the other half of the win-back fix from 21 September, which separated closed businesses out of your win-back lists and left the prospect scans unguarded.

Three fixes on Messages.

  • A reaction shows up straight away. Adding one was saved correctly and never reached the screen until the next message arrived; removing one looked like a button that simply didn't work. Both now appear as you tap them, for everyone in the thread. Reacting no longer bumps a conversation to the top of your list or marks it unread — a thumbs-up isn't a new message.
  • Every emoji the picker offers now works. The picker has the full set, with search and skin tones, but each kind of conversation quietly accepted only a handful of them. Anything else was refused and dropped without a word, including several sitting in your own "Frequently used" row, and a plain thumbs up the moment you'd chosen a skin tone. All of them are accepted now. A skin tone is treated as the same reaction as the plain emoji, so they count together instead of splitting into separate tallies, and reactions from before today still add up with new ones. If a reaction is ever refused, you're told.
  • Formatting you paste is read as formatting. Typing **bold** worked, but pasting the same text sent the asterisks through to whoever you were writing to — so a message drafted somewhere else arrived as raw syntax. Pasting into an empty message box now reads markdown exactly as typing it does. Pasting into a message you've already started behaves as before, and pasted files, pasted rich text and anything inside a code block are left untouched.

More in Messages, channels & reach credits.

When the address on one of your state licenses doesn't match the one we hold, PLUG opens a conversation about it and you have seven days to settle it before selling pauses at that location.

Two things were wrong with that.

  • Businesses flagged before the self-serve card existed were never asked. The outreach only fired when a license's details changed, which is never true of a mismatch already on file — so exactly the businesses waiting on the question were the ones who never got it. PLUG now asks about every unresolved mismatch it hasn't yet raised with you, however long it has been sitting there.
  • The seven days now run from the day PLUG asks. They used to run from the day we noticed, which could be well before there was any way for you to answer. The clock starts only when the message actually reaches you, and a mismatch that changes counts as a new question with a fresh week.

Nothing changes for a mismatch found from here on: we notice it and ask you about it in the same run, so it's the same seven days it always was.

See Compliance for what we check and how to correct an address.

A broker cleared to sell while their license is pending was told the opposite by their own setup checklist: that alcohol orders couldn't go through yet. Three inches below it sat a banner saying commissions were accruing in full. The banner was right.

The step now says what is actually true for you — your orders go through and your commission accrues in full; it is the payment that waits. Add the license the moment the state issues it and the hold lifts by itself.

The step still appears, because that license is the one thing between you and being paid for work already done. Brokers without that clearance see the same message as before: orders do wait on the license.

A business licensed under its legal entity and trading under a different name — one name on the license, another on the sign — could be found by its licensee name, by its license number and on its own profile page, but searching its trading name often turned up nothing. A common word in the name (a "grill", a "market") filled the results with everyone else before the one record you wanted could reach them.

The directory now searches the trading name the same way it searches the licensee name, so typing what's on the door finds the license behind it.

Sep 27, 2026

Added

Brokers and creators who pour at tastings, dinners and private events can now get credited for the bottles those nights sell — and see which events were worth repeating.

  • One code, every event. Your new Event QR code lives on your Profile page beside your trade code. Print it once: it never changes, and it works at events you have not created yet. No new artwork for a new night.
  • Add the night before you work it. Name, venue, state, start and end. That is the whole setup.
  • The guest names the event. At checkout they are asked which of your events they were at. One event running is preselected; two overlapping events ask them to choose, because a sale credited to the wrong night is worse than a question.
  • Someone who orders on Tuesday still counts. Events stay selectable for 7 days after they end.
  • Close a night early and it stops being offered straight away, whatever its end time says. Sales already credited to it are unaffected.

Bottles sold at your events are sold by the platform's licensed retail partner, with you fulfilling on their behalf — so you do not need a retail licence of your own to run one. Your commission is unchanged.

One thing worth doing first: finish your payout setup. Sales are only credited once you can actually be paid, so a code handed out beforehand earns nothing while looking exactly like one that works. Your events panel will tell you if that is still outstanding.

Full guide: Selling bottles at your events.

Open a product in My Catalog and there's now a Product photo row: Add photo, or Replace photo if there's one there already. No crop, no square — a tall bottle stays a tall bottle.

It was possible before, but only from Company Settings → Media, which is not where you are when you're looking at the product. Media still shows every image your business has set in one place; this is just the same change, on the page you were already on.

If you use the Bottl.Service backdrop generator, it sits directly below — and it needs a real photo to work from, so the two are now in the order you'd do them.

One thing worth knowing: a product photo is a fact about the product, like its name and ABV — not a commercial detail like your price. If you carry a brand somebody else owns on DISTRYB, their photo is the one that shows, and it replaces a provisional one you set before they joined. Your prices, stock and listing are never affected. Product photos explains who can set what.

Open a product in My Catalog and there's a Your photos row under the main one. Add up to 10 images of your own per product — the bottles actually on your floor, the case as it ships, a shelf talker, a pour.

These are yours. The main photo belongs to the brand, and when a brand owner joins DISTRYB and claims their brand, the main image they set replaces the one showing on every catalog carrying that product — including yours. Your photos are untouched by that. Nobody but you can change or remove them.

On your public line card, buyers see the brand's main image with a small +N on the corner when you've added more, so they know there's more to look at.

Remove one with the × on its thumbnail. At 10 the button says so rather than letting you upload and then refusing.

Product photos covers who owns what.

Improved

The Messages sidebar split your conversations across seven headings — People, Orders, Deals & claims, Group Chats, My Org, Shared, Businesses. Six conversations could arrive under three of them, and finding one meant remembering which.

  • One list, newest first. Anyone who messaged you is now under Conversations, whether that is a company, a person, a group, or the thread hanging off an order or a brand claim.
  • Two places stay their own. My Org is your team's own channels, Shared the ones you host or were invited into. Those you visit rather than receive, so they keep their heading — and the + that makes a new one.
  • Starred sits at the top. It used to render below the trade channels, so starring a conversation pushed it further down the rail. Now it is pinned above the list.
  • A private thread says so on its row. Conversations with a person carry a Private badge — only you and them can read it, and nobody else at either company can. Before, the only hint was which heading it sat under, which disappeared the moment you starred it or dragged it into a section of your own.

Sections you named yourself, what you starred, what you collapsed and what you hid are all untouched. One thing does not carry over: if you had dragged conversations into a particular order inside one of the headings that is gone, those rows now sort by recency under Conversations until you drag them again.

Every block in the Messages sidebar now collapses, including the two that never could.

  • Trade Network folds away. This is the one that needed it most: those channels are re-issued to you on every load, so there is no "leave" — until now the only way to quiet the block was to hide channels one at a time. Click the arrow beside the heading and the whole thing tucks under its own count.
  • PLUG folds away too. Collapsing is not hiding: the heading stays where it is, and one click brings the threads back.
  • A folded section still shows what is unread. Tidying up should not cost you a message, so anything with unread messages keeps its row under the collapsed heading — and a channel that named you keeps its mention badge even if you have muted it. Muted rows with ordinary unread stay folded, because muting already said you did not want to be shouted at.
  • The headings line up. Every one of them now leads with the same collapse arrow in the same place, so the labels sit on a single line down the rail instead of at two different indents.

This is how Slack, Discord and Teams all behave — every section collapses, and the arrow sits in a fixed spot whether or not the section has an icon.

Every price box in My Catalog is the price of one bottle — including the one labelled $/btl · case of 6, which means what a bottle costs someone taking a full case, not what the case costs.

The case total was always worked out for you, but it only appeared once you'd entered a cost for the product. That's backwards: a seller who hasn't set costs yet is exactly the one who needs it. It now shows every time:

Note
$/btl · case of 6 — you type 9.00 = $54.00 for the case of 6

If that line surprises you, the number in the box is wrong.

PLUG will also message you if a price looks like a case total in a per-bottle box — when your figure divided by your case size lands exactly on your own loose price for the same product. It shows you both readings and the arithmetic, and it never changes a price itself. Apply the correction with a button, or tell it the price is right and it stops asking.

Inventory & stock covers all four price boxes.

Sep 26, 2026

Added

Every brand gets a live "where to buy" map at bottlservice.com/brands/<your-slug>/where-to-buy — the link to put in a post, a bio, or behind a QR code on a shelf talker.

  • It answers the question people actually ask. Someone taps the link, shares their location or types a ZIP, and sees the licensed shops near them that have your bottles in stock right now — on a map and as a list, each tapping through to that store.
  • It maintains itself. The map reads live listings, so a shop that sold out or stopped carrying you drops off on its own. No spreadsheet, no pins to move.
  • Nobody can buy their way up it. Shops are listed nearest-first and nothing else — there is no placement to purchase, and we don't show retail prices here. Federal advertising rules let a brand list retailers but not favour one, so the page needs at least two independent shops in the area before it can name any; where it can't, it says so and points to the full shop map instead.

The link appears on your brand page, under the story link, once at least one shop is carrying you — so it never sends anyone to an empty map. The address works before then, if you want to check it yourself.

Fixed

Bottl.Service's own shop sells under a partner retailer's liquor license. That license was the one thing on the platform nothing checked.

It's checked now, at the store it belongs to. The partnership is with one specific premises, so that premises' license is what decides whether those products can be sold. Its sibling store's paperwork doesn't come into it, in either direction.

If that license lapses, the products come off the shelf. They disappear from search, the browse feed, "where to buy" and product availability — the same way any other seller's alcohol does when their license is out.

And a cart that already has them in it gets stopped at checkout. The check runs when the order is placed, not when the item was added, so a basket filled the day before a lapse doesn't slip through. Non-alcohol items in the same cart are unaffected.

Nothing changed while the license is current, which it is. This closes a gap rather than adding a restriction: previously those products would have kept selling through a suspension, because the shop's own listings weren't tied to the license the sale actually ran on.

Two small follow-ups to last week's change about who can message other businesses.

  • No dead buttons. Every "Message", "Reach out" and "Ask" door across the dashboard — on an order's counterparty, an invoice, a business profile, a prospect, the broker directory, and the catalog's brand and offer chips — now appears only for teammates who may open a conversation with another business. Before, a Floor Staff member could tap one and get a refusal.
  • Custom roles update live. If you gave a custom role the Message other businesses permission, that person's Messages page loaded but did not refresh on its own. It now does.

Sep 25, 2026

Added

There was a gap between your two useful roles. Floor Staff can work orders and read the shelf but can't order stock. Manager runs the whole company, money included. Nothing sat in between for the person who actually runs a store.

Premises Admin is that person. They run their shelf, order from distributors, work their store's orders, and read their own store's sales. They never see the company's books — no invoices, no accounting, no tax, no payouts, no wholesale price setting.

Assign them to their shop and everything narrows to it. The role says what they may do; the Locations line on the Team page says where. Assign them to one store and their shelf, their store page, their change-request queue and their orders are all that store's — including the liquor-license and delinquent-list checks that run when they order, which now ask about their shop rather than your whole company. Leave them unassigned and they're a company-wide operations manager instead, which is also a real job.

An owner is different, and always was. An owner works at every location by definition and can't be narrowed to one — the Team page has always refused that, and it still does.

Need them to do one more thing? Clone the role in Team → Roles and tick it. The preset is a sensible default, not a ceiling — if your store manager should upload their own license renewals or set a shelf price you don't want others touching, that's yours to grant.

Also fixed

A Viewer is no longer treated as an owner. A read-only seat was being resolved as the owner internally, which meant a Viewer assigned to one location could still see every location. They're now scoped like any other teammate.

Your sign-in no longer carries a stale list of your stores. A hidden list of locations was written into your login when you first signed up and never properly updated afterwards — so adding a store sometimes left it naming only your first one. Nothing reads it any more; which locations a person may use comes from their Team assignment, which takes effect immediately instead of waiting for their next sign-in.

Fixed

If you run more than one location, an expired liquor license at one of them used to pause alcohol ordering across your whole account — including at stores whose licenses were perfectly current. A liquor license is issued to a premises, not to a company, so that was the wrong question asked of the wrong thing.

The license check now asks about the store that's actually ordering. Place an order from a location with a current license and it goes through, whatever's happening at your other addresses. The location whose license has lapsed is still stopped, and it's the only one.

Table ordering asks about the bar the guest is sitting in. If you run two venues, service at one no longer depends on the other's paperwork.

When we can't tell which location is buying, we check them all. A single sign-in that covers several stores doesn't say which one an order is for, and guessing is the wrong risk to take — picking wrong would let an unlicensed address sell. So in that case the old behaviour stands, and the fix is to make the buying location explicit, which is coming.

Nothing got easier. A store with no license on file still can't order alcohol, an expired license at that store still stops it, and a license you renew still has to be updated on your account. This only stops one address answering for another.

If your account is currently paused and you believe it shouldn't be, Licenses in your dashboard lists every license we hold and which location it belongs to, and there's a re-check button that asks the state again.

Yesterday's fix let a store with a current license keep ordering while a sibling store's license was lapsed. This finishes the job on the side your customers see, and on the side you see.

Your other stores stay on the shelf. An expired license at one location used to hide every location's alcohol from search, the shop feed, product availability and "where to buy". Now it hides that location's alcohol and leaves the rest listed and sellable.

The banner names the store. It used to say your alcohol products were paused, which was true of one address and alarming about all of them. It now says which location expired and that your others keep selling.

Wholesale orders use the location you picked. The cart's Deliver to picker was being ignored by the order — the license check, the delinquent-list check and the location recorded on the order were all worked out from your account rather than from your choice. They now follow the store you selected, which also means the order history finally says which store an order was for. If you pick a location you're not assigned to, the order is refused rather than quietly moved.

Building an order for a customer checks the store you selected. The Location dropdown in the order editor now drives the license warning on the customer card, and the check that runs when you finalize agrees with it.

Nothing got looser. A store with no license on file still cannot sell alcohol. When we can't tell which location something belongs to — a platform-shipped catalog item, or an expired license we can't trace to an address — it stays hidden and the whole account stays paused. Over-blocking a compliant store is a support ticket we can fix in a minute; the alternative is an unlicensed sale.

If your account is paused, Licenses in your dashboard lists every license we hold, which location holds it, and a button to ask the state again.

Sep 23, 2026

Added

If one of your suppliers set your DISTRYB account up for you, there's now a page that finishes it. You'll land on it the first time you sign in, and it explains itself before it asks you for anything — you didn't sign up, so an account existing in your name deserves a sentence of explanation first.

It tells you what's left, including the part that isn't on the page. Finishing setup makes the account yours; adding your liquor license is what lets alcohol orders go through, and the page says so rather than letting you find out at a refused order.

It asks only for what your supplier couldn't know. The name over your door they had; the legal entity on your liquor license and your state tax number are yours. Two fields, usually.

Accepting the seller terms is the part only you can do. Nobody can tick that for you — the record stores who accepted and when, so it has to be the person who actually agreed. Until it's done the account exists but can't order, which is why the page exists rather than letting a supplier switch it on for you.

Once you're set up, you and that supplier can message each other. Finishing the account connects you on the platform, so they appear in your New message list and you in theirs — no cold-outreach cost either way.

Your supplier isn't a member of your account. They can see it exists, and they're recorded as having introduced you. That's all. Nothing has been ordered in your name, and if you weren't expecting the account at all, the page tells you who to email.

For suppliers

Set them up on DISTRYB now appears on any key account with a contact email, next to "Link to a DISTRYB account" — the two answers to the same question. Linking is for a customer already here; this is for one who isn't. It uses the address and email already on the account, asks what kind of business they are, and emails them. Once they finish, the account links itself to your existing record so the sales history follows.

Sep 22, 2026

Added

Businesses close. Until now DISTRYB had no way to say so, and a closed one kept appearing wherever the platform offers businesses to work with — partner search, meeting invitations, account linking, the availability of whatever they distributed.

Staff can now mark a business out of business, with a reason, from the organization editor. It disappears from the places that offer businesses to approach, and its storefront is unpublished. It is reversible: reopening puts back exactly what the closure took down, and nothing the owner had deliberately hidden themselves.

Nothing is deleted. Invoices, orders and history stay exactly as they were, for both sides — a business closing does not entitle us to erase what its counterparties did with it. And messaging is deliberately untouched: if you have an outstanding invoice with a business that shut, you can still reach them about it.

Two businesses may share a name

Signing up with the same business name as an existing account used to be refused outright, and the only way past it was emailing us. That was wrong. A second location, a franchise, and a business reopening as a new company under the name it always traded under are all real — and all of them met a wall.

Now it asks. You see the account that already exists, and if it is not yours you say so and carry on. Signing up with an email address that already runs an account is still refused, because that address genuinely is an existing account — sign in with it instead.

If a retailer you sell to isn't on DISTRYB yet, you had two options: talk them through signing up, or keep them in your private off-platform book where they can never actually order. Neither is "send them a link and let them order."

You can now set the account up for them. You supply what you already know — the name over their door, their address, the email they'll sign in with, and whether they're on-premise, off-premise or both. They get an email, set a password, accept the seller terms, and add their liquor license — then they can order from you.

What you can't do is agree to anything for them. The account exists and you can see it, but it cannot trade until the owner sets their password and accepts the seller terms themselves. That's not a formality we could wave through: the record of who accepted stores the person who clicked, so it has to be them.

A few things it deliberately won't do. It won't create a second account for a business already on DISTRYB — you'll be told who they are so you can connect instead. It won't make you a member of their account; they own it from the first moment, and you're recorded as having introduced them. And it doesn't skip any check a normal signup goes through, including verification and the rule that one license belongs to one business.

Their legal name and tax details wait for them. You know the name over the door; the LLC on the license is theirs to tell us, and getting it wrong is worse than leaving it blank. They're asked when they set the account up, which is also when they'd be asked if they'd signed up alone.

Sep 21, 2026

Added

Talent is in your sidebar now, under My Org, if your business is the kind that hosts guests — retailers and producers. It is where the bartenders, DJs, servers and promoters who asked to be attached to your business are approved or declined.

The page itself is not new. Nothing in the navigation pointed at it, so the only people who ever reached it were the ones who guessed the address. That was more than a missing menu item: approving someone is the step that attaches them to you, and nothing else in the product could do it.

What approving unlocks. A guest checking in at a venue you have linked to your location can say who got them there, and the list they choose from is the talent you have approved. That check-in then credits that person — their Crowd, which is counted in people rather than money, and which belongs to the talent rather than to the venue. Someone you have not approved cannot be named, so their check-ins credit nobody.

Today the page will be empty, and it is meant to be. Requests come from people using the Bottl.Service app, which is still in private beta, so nobody has asked to be attached anywhere yet — including at our own venues. An empty list means the app has not opened to the public, not that you have set something up wrongly.

Improved

If a retailer stopped ordering because it shut its doors, every "win-back" list on the platform still told you to call them. Brand Footprint → Accounts, brand-owner Leads and Territory Leads all ranked quiet customers by revenue at risk, with a Message button beside each one, and none of them asked whether the business still existed.

They do now. Where the state register lists a customer's license as expired or revoked, that account is separated out of the win-back list and labelled with the register's own word. It is not hidden — those accounts are still your history, and they are usually the reason a territory looks emptier than it did. They just stop being presented as someone to chase.

Nothing is guessed. Only a clear statement from the state counts. A license we have no record of, or a state whose register we do not sync, leaves the account exactly where it was — a wrong "closed" would cost you a real customer, so we only say it when the register does.

Also: signing up before your license arrives. You could always create an account without one — a business opening a new location often has everything but. Nothing on your checklist ever asked for it, though, and the verification step said we were checking license details you had never sent. Your setup list now asks for the license, points at the page to add it, and the verification step describes what is actually in review.

Fixed

Our nightly sync asked Illinois for active licenses. That sounds right, and it hid something: when a license expires, it does not come back from that search marked expired — it simply stops appearing, and our copy stays "active" indefinitely. Nothing looked wrong, because nothing was ever reported.

Asking the register directly for expired licenses returned 2,637 that we were showing as active, and 2,481 of those were on the prospect map being offered as live businesses to approach. The sync now asks for both, every run, so a license that lapses arrives marked lapsed instead of quietly going still.

A search that comes back empty is now treated as suspicious, not as an answer. Two identical runs minutes apart disagreed by 5,916 licenses — one prefix returned nothing for no reason, and an empty result is indistinguishable from a category that genuinely has nothing in it. The sync now remembers what each slice returned last time, retries a collapse to zero, and records the run as incomplete if it stays that way rather than publishing a hole as fact.

If one of your own licenses changes status, we check it directly before acting. A bulk search is the part that can hiccup. When it reports that a business on DISTRYB has stopped being active, we look that single license up on its own first, and if we cannot get an answer we leave your record exactly as it was.

Three things were wrong with the optional On-prem and Off-prem wholesale prices on a product, and between them they could leave a price live that you had no way to see.

They saved, and then looked like they had not. The price was stored correctly, but the catalog row never read it back — so the box was empty again on the next load, whatever you had entered. The price was in effect the whole time it looked unset.

They could not be cleared. Emptying the box sent a removal that the save then ignored, so a tier set once was set permanently. Clearing one now removes it, and the product goes back to using your base wholesale price.

And the label invited the wrong number. It read “On-prem case”, which reads as a case total to anyone who sells by the case — but the field is, and always was, a price per bottle, standing in for your base wholesale price. Where you set them, both tiers now say $/bottle, the base tier beside them says it too so the three read alike, and each shows the case total it works out to next to the margin.

⚠️ Worth a look if you use these tiers. A case total typed into one of these boxes has been quoting and charging as a per-bottle price. Open the product and read the per-case figure now shown beside the margin — it states what a buyer is actually being quoted. The margin arithmetic was never wrong; it was answering the question the label asked.

Saving a product in your catalog could delete its photo even when the save had nothing to do with the image. Edit a price and a description, save, and the product photo and its backdrop were removed — the save reported success, nothing warned you, and the pictures were gone the next time the page opened.

Underneath, the save could not tell “I am not touching this image” apart from “I am removing this image”, and treated both as a removal. It now separates them: an image the save never mentions is left exactly as it is, and only one you actually replace, or deliberately clear, is retired.

The photos this destroyed have been restored. Deleted images stay recoverable for a short window, and the originals were put back from it.

This affected product photos and backdrops. The other places you set a single image — a broker headshot, a brand logo, a marketing overlay — were already handling this correctly and were never at risk.

Sep 20, 2026

Added

Yesterday a linked location started showing its check-in count in Company Settings. That answers "is this one working?" and not much else — a business with six linked venues had to open six panels and hold the numbers in their head.

Venue Check-ins is a page now. You will find it in the sidebar, in your own section, if your business is the kind that can host guests — retailers, producers and brand owners. It shows every venue you have linked, with check-ins in the last 30 days and all time, and the totals across all of them.

You see how many, never who. A guest who checks in anonymously chose that, and the venue is exactly who they chose it from. The page counts; it never lists people. That is a deliberate limit rather than a first version waiting to be filled in.

Today it reads zero, and the page says so instead of leaving you to wonder. Check-ins come from guests using the Bottl.Service app, which is still in private beta — so nobody is checking in anywhere yet, including at our own venues. Linking is still the thing worth doing now: counting starts the day guests arrive, and a check-in at an address before it was linked attaches to nobody and cannot be added back.

A broker's commission can be held pending a state broker's license. Until now there was nowhere in the product to record that license once it arrived — Licenses was the one page every other licensed business had and brokers did not.

It is now in the broker navigation under My Org. Add the state, the number and the expiry, and it counts immediately, marked self-reported until the state registry confirms it.

You do not need a location to hold one. Every other business files a license against a premises. A broker has territories, not a shop — Illinois says the broker's license attaches to the individual rather than the company — so there was no premises to file against and the page turned brokers away. Choosing This business files it against the company itself.

Filing it is what releases the money. The license you add here is the same record the payout run reads, so a commission held for a missing license pays out on the next run once the license is on file. Nothing else to click.

A bond is not a license. Surety and tax bonds live in the same list and carry a number, and they do not release a held payout. Only the license the state requires does.

Two fixes ride along, both invisible until they bit:

Releasing a hold now works. The "Hold payout" switch on the admin broker page wrote one record while the payout run read another, so turning it off cleared the copy nobody was reading and the broker stayed held. The switch now writes the record that decides the payout.

**A license-exempt broker is exempt to sell.** Being cleared to operate while a license is pending is not the same as being cleared to be paid, and the two had been answered by the same flag. A broker operating under an exemption now sells normally, sees their commission accrue in full, and is told plainly that payment waits for the license — rather than being told, wrongly, that they are not licensed to broker at all.

A liquor license covers the premises it was issued for. So when a business moves, two things have to change together: the address, and the license. Until today those lived on two different pages, and the order mattered without anything saying so — change the address first and the save was refused, because the license on file was still registered to the door you had just left.

The worse half was quieter. Add a license adds one; it does not replace one. The expired license stayed on file, and selling is paused while anything on file is expired — so a business could enter a perfectly good new license, sit beside the old one, and stay suspended with no way to remove it.

Licenses now has a "Moved locations?" button. One form: the new address, the license issued for it, and a tick beside each license at the old address that the move retires. They are ticked for you, because that is what moving means. Saving does all of it at once, and tells you straight away whether selling is back on.

What it will not do. If the state's record plainly shows that license number registered to a different address, the move is refused and the message names the address the state has — a mistyped number is the likeliest reason, and moving your business onto someone else's license is not a thing we will quietly do. A brand-new license the state has not published yet is fine: it counts immediately and is marked self-reported until the public record catches up.

Your bond stays put. A surety or tax bond secures the tax you owe, not permission to trade at an address, so it does not move and cannot be retired by a move. It also cannot be entered as the license for the new premises.

Licenses could be added and edited, and that was all. A number typed wrong stayed on your record forever — and it was not just untidy. Every license on file counts: one with a date in the past pauses your alcohol sales, and there was no way to take it back off.

Each license now has a Remove button. It is for an entry that should never have been there — a number typed wrong, or the same license entered twice. Removing it takes it off your file and frees the number for whoever does hold it. Renewing? Use Edit instead; that keeps the history.

Removing a license will not bring a suspended store back online, and the screen says so before you do it. A pause is lifted by a valid license, not by deleting an expired one. We closed the back door to match: an account with no license at all can no longer be restored by re-verifying, because there is nothing to verify. Add the license you hold — it takes effect straight away — and then re-verify.

If you are a broker, removing the license you filed puts your payout hold back. Filing it is what released the money; withdrawing it undoes that, the same way round.

Improved

A store could tick every box on the setup checklist — Stripe connected, charges and payouts enabled, sales tax active, name and link set, visibility on — and still show shoppers an empty page, because nothing on that list asked whether anything was listed for sale.

The checklist now includes Something listed to sell, and it links straight to the page where you list things. It reads exactly what a shopper sees: the items switched on for that location.

If we cannot check for some reason, the step is left off entirely rather than shown as incomplete. A momentary hiccup should not tell you your shop is empty.

PLUG can answer this too now. Ask it why a store is showing nothing and it reads your storefront listings, per location, and tells you which ones have nothing switched on. Previously it could only see your stock records — which meant it might reply that you have plenty of bottles while your store page sat empty, since the two are separate things: what you physically hold, and what you have listed for sale.

Venue Check-ins reported one number for the last thirty days. That is the wrong shape for a venue: a month smooths away the only thing worth acting on, which is how this week compares with last, and which nights actually fill the room.

It now shows this week against last week — seven days each, both ending today, so you are always comparing the same weekdays rather than a full week against a partial one. Below that is a fortnight, day by day, with quiet days drawn as quiet rather than skipped. Each venue gets its own two weeks in the table.

A day runs 6am to 6am, in each venue's own time. A crowd that arrives at 11pm and leaves at 1am is one night, not two half-nights on either side of midnight — and if you run venues in different states, each one is counted on its own clock.

Afternoons count. A tasting room open noon to six is measured the same as a bar open until close. Nothing in the day is discarded.

We still only ever show you numbers. A guest who checks in anonymously stays anonymous to you, and that does not change because the figures got finer.

Fixed

If you're a rep or a broker, your Messages page loaded fine but then sat still: a new message from a business you were talking to only appeared after you reloaded or switched conversations. Owners and managers never saw it. Fixed — the list and the open thread now update the moment something arrives, for every role.

One small, deliberate side effect. A finance-restricted room (a private group or deal room your business marked finance-only) now shows up in a rep's or broker's sidebar as a row they can see exists — its name and who's in it — with the preview reading 🔒 Finance-only message. They still can't open it or read anything in it. Floor Staff and Warehouse don't see it at all.

Your locations and your stock locations are two lists. A location is where you sell — its address, its storefront, its licence. A stock location is where the bottles legally are, carrying the bonded permit, the TTB premise id and the state licence for that building. They are usually the same place, and they are linked when they are.

Only your first one was ever created for you. So a second site — one you added yourself, or one that arrived when we imported your account — could sit on your account as a place you operate with no inventory record behind it. Nothing was blocking it and nothing was misconfigured; the record simply did not exist. But stock could not be transferred there, and it never appeared in your movement log or your per-premises tax figures.

Open Warehouses (or Distilleries, Breweries — whatever your business calls them) and any location in that position is now listed, with the reason and a single button that creates the record.

We do not add them for you, on purpose. On some plans a stock location is a billed unit, so creating one is a decision with a price attached. You will see what the button does before you press it.

If a location genuinely holds nothing — an office, a site you have not opened yet — you can leave it exactly as it is. Nothing is wrong with it.

Sep 19, 2026

Added

Until now every member of your team could read every conversation your business had with another business — the supplier's DM, the deal room, DISTRYB's messages to you, and your own questions to PLUG. A bartender saw all of it.

There is now a permission for that: Message other businesses. Owners, managers, bookkeepers, reps and brokers have it by default. Floor Staff and Warehouse do not: their Messages page shows your team channel and the order threads they work, and nothing else. They can't start a conversation with another business either.

Want a particular person in on those conversations? Give them a custom role with the box ticked, under Team → Roles & Permissions. It works exactly like every other permission there.

Two details worth knowing:

  • Order threads stay open to everyone on your team, whoever the other party is — that's the floor's job.
  • Notifications follow the same rule. A new message from another business reaches only the teammates who may read it.

Linking a location to its venue listing has always recorded check-ins there against your business. There was nowhere to see them.

Open Company Settings, find the location, and choose Link to a venue. A linked location now shows its running check-in count.

You see the number and only the number. A guest who checks in anonymously chose that, and you are who they are anonymous from — so this reports how many people came, never who. That is a deliberate limit, not a first version waiting to be filled in.

Two things worth knowing about the count:

It starts the day you link. A check-in at your address before the venue was linked to you attached to nobody, and it cannot be added back. If you have locations you have not linked yet, linking them now is what makes their history start.

Zero is the expected answer today, and the panel says so rather than leaving you guessing. Check-ins come from guests using the Bottl.Service app, which is still in private beta — so an empty count means the app has not opened to the public yet, not that you have set something up wrongly.

A post published as your business can now name the people you made it with. Each of them is asked, and if they accept, the post appears on their profile as well as yours — in front of their followers, not just your own.

It is one post, not a copy. The likes and the replies stay in one place instead of being split across a repost, so what the post actually did is still readable as a single number afterwards.

They have to say yes. Naming someone sends them an invitation, nothing more. Until they accept, the post is not on their profile and their name is not on it — being tagged is not the same as agreeing to carry something, and a business putting its post on someone's page without their word would be the wrong default. They can also take it back later: removing it from their profile does not touch your post.

It fits the approval you already have. If posts from your account need a manager's sign-off, the invitations go out when the post is approved, not when it is written. Nobody is asked to agree to a post they cannot open yet.

A few practical limits. You can name up to ten people, and they are people — a creator, a bartender, a customer who was there — rather than other businesses. That is twice what Instagram allows, because a takeover or a festival booth genuinely involves more than five. A post inside a private group cannot be shared this way, because accepting it would move a private group's post onto a public profile.

Separately, the number of people you can simply tag in a post went from ten to twenty. Tagging is the lighter thing — it needs nobody's permission and the post stays on your page — so it carries the looser limit. Naming a collaborator is the one that asks.

Where this pays off is the work you are already paying for: a launch, a takeover, a tasting. The creator posts it, you are on it, and their audience sees it from someone they follow rather than from an ad.

Sep 18, 2026

Improved

The switch that publishes your line card was called Wholesale Catalog and lived under Company Settings, between Connectors and your W-9. Two things were wrong with that.

The name pointed at the wrong page. Everywhere else on DISTRYB, "wholesale" is the side you buy from — the row in your sidebar that opens the catalogue of what other suppliers sell you is literally called Shop Wholesale. So the one control that makes your products readable by the open internet shared a word with the page where you spend money. It is now Public Catalog, which is what it does and what the page has always said in its own description.

And it sat two rooms away from the thing it publishes. Publishing your line card is a decision about your products, not about your company's configuration. If you are a distributor, producer or brand owner, you will now find Public Catalog nested under My Catalog (or My Products), directly beneath the products it publishes.

Retailers keep it under Company Settings, on purpose. Your catalog page is the one you buy from, and hanging a "publish this" control under it would have suggested you were publishing somebody else's products.

Brokers keep it beside Public Profile, also on purpose. The lines you work off belong to your principals — which is why that row is called Partner Inventory rather than My Catalog — and publishing them is a decision about your own public presence, which is exactly where that decision already lives.

Nothing about the page itself changed: the same two consent lists, the same line-by-line preview of exactly what would go out, the same publish switch. Your settings and your published page are untouched.

Buyer Readiness is greyed out for now

It is marked coming soon and is not openable while we rework the questionnaire.

It was collecting real answers and publishing a readiness score to your trade profile once you passed 30% — so anyone filling it in today would be advertising a figure built from questions we are about to change. Greying it out is the honest state until the new version lands. Anything you have already saved is kept.

Linking a location to its venue listing used to show you the licensed premises nearest your address and ask which one was you. If your venue was not among the closest twelve, there was no way to reach it — and no way to say "none of these".

Now you can type. Search by venue name, by street, or by license number, and we look across a five-mile radius rather than the nearest handful. A license number goes straight to that premises, at any distance, and links it on the spot — it is the strongest proof you can give us that the venue is yours.

Two other things changed on that panel:

It tells you when you are already linked. If this location's licenses are linked to you, it now says so first, by name, instead of offering you a list of your neighbours. That list was the whole problem: your own venue is excluded from it once it is yours, so everything left in it belonged to somebody else — the grocery store, the sushi place, the wholesale club across the road.

One row per place. A single address often holds several licenses, and each one is its own registry record. They now collapse into a single entry, so you are not choosing between two copies of the same venue.

And the explanation sits above the button now, so you can tell whether you need this at all without opening it. If customers can walk into an address — a tasting room, a bar, a shop — link it, and check-ins and customer credit there land on your account. A production site with no public door does not need it.

There is a full guide too: Link your location to its venue listing covers what linking actually changes — check-ins, Crowd credit, customer attribution, and being reachable on the trade map — and how a claim is decided.

Changing a name used to cost you things you could not get back.

If you renamed your company, your brand, a location or your store address, the old address simply stopped working — every link you had printed, shared or pasted into a bio went to a dead page. Your follower count reset to zero. Everyone already following you was quietly shown "Follow" again, and following a second time counted them twice. On Bottl.Service, every post you had been tagged in fell off your own profile, because the tag remembered how your name was spelled rather than who you were.

None of that happens now.

Your old address forwards. For as long as nobody else has taken the name, the old link reaches your new one — /@yourname, /store/your-shop, /brands/your-brand and /broker/yourname all carry over. A card, a shelf talker or a QR code printed under the old name keeps working.

Your followers come with you. So does your follower count, and so do the posts you published before the change — they stay in your followers' feeds rather than disappearing along with the old spelling.

Your tags survive. A post that tagged you under a previous name still shows on your profile. The post itself still reads the way it was written, which is right — that was your name at the time — but it is still about you.

Referral links keep paying the right person. A ?ref= link is now tied to you the moment somebody clicks it, not when they eventually check out. Renaming in between no longer costs you the commission.

Former names are shown. A profile that has changed its @username now says so. If you are about to trust a name, you can see whether it has been that name for long.

Two things worth knowing:

A name you give up goes back to everyone. Once you change it, anyone can claim your old name — the same as Instagram and TikTok. Links already out there keep reaching you until somebody does, but if the name matters to you, the safe move is to keep it.

You can change a name once every 14 days. That already applied to your Bottl.Service @username; it now applies to company, brand, location and warehouse handles too, which had no limit at all.

Your minimum order was editable on two screens — Order Settings and your Public Catalog page — and they did not treat it identically.

Order Settings showed an unset minimum as $0.00, and saving that page wrote it back. So a company that had never stated a minimum could publish "No minimum order" on its public catalog by editing something else entirely on that screen. Those are different promises: "nobody has said" is not the same as "there is none".

It is now set in one place: Orders → Order Settings. That is where it belongs — a minimum is an order rule, enforced at checkout on every order you receive, whether or not you ever publish a catalog. Your Public Catalog page shows it read-only and links there.

Three answers, and they stay distinct:

  • Blank — nothing is published and nothing is enforced.
  • $0 — published as a commitment that you have no minimum.
  • A figure — orders under it are refused at checkout, and the figure is published.

Changes are still recorded in your change log, as they were before.

Delivery days stay on the Public Catalog page, because they are the opposite kind of thing: nothing enforces them, they are a published claim about when you run your routes.

Optional terms you have not set no longer show as "Not stated"

A public catalog with no minimum and no delivery days used to print "Not stated" twice, which read as something you had failed to fill in. Both are optional, so an unset one is now simply left off.

A stated $0 still shows, because it is a real commitment a buyer can rely on.

Suppliers with more than one location say so

A supplier trading from several premises now shows the count beside their line and brand totals. Your premises are still listed by name and city below it, as before. Nothing about the catalog changes per location — what a supplier carries is the same list wherever they ship it from.

Fixed

Your organization's logo is its picture across DISTRYB: on your card in Messages, on your posts, on the partner directory. None of that involves a public profile page.

Company Settings hid the logo anyway. Until you claimed an Organization @handle, the whole Public profile section was replaced by a note telling you to go claim one — a note that never mentioned the logo, so there was no way to tell the control was behind it. Owning brand and business handles did not help; it is specifically the organization handle that section waited for.

The logo and bio are editable now whether or not you have claimed one. Only Publish this profile still asks for a handle, because a published profile needs a URL to live at.

If you run more than one premises, Company Settings now asks which one’s address you mean, and says which it is showing.

It used to pick one for you, and not always the one you would expect: it took whichever location came back first from the database rather than the one marked as your head office. At one multi-location account that meant this screen was editing a different store than the one our staff tools called primary — two addresses, two liquor licenses, and no way to tell from looking.

Both now agree on the same answer: your head office if you have marked one, otherwise your oldest location.

Each premises has its own address and its own license. Changing one here doesn’t move the others, and the license check that runs when you save looks at the license for that door.

If you are assigned to particular locations, the list shows only those.

Sep 17, 2026

Added

Licenses could only ever edit a license you already had. If you moved premises, opened a second location, or started selling into another state, there was no way to record the license that covers it — and changing your address to a state you had no license on file for was refused with “add a license for that state first”, an instruction pointing at a button that did not exist.

There is now an Add a license button on Licenses. Pick the location, the state, the number, the type and the expiry, and it is on your account.

What a new license is worth straight away. It counts immediately — the same standing as the license you typed when you signed up. Until the state registry confirms it, partners see it marked self-reported rather than verified, and Check status pulls the public record once it appears there. A renewal or a new issue can take the state a few days to publish.

Owners and managers only, as with every other change on that page.

Improved

The switch that publishes your wholesale catalog used to sit partway down Company Settings, between a colour picker and an @handle manager. It is the one setting on that page that makes your line card readable by the open internet, and it carries two consent lists and a line-by-line preview that are meant to be read before you tick anything — so it now has its own page at Company Settings → Wholesale Catalog.

It is also gated properly. Company Settings itself has no permission on it, so every role that could open that page saw the publish control — and anyone without permission to use it got an error card for their trouble. The new page only appears for owners and managers, the roles that could actually act on it.

Brokers get it too. It sits under My Org → Wholesale Catalog, and it is the same page — a broker publishes the lines their principals approved them to sell, so the preview and the consent list describe that page rather than a supplier's. Your broker profile links straight to it.

See Brokers & partnerships for what a published line card shows.

A liquor license is issued for a premises. Move, and the old license does not move with you — you need one for the new address.

The check that runs when you change your business address only asked whether you held a license somewhere in that state. So a retailer could move across town, save the new address, and carry on trading on a license registered to the building they had just left — and the platform would still show it as verified, because the license is real. It is simply for the wrong door.

It now compares the address you are setting against the address your license is registered to, and tells you which one is on file if they differ:

Note
Your IL license is registered to 1391 N Illinois Route 48, not 1355 N Illinois Route 48. A liquor license covers the premises it was issued for, so moving needs the license for the new address — add it under Licenses first.

It only refuses what it can actually disprove. A state we do not yet sync, a registry record that carries no address, or an address we cannot read a street number from all pass exactly as before. The two sources also write addresses differently — “2247 Hubbard Ave” against “2247 E HUBBARD AVE, DECATUR, IL, 625262149” — and that is the same door, not a mismatch.

If you have moved, add the license for the new premises under Licenses first, then change the address.

Adding someone to your team used to give them the run of every location you have. That was fine when most companies had one; it is the wrong default the moment you have two.

A teammate you add now starts at the location you are working in, and the Add form shows the full list so you can tick more before you save. Someone who manages two stores gets both; a bartender picking up shifts across the road gets both. You can change it any time from the 📍 control on their row.

Nothing changed for people already on your team. Everyone currently has the run of every location and keeps it — this only sets the starting point for people added from now on.

One thing worth knowing: with no locations ticked, a teammate can work at every location. That has always been what an empty assignment means, and the form now says so rather than letting you clear every box thinking you are locking someone down.

Owners are never restricted to a location.

Fixed

If the only thing waiting on you was an agreement to accept — the Seller Agreement or the Beta Terms — the warning button beside the bell showed its badge and then opened nothing when you clicked it. The agreements had just moved into that one reminder list, and the panel behind the button was still only drawing itself for an expiring licence, bond or document.

It opens now whatever is in the list. An agreement sits there as its own row with a Review & accept button, alongside anything that needs renewing, and reads “Owner/manager” instead if signing is not yours to do.

Three things on the broker dashboard were telling you the wrong story.

Partner Inventory lists your partners again. The page said “You don’t have any active partnerships yet” to brokers who had one — the same screen whose Home card counted it correctly. It was failing to read something it did not need, and reporting that failure as an answer about your business. It now shows the partners the partnership itself names, and if the page genuinely cannot load, it says so rather than claiming you have none.

It is called Partner Inventory now, not Inventory. It is your distributors’ and brands’ stock, read-only — you hold none of it yourself.

Change Requests has been removed from the broker sidebar. It is the approve-or-decline queue for changes to your own shelf, and a broker has no shelf.

“Start a partnership” ticks off. The home checklist never looked at whether you had one, so it stayed open no matter how many you signed.

Sep 16, 2026

Fixed

Brokers — the Join DISTRYB & work with me button on your public profile carries your broker code, and until now that code was being dropped on the way to signup. A retailer who came in through your page was recorded as though they had found us on their own, which meant no commission on the orders they went on to place.

It now sticks. Attribution is first-touch and lasts 30 days, so it survives someone reading around before they commit, and it survives the sign-in step partway through signing up. It credits the store that signed up, not every location that company later opens — the same rule commission follows everywhere else.

Shop the bottles I represent also used to land people in the consumer shop on Bottl.Service, which sells every bottle on the platform whether you represent it or not. It now opens your own line card at distryb.com/supply/your-org: the products you are approved to sell, grouped by the supplier who licenses each one. That page needs two switches on — yours and your principal's — and the button stays hidden until both are, rather than sending a buyer somewhere empty.

See Brokers & partnerships for how to publish it.

Sep 14, 2026

Added

If you ship on your own carrier account, DISTRYB never heard back from it. The label was bought on your account, so the carrier reported the parcel to you and not to us — your own-store orders sat at shipped forever, however long ago the box actually arrived.

Connecting a shipping connector now sets that link up, and the updates arrive on their own: orders and shipments move themselves along as the carrier reports them. Connections you made before this week are covered too — there is nothing to reconnect and no API key to re-enter.

  • A parcel never un-delivers itself. Carriers resend and reorder their updates; once a parcel is delivered it stays delivered.
  • Unknown is not undelivered. A carrier that doesn’t answer in time, a connection that cannot report status, and a parcel still in transit are three different facts and each says so in its own words, instead of leaving a blank space that reads as bad news.
  • Movement shipments — a giveaway parcel, say — show where the parcel got to when you open the page, asked of the carrier at that moment. A batch riding on another shipment’s label follows the link and shows that same parcel, rather than showing nothing and reading as “never shipped”.
  • Delivery status is reported on EasyPost connections. Shippo and ShipEngine say that the connection cannot report it, rather than showing an empty status.

Commission accrues on every order you are attributed to, but paying it out needs a Stripe account on your brokerage — and the Commissions view had no way to create one. It told you a DISTRYB staff member could send you the onboarding link, or to check your email. Both ended in somebody else’s inbox.

There is now a button. Connect payouts from your own Commissions view; any member of your brokerage can complete it.

And the view had been reading the wrong account. Payouts go to the brokerage, but every status on that page was checking a personal, per-person account instead — so a brokerage that had already finished connecting was still told Stripe not connected, and the reverse could read as connected when nothing was. The view now reads the account a transfer actually lands in.

Fixed

Your consumer lanes now check that you hold a liquor licence before they sell alcohol — and until this week, they did not. A shop with no licence on file has nothing to expire, so a check of the form “is this licence still current?” answered yes, and the sale went through. Storefront pickup and local delivery, your own shipping, and venue table orders now all ask the first question first: is there a licence at all, and only then, is it in good standing.

  • Non-alcoholic orders are unaffected. A venue with a lapsed liquor licence can still sell a flat white — the check now sits behind the alcohol test rather than in front of every order.
  • Shoppers get one plain sentence: the alcohol products aren’t available, the rest are. They are not told which licence problem a business has. That is between you and the state, and a shopper cannot fix either kind.
  • If you sell alcohol on any of these lanes, make sure your licence is on file and current.

And pickup now asks for an age. The pickup and local-delivery lane — the one with no carrier handing the box over and checking ID at the door — had no age step at all. Not a weak one: none. It now runs the same confirmation the shipping lane has always had. The confirmation is also now actually read: both checkouts used to report a confirmed age whether or not the shopper had confirmed anything.

Taking a person off your team removed them from your roster and nothing else. Their browser kept the sign-in it already had, so a removed employee could go on reading inventory, pricing, orders and the team list, and your company kept appearing in their account switcher offering to let them back in. There was no way to actually revoke anyone.

Remove now reverses the access, not just the listing. Your company drops off their switcher, their session is ended, and the next page they open asks them to sign in as someone who does not have it. If any part of that cannot be completed, the Team page tells you — you are the only one who can act on it.

  • Someone who works for more than one company keeps the others, with the role each of those companies gave them.
  • A role you create starts with nothing. Permissions used to be decided by naming the roles that may not do something, so any role you invented yourself — a “Cellar Lead”, say — was not on the list and passed. Custom roles now get only what you grant them. This covers your A/R conversations, stock and state authorisations, and the team roster, which carries broker commission rates.
  • The team roster is the owner’s. Managers run everything else; team management has always been owner-only everywhere else in the product, and the roster now agrees.
  • Your staff directory is no longer readable by other companies. The meeting-invite contact picker returned every member’s name, email and role to anyone with a seat at any company who searched for yours. It now returns your published company contact unless you already work together — so a cold meeting invite still reaches you, without handing over your roster.

There were two minimum-order fields for one rule, on two screens, and the inert one was on the page called Order Settings. You could set a minimum there, watch it save, watch it reload correctly — and an order under it still went through, because the number actually being enforced was the one on your Public Catalog card. Nothing errored. The only way to find out was for a small order to arrive.

There is now one field. Both screens read and write the same minimum, so setting it from either place is the same act, and wholesale orders below it are refused as the page always implied they would be.

And five switches that saved but did nothing now say so. Of the settings on that page, only Require full cases and Case sizes are enforced today. Off-premise rule, on-premise rule, default lead time, auto-confirm orders and require order notes each saved your choice, reloaded it, and changed nothing — auto-confirm was ticked and every order still waited for manual review. Each of the five now carries a Not yet in effect badge. We keep the preference and will apply it when the enforcement ships; what changes today is that the page stops implying an effect it doesn’t have.

The Bottl.Service shop showed every visitor Illinois stock, whatever state they were in. A shopper in Michigan browsed rows that could not be sold to them, and the per-product check sitting on top of the grid then quietly swapped Buy for Wishlist, row after row, with no explanation — the grid and the button were answering different questions.

The shop now browses the shopper’s own state. What a visitor sees is what can actually be sold to them, which means your products are shown to the shoppers you are eligible to sell to instead of competing for space in a grid built for one state.

  • An empty result now says why. “Try a different filter” is useless advice when the real answer is that nothing ships to that state and no filter will help. It names the state and offers the wishlist, which is the thing that does something.
  • Illinois stays the fallback while nothing at all is known about a visitor, so a first-time anonymous shopper still lands on a shop rather than an empty page.

+ New Purchase Order offered exactly one option, disabled, reading “No producers available” — on a screen whose entire purpose is ordering from producers. The list was built from a field nothing in the product has ever written, so it was empty by construction and would have stayed empty for as long as the feature existed. Nothing errored; there was simply no way forward.

It now lists the producers who have claimed a brand, under their real company names. Owning a brand is not the same as making it, so a brand owner who doesn’t produce is not offered — a production order sent there would go to someone who cannot fill it.

An empty list now explains itself. If no producer has claimed a brand yet, the page says so, instead of leaving you at a disabled dropdown with no reason given and nothing to do next.

If you store liquor on behalf of another business, Illinois wants three warehouseman returns from you — RL-51 for what came in, RL-52 for what is on hand, and RL-53 for what went out. They were gated behind a condition no company on the platform could satisfy, so they appeared for nobody.

They now appear for the businesses they apply to. While this was broken it produced no error and no wrong figure: it produced a missing return, which is the kind of tax problem that surfaces months later as a letter. If you hold stock for another business, it is worth checking your tax forms against the periods you have already filed.

Liquor you own yourself is unaffected — that has always belonged on RL-26, and still does.

Sep 13, 2026

Added

Running more than one location? On Team, each person now has a locations line under their name. Pick the stores they work at and they see only those — everywhere at once: the shelf, stock counts, the location switcher in their sidebar, message threads for that store, and who can be handed a table order.

  • Nobody is restricted until you say so. Leave it as All locations, which is what everyone has today, and nothing changes for them.
  • No re-invite, no signing out, no new invitation link. Every page they open from then on is scoped to the stores you picked; a tab they already had open picks it up when they next load a page.
  • Owners work everywhere and are not offered the setting. You can also set it on someone you have invited but who has not signed in yet — it is waiting for them when they join.
  • Picking nothing puts someone back on every location.

Fixed

Anyone you invite now lands on one of your locations the moment they sign in. Before this, only the account that created the company was tied to a store: an invited employee or manager opened the dashboard with the location picker on “Select…”, and My Catalog and My Inventory read as if the shelf were empty — at shops with thousands of rows on it.

  • Your shelf, your stock and your saved lists all open on your primary location, and the picker switches between the rest.
  • Floor staff can now actually read the shelf they were given access to, and ask for a change on a row.
  • Store settings open for your managers, not just for you.

Nothing about who can see what has changed: a teammate still only ever reaches the company they belong to, and only the permissions their role holds.

Every row a shelf import created was marked shipping, whatever your shop actually does. That is not a label: a listing counts as shippable to shoppers only when it says shipping, so an import quietly set your whole shelf up to claim mail order — the one way most retailers are not permitted to sell.

Imported rows now take your own answer — the one you gave at signup, or the first time you added a bottle by hand — and fall back to pickup when you have not given one. Set it once and every later import follows it.

Rows already on your shelf have been corrected the same way. Anything you had listed was left exactly as you set it.

The Category column on My Inventory was blank on every row. It was reading a field that page stopped loading, for speed, a while back — and your register's own department was sitting on each row the whole time, unused. It now shows what your register calls the item: Bourbon, Domestic Beer, Wine, RTD. Sorting by the column sorts by the same thing it shows.

Nothing to re-import. On the first shelf we checked, 5,873 of 5,909 rows already carried a department.

Also: the channel allocation card no longer appears for people who cannot change it. Every control on it saves through a permission floor staff do not hold, so it was a card of live inputs and a Save button that could only fail, on a page headed Read-only.

Sep 12, 2026

Added

Retailers now choose how they keep stock: in DISTRYB, or somewhere else — your own register or inventory system — with DISTRYB used for ordering, invoices and online sales.

It matters because DISTRYB can only see the sales that happen through it. A store that sells online here and rings up the rest at the counter has stock in DISTRYB that only ever goes up with deliveries. Treating that number as the truth got two things wrong: the stock watcher warned about "unexplained" stock that had simply sold at the till, and online availability could overstate what was on the shelf.

So it asks. Until you answer, your checklist carries Tell us how you track inventory, and DISTRYB does not treat its stock numbers as yours. Choose Track my inventory in DISTRYB and they are — the watcher checks them and online availability trusts them. Choose I track inventory somewhere else and the numbers here are a reference; the watcher leaves them alone.

You can change it any time under Company → How you track inventory. Connecting your POS is coming; when it lands, a connected register counts as tracking in DISTRYB, and the guide at Docs → Tracking your inventory walks through it.

Floor Staff (bartenders, servers, pickers) now see your shelf. A shop's floor gets My Catalog and My Inventory; everyone else's gets Inventory. Read-only: no editors, no cost, no margin — the same rows you see, minus the money.

What they get instead is Request change on every row. A picker who counts 8 where the shelf says 12, a server who spots a wrong shelf price, anyone who thinks a bottle should be listed or pulled — they say what it should be and why, and it lands on a new page, Change Requests, under your catalog.

You (or anyone with the Manage inventory permission) approve or decline each one. Approving applies the change — the count is set, the price is set, the item is listed — through exactly the checks your own edit goes through, so an on-premise-only bottle still can't be talked onto a take-home storefront. Declining sends your note back. Both sides are notified, and the sidebar badges the queue while something is waiting.

Two things your floor can no longer open. The Bottl.Service Partnership view is the money side of the partnership — your earnings, the sales tax you owe, what passes to Bottl.Service — and it is now for owners and finance roles only; before, a staff member saw a locked page captioned "No partnership activity". Affiliates, Campaigns, Promotions and the org-wide Change Log are likewise off the floor's sidebar: each one spends your margin, and the routes behind them already refused a floor account.

The Partnership report itself also reads faster: it now reads only your own seller-of-record orders for the dates you pick, rather than the whole platform's order history on every visit, and it tells you when a period has more orders than one report shows.

Messages now reaches people, not only businesses. Search a name and you find them; open a business and you can message the company, one of its locations, or a named person on its team.

The difference between those is who else can read it, so it is worth being plain. A message to a business goes to the company: anyone there who handles messages sees it, and the thread survives whoever happens to answer leaving. A message to a person is private — just the two of you. No company is in the room, including your own and theirs. Want a third person? Tick two names and start a group, and everyone in it can see who else is there. There is no in-between where a thread is "for" one person but readable by their colleagues.

An ongoing private conversation can be continued with more people. Use Add people and choose what travels with it: nothing, the last 50 messages, or the last 200. The original conversation stays exactly as it was — this starts a new one rather than rewriting the old — and everyone in the original is told what you shared and who with. "Start fresh" is the default, because sharing somebody else's messages should be something you choose, not something you get by not choosing.

Reaching a person passes the same door as reaching their company. If a business only accepts messages from existing partners, naming someone who works there does not get round that, and a cold introduction costs the same reach credit — refunded, as always, the moment they reply.

Private threads have their own Private section in the sidebar, and say so in the header.

Letting guests pick their bourbon is a good feature and a miserable setup. For every cocktail you had to choose which bottles it could be poured with, find each one in your catalogue, and invent an upcharge for all of them — thirty numbers before anyone could order a drink.

Ask PLUG to do it. "Set up our cocktails." It reads your actual shelf, works out which classics you can make from what's in stock, and comes back with a menu: each drink, a price, and a spirit ladder — well, call, premium — with the upcharge already worked out. Nothing is written until you say yes, and you can change any of it.

Where the numbers come from

PLUG doesn't make prices up, and it will tell you exactly where each one came from. The price of the drink comes from what your house pour costs you, at the spirit cost a bar programme runs. An upgrade is priced on what it actually costs you to pour it instead of the well — so if Woodford costs $2.00 a pour more than your rail, that's what the upcharge is built on.

It is deliberately not your markup on the drink. The price of an Old Fashioned has to cover the labour, the ice, the garnish and the glass, and all of that is already paid for before anyone swaps the bourbon. The only difference between the two drinks is the liquor. Ask PLUG why a number is what it is and it will show you the arithmetic.

A drink you've already priced keeps your price. Run it again after you add three bottles and it will add the new options without touching what you charge.

If a bottle has no cost on file, PLUG says so instead of guessing. And if a cost looks wrong — a bottle priced at under 25c a pour usually means dollars typed into a cents box — it will tell you, because your well is the bottle every other upcharge is measured against.

Tell us what's behind the bar

There's a new Behind the bar panel on Table Ordering: lemons, mint, simple syrup, ginger beer, bitters, cream.

It looks trivial and it is the thing that makes the rest work. Limes and mint aren't stock you count, so your inventory can never tell us whether you can make a Mojito — it only knows about bottles. Tick what you keep and you'll only ever be offered drinks you can actually pour.

Haven't set it yet? We assume you keep the usual citrus, syrups and mixers, and we say so rather than quietly pretending it's your answer. It takes about thirty seconds to make it real.

It also works the other way round: the panel tells you what one ingredient would unlock. Fresh mint would add a Mojito and a Mint Julep. PLUG will say the same about bottles — one of Campari is often three more cocktails.

Your own drinks, not just the classics

The list above is the classics. Your house cocktail isn't on it, and it's usually the one you care most about.

Describe it — "smoked maple old fashioned, rye, maple instead of sugar" — and PLUG writes it up: ingredients, the build your bar reads off the ticket, a price worked out the same way as everything else, and a spirit ladder if it takes one. It checks you can actually make it before offering, and it's your drink on your menu, not something shared with every other bar.

If you name it after a classic, we'll say so. Ask for a "Negroni" and PLUG points you at the real one instead — otherwise you'd end up with two Negronis and a guest's saved usual matching neither. Want your own version? Give it your own name.

It works from a fixed list of ingredients, and that's deliberate: if PLUG could write "elderflower cordial", nothing could ever check whether a bar has it. Anything outside the list goes in the build, where your bartender reads it.

Your regulars get their usual

A guest can save a drink the way they like it — "my Old Fashioned, Woodford if you have it, double, light ice" — and it follows them to any bar on Bottl.Service.

At your bar it is priced at your prices. A saved drink carries the recipe and their preferences, never a number from somewhere else.

And if you don't stock their bottle, we pour yours and tell them so. They see "made with Buffalo Trace" before they order, not after they taste it. Same if they like doubles and you don't offer them.

They only see drinks you can actually make, which is the pantry doing its job again.

Smaller things

Name a drink whatever your menu calls it. Ask for The Ironworks instead of Old Fashioned and that's what guests see, on a drink we still know how to build.

A cocktail can't be shipped. Drinks PLUG adds are marked on-premise only, so they show on your venue menu and never on your storefront.

And a drink goes off the menu when you can't make it. Run out of every bourbon and the Old Fashioned stops being orderable, rather than taking orders the bar can't fill.

Free product could be recorded but not sent. A sample, tasting pour, comp or donation went into the Movement Log, decremented your shelf and fed your taxable-removal gallons — and then you were on your own for getting the box to the venue.

Every giveaway batch now has a ship link beside its delivery receipt, on a new page: put in the delivery address, buy the postage, print the labels.

The boxes are counted for you. Your carrier prices one label per box and sizes the boxes from what is actually in the batch — the same packing rule every order on the platform already uses. You are never asked to guess a number that the carrier is free to disagree with.

It is your carrier account. The labels are bought on the shipping connection you set up, shipping from the premises the stock actually left, with your business as the shipper of record. DISTRYB neither fronts the postage nor appears on the parcel. The recipient's name goes on the label, because an alcohol parcel needs an adult signature checked against an ID at the door.

The address locks when the money is spent. Before you buy, edit it freely. After — the carrier has already printed it, so changing it here would only describe a parcel that does not exist. Void the labels and the address opens again.

What it all cost. A new Postage on giveaways panel on the Movement Log folds to a single total, and opens to a year-by-year breakdown: how many shipments, how much postage. Labels you voided are refunded, so they are not counted.

Your delivery receipt now says what the thing actually was. It used to read "PROMOTIONAL SAMPLE" on every giveaway, including a charitable donation — which is the one thing a venue asking for proof of a donation does not want it to say. A comp now prints as a Donation Delivery Receipt, a tasting as a tasting pour, a sample as a sample.

Sep 11, 2026

Added

Your cocktails had one recipe and one price. A guest who wanted their Old Fashioned made with Woodford had to catch a server and ask, and you had no way to charge for the difference.

Now they can choose on the menu. Set up each drink once — Well, Buffalo Trace +$4, Woodford +$8 — and pick which one is the house pour. A guest who taps Add without reading gets exactly what the menu price says. A guest who wants the good stuff picks it, sees what it costs beside the name, and pays for it at checkout.

You can also offer "make it a double" at your own price, and let people add a short note — light ice, extra lime. Both are per drink, so a Negroni can take a note while a bottle of beer doesn't.

Set it up on My Catalog, on anything sold by the pour. A whole bottle has no spirit to substitute, so the control only appears where it makes sense.

As you set one up, the editor shows what a guest will see — what the drink costs as it comes, and the most it can cost. That catches the two mistakes worth catching: a drink whose only "choice" is the house pour, and a house pour priced above the menu price, which would make the cheapest way to order the drink cost more than the drink. The menu itself quotes the price of the drink as it actually comes, so a guest is never shown a number nobody pays. Changed your mind after adding it to the cart? Tap Change on the line.

The ticket tells the bar what to pour. The substitution reads in gold under the drink name, with the note under that, because a bartender working a rail of tickets is looking for what's different about this one.

A choice only shows if you have the bottle. Point each option at the product it pours from and it disappears from the menu when you run out — no more tickets for an empty bottle, and no guest paying for an upgrade they won't get.

A double counts as two drinks on your service heads-up. One glass arrives, but it's twice the alcohol, and that number is there to help someone decide whether to keep serving. Four doubles is eight drinks.

Guests can ask for a bartender by name

If you want it, a guest can request whoever's working — and it's a request, not a reassignment. The ticket says who they asked for and that anyone can run it, so nobody thinks it belongs to someone else. Tips still go to whoever actually made and carried it.

Tap "On shift" on the floor board when you start. That's what puts you on the list, and it ends when your location does — so forgetting to tap off doesn't leave you there overnight, and a bar open until 4am isn't dropped off the list at midnight either. Only you can change your own shift.

Nobody is listed without choosing to be. A person appears only if they've claimed a Bottl.Service handle and chosen to show they work with you — guests see the handle, never the name on your roster. Being at work isn't the same as agreeing to be named to strangers.

A new Media page under your organization shows every image you have set — your company logo, a photo for each location, the logo of each brand you own, the photo on each product you own or author, and a broker’s profile photo — with where each one appears. Replace, remove or copy any of them from there; each change lands exactly where you would have made it before.

Everyone on DISTRYB can now add a profile photo under Account Settings — the same square crop you know from the rest of the platform. It shows beside every message you send and on your person card when someone opens your profile from a chat, so the people you do business with see who they are talking to. Claim an @alias and you will be asked for one. Your organization’s Media page lists each teammate’s photo alongside its other images.

If you represent a distributor, your catalog showed you MSRP and nothing else — so every call ended with "let me check on price and come back to you".

It now shows the wholesale price, beside a state picker. Three-tier pricing is per destination state, so pick the state your retailer is in and you get that state's posted price for both on-premise and off-premise. It defaults to each partner's home state until you choose.

Only lines you're approved to sell carry a price. Four things it tells you instead of leaving a blank cell:

  • No licence in that state — your partner can't deliver there at all, so there's nothing to offer
  • Not priced — you're approved, but they've never set a price. That's the one worth calling them about
  • Deal not live — the partnership isn't active
  • Varies by zone — that state lets the seller price by delivery area, so confirm before you quote it as firm

The page also totals how many approved lines your partners haven't priced, and names any partner who can't ship to the state you've picked — the two things you'd otherwise only find out mid-call.

Retailers — and increasingly the AI they ask — look for suppliers before they look for a login. You can now publish a public page showing what you carry and where you're licensed to sell it, at distryb.com/supply/your-org.

It never shows your prices. Those still need an account with a captured licence. The page says so explicitly rather than just leaving them out, because a model comparing suppliers reads a missing price as "unavailable" and skips you.

Two switches, not one. Publish at all, and then — separately — whether search engines may list it. Leave the second off and the page is reachable by anyone you send the link to but stays out of search and out of our sitemap. Both are off until you turn them on, and before you do, the settings page shows you exactly what would be published, line by line, alongside a list of what never is.

Two optional trade terms. State a minimum order and your delivery days and they appear on the page. A stated minimum is then enforced at checkout — if you publish "$500 minimum", orders under it are refused, because a number a retailer is quoted should be one your checkout keeps. Leave it blank and nothing is published or enforced; set it to zero and it publishes "No minimum order", which is a commitment.

If you work with a broker, their page can carry your lines too — but only the ones you've approved, and only if you've published. Your switch governs your catalog wherever it appears.

Improved

A bottle that came in through a shelf import with a retailer's white-box photo now shows the way our own product shots do: background removed, the bottle filling the frame, on the same transparent canvas. This runs automatically for new imports, and the existing catalog has been converted. A photo the cutout was unsure about is flagged in the Master Catalog for a quick look rather than shown as-is.

Every product in the catalog now reads the same way: the brand, a hyphen, then the expression — “Black Momma - Vodka 8X Distilled”, “Kenwood - Merlot Red Wine”. The size lives in the Volume field rather than the name, so a brand’s bottles sort together and a search by brand finds all of them.

  • Adding a product — on Add Product or in a CSV import, put the brand in the Brand field and the size under Volume. Whether the name you type starts with the brand or leaves it out, it is styled to match the catalog, and the spelling you typed is kept on the product.
  • Renaming a product, or changing its brand, restyles it the same way.
  • Your shelf keeps its own labels. Inventory rows still show the name from your register export; only the catalog entry is styled.
  • Products that arrived without a brand are matched to a registered brand when their name starts with one. The rest are checked by the AI judge, which names the brand it recognises; where it is not certain, the suggestion waits for a person.

Sep 10, 2026

Added

Your bar, shop or taproom is almost certainly already in the licensed-premises registry Bottl.Service checks people into — nearly 663,000 of them — just not linked to you. Until now there was no way to say "that one is us".

Company Settings → Locations now has Link to a venue on every location. Open it and we look for licensed premises within a mile of that address and show you what we find, closest and best-matching first.

What happens when you pick one

  • If the venue's licence number is one you've given us, or one of your own premises sits within 200m of it under a matching name, it's linked straight away.
  • Otherwise it goes to our team to check, and we'll come back to you. You don't need to email anyone — the request is already with us.
  • Adding this premises' licence number under Locations is the fastest route: it links instantly, with nothing to wait for.

A venue we can't confirm is never linked on someone's say-so. Claiming a premises routes its check-ins, Crowd credit and talent attribution to you and lets you rename it for everyone, so it isn't something we hand over to whoever asks first.

Once a location is linked, check-ins there start arriving against your business.

More of the map is on the map. Venues can only be found — or claimed — once we know where they are, and we have now placed the licensed premises in Florida, Pennsylvania, Washington, Michigan, New Jersey, Colorado and Georgia. That is roughly 130,000 more venues you can search, claim and see on the broker prospect map than last week.

Sep 9, 2026

Added

A broker's My Catalog now shows every product each partner sells, with each size marked Approved, Requested, or not yet approved — instead of only the lines already approved. A broker who thinks they could move something else presses Request on that line; you get a notification, the line shows Requested on the partnership page, and Select requested ticks them all so you can approve in one save. Granting a request clears it. Pricing and stock stay yours; the broker still sells only what you approved.

Improved

On My Inventory and My Catalog, searching a large shelf no longer pulls every row into the browser first. Type a word and the matching bottles come back from the server, capped and fast — the note under the search box tells you when a word alone matched more than it can show, so add another word to narrow. My Catalog also re-filters as you type; it used to wait for the list to reload.

Distributor and producer catalogs and inventory now open on only the products your org owns or carries, instead of scanning the whole platform catalog and filtering it on your screen. Pricing, Movements and the partnership product picker do the same.

A bottle that arrives on a shelf import now joins its brand. When the barcode record names one — Smirnoff, Barefoot, Jose Cuervo — that brand is registered on DISTRYB if it wasn't already, and the product files under it; otherwise the leading words of the name are matched against every registered brand. Brand owners see the bottles shops actually stock in their own catalog and footprint, and the Master Catalog's brand filter finds them. A branded bottle also takes the registry's house-style name, “Brand - Expression”, with the size in its own field; the spelling it arrived with is kept, and your shelf keeps your own label.

Staff can also fold a mistyped duplicate into the right product. Every shelf that carried the wrong entry follows to the right one, keeps its own label, and stops needing review when the right product already states its ABV and size.

When the AI check knows a product for certain, its strength and its bottle size are now written on the product — marked as set by AI, editable, and never over a value a person stated. When it is only fairly sure, the number appears as a suggestion in the Master Catalog with one-click accept, and staff can accept a whole page of them at once. For a bottle it does not know, or one you think is wrong, Research ABV sends it to look the product up on the web and come back with the number and the page it came from.

Shelf rows that were waiting on an ABV and a size clear automatically once the product states both, so a shop's "needs review" pile shrinks without anyone retyping numbers. Values set by AI are flagged on the RL-26 summary until a person confirms them.

Sep 8, 2026

Added

A CSV you upload is a snapshot: every sale rung on your register afterwards makes the count here a little older, and nothing said how old. Two things change that.

Say where a file's counts come from. The upload now asks whether the file is a register export or a sheet you maintain yourself. Name the register and the counts are treated as a mirror of it: Bottl.Service sells only the share of each item you allow on My Catalog, and pauses items once the count is more than a day and a half old — so a missed export can't oversell your shelf. Leave it as "typed by us" for a sheet that is genuinely yours; those counts are never paused.

A re-import touches only what the file carries. Counts refresh from the file; a price or cost it has no column for is left exactly as you set it on My Catalog. And an item the catalog registry hasn’t reviewed yet imports unlisted, waiting on Complete details, rather than going live on a guess.

Or let your register post the file itself. On the Enterprise plan, a key with write access can post your point of sale's export to the API on a schedule — nightly, from a task on the back-office PC — and the shelf stays current with nobody uploading anything. The whole file is one import in your history, undoable as one. Setup is under My Org → Developer, and the reference is at Inventory import.

When you confirm an ABV or bottle size on a barcoded item — on Complete details or in the item's review — that confirmation used to stop at your shelf. The next shop carrying the same barcode typed the same number again, and the catalog entry everyone reads stayed blank.

Now your confirmation is proposed for the catalog entry itself. A reviewer checks it before anything shared is written:

  • against the federal label when the product has one on file, a proof or percent in the product's own name, the barcode record, and what other shops confirmed for the same barcode;
  • a value that agrees with one of those is written to the catalog, with its sources kept; a value the evidence contradicts is not — your own item keeps what you set either way;
  • with nothing to check against, a single shop's confirmation is recorded as provisional: other shops see it as a suggestion marked "confirmed by another shop", never as a fact they inherit;
  • the ones the reviewer can't settle go to DISTRYB staff.

If the brand is claimed, its owner decides. Nothing is written to a claimed brand's product by this flow; the owner is told a fix was proposed, and editing the product is their answer. A brand owner can always overwrite an ABV or size on their products.

You'll see it on Complete details: an ABV already confirmed and checked in the catalog arrives pre-filled and labelled as such.

Two jobs that used to fall to you now start with an AI judge that knows products.

What isn't a drink. The line is drawn at hard goods, merchandise and food, not at alcohol: mixers, syrups, purees, cocktail bitters and garnish cherries are things a liquor store sells, and they import as drinks. Cocktail bitters keep their real strength and are taxed as the pantry item the law says they are, never as liquor. A register export always carries lines the word-check can't place — a pour spout, cups, basket shred filed under MISC. On import, an item nothing else could place is read by the judge the way a person would read it, and anything it thinks isn't a drink imports flagged — never refused, because a model can be wrong and your bottle must never vanish on its say-so. The import summary counts the flags, and on Complete details a "Not drinks?" filter gathers them so you can remove them in one click — or fill one in to keep it.

What it's really worth. Where the judge knows the product — Buffalo Trace at 45%, Crown Royal Apple at 35% — Complete details pre-fills that instead of a flat "typical for spirits," labelled so you can see it came from the judge. Use "Ask AI to check what's loaded" on any page of items to run it on demand; imports run it automatically, and shelves imported earlier are worked through in the background.

The judge suggests and flags; it never writes an ABV or size itself. You confirm on Complete details, and when a value is proposed for the shared catalog the reviewer treats the judge as one source among the label, the name and other shops — it can approve what agrees with it, but a disagreement goes to a person rather than letting a model overrule a label.

Improved

A register export always carries a few lines that aren't drinks and don't say so — cups, a lighter, gift-basket shred filed under MISC. The import keeps them on purpose: it only refuses on words a drink never uses, because refusing a real bottle by mistake is the worse error. That left you deleting them by hand, and the next import of the same file put them straight back.

On Complete details, tick the items that aren't drinks and choose "Not a drink — remove." They're deleted from that shelf, and your future imports of the same file refuse them — listed on the import summary as "removed by you as not a drink." It's your list, for your shop: it never changes what the product is for anyone else.

Changed your mind? Removed items sit under “Removed as not a drink” at the top of Complete details. Restore one and it’s back on the page straight away, with a count of 0 until your next import fills it in — and your future imports stop refusing it.

Also: an import of a file we've seen before no longer spends barcode lookups on barcodes the provider already had nothing for. That was quietly costing a few hundred lookups per re-import against your daily allowance.

Sep 7, 2026

Added

Sometimes the bar makes it, a server carries it over, and it comes straight back. Wrong drink, wrong glass, made with the well when they asked for top shelf. Until now the only button for that was a refund — which closes the ticket and hands money back to someone who would rather just have the drink they ordered.

A served ticket can now be sent back. Pick a reason on the delivered row — wrong drink, not as ordered, quality — and the bar gets a fresh ticket for the same items at no charge. The guest is told it's being made again, and that they haven't been charged twice.

It arrives as a new ticket rather than reopening the old one, and that's deliberate. The first drink really was delivered, at that time, by that server, and your service times should keep saying so. Rewinding the original would quietly improve those numbers every time something went wrong. So the original keeps its clock and its credit, the remake gets its own — a different server may well carry it — and the two are linked, marked Remade and Remake so the row tells you what happened.

Some things it won't do. It won't send back a drink that never left the bar — that one is still a refusal, and refusing unwinds the payment properly. It won't send back a ticket nobody paid for. And one paid drink buys one replacement — it won't send back a remake, it won't send the same drink back twice, and it won't send back a drink you've already refunded. A second failure is a conversation or a refund. Your staff see why, in the moment, rather than a button that fails.

Nobody is paid twice. A remake is free, so it contributes nothing to the tip totals — the tip the guest already left on the original still belongs to whoever earned it. Stock draws again for anything you count in bottles or cans, because a second drink really does leave the shelf; a pour was never counted, so remaking one changes nothing.

It goes to the right server, and it doesn't count as another drink. The replacement is assigned to whoever works that section, the same as any new ticket to that table — it should not sit in a shared pool while a guest waits a second time. And it stays out of the drinking heads-up: a party that sent one drink back drank one drink, not two, and that count is what someone acts on when deciding whether to serve another.

And a bad drink can't flatter your numbers. A remake is quick by nature, so counting it as an ordinary delivery would mean the worse a night went, the better your average read — and a server who carried the replacement would watch their own figure improve because something went wrong. Remakes stay off both averages. They still show on the board with their own time, and still count as a delivery that person made.

Items that import without a confirmed match need a bottle size and an ABV before they can be listed — those two facts feed alcohol tax, so we won't guess them for you. On a big import that meant a lot of items waiting on the same two values, one at a time.

There's now a Complete details page. Open it from the banner on My Inventory, or from the "Complete" link on any unlisted item in My Catalog.

  • Sizes and strengths are filled in already wherever we can read them, marked in gold with where they came from — your own product name (1792 Small Batch 375ML, 1792 Full Proof 125p → 62.5%), the barcode record, or what's typical for the category — and the category is your register's own department (BOURBON, CABERNET, DOMESTIC BEER), not our guess. A bourbon arrives at 40%, a beer at 5%, a table wine at 12.5% — hover to see which. A department we can't place — RTD, seltzer, MISC, sweet or fortified wine — gets no suggestion; those you set yourself.
  • Filter to a category, tick everything shown, confirm once, save. A page of bourbons is a page of 40%s.
  • Only what you can see (or have ticked) is saved. A suggestion on a row you filtered out of view is never accepted on your behalf.
  • Anything still missing a size or ABV stays on the page rather than saving half-finished, so nothing goes out with a strength nobody confirmed.
  • Bourbons no longer skipped as tobacco. The barcode provider files every drink under a bucket named “Food, Beverages & Tobacco”, and that last word was winning — 205 bottles on one shelf were refused as cigarettes on a re-import. The check now reads the part of the label that names the product, and your own department and proof marker count in the bottle's favour. Snacks and candy the provider labels as food are now refused as food, not imported as liquor.
  • Imported before September 8? Re-upload the same file once. Every item picks up its department, and any category we had guessed wrong is corrected to match — you'll see the count on the import summary.

Saving clears the item for listing. It doesn't put anything on your storefront — that stays yours to switch on in My Catalog.

Sep 6, 2026

Added

Bottle service almost always carries one, and until now you had no way to add it — guests saw tip presets and nothing else, which meant a $500 bottle depended entirely on somebody choosing 20% on their phone.

Table Ordering settings now has an automatic gratuity. Set the percentage, and choose whether it applies to every order or only to bottle service. Guests see it as a separate Gratuity line before they pay, never as a surprise on the receipt.

A tip they add on top is calculated on the drinks only. Charging a tip on a gratuity is charging twice for one thing, and a guest who works that out is right to be annoyed.

It is taxed correctly, and that is not the same everywhere. A gratuity a guest cannot remove is treated differently from a tip they choose, and the two states we operate in genuinely disagree:

  • Illinois treats a mandatory charge as part of the taxable sale, so we tax it.
  • New York exempts it only when it is separately stated, called a gratuity, and paid entirely to your staff.

That last condition is a statement about your payroll, and only you can make it — so there is a tick box for it, and it is the one thing that decides whether New York sales tax applies. Leave it unticked and we tax the gratuity. Over-collecting can be refunded; under-collecting turns up at an audit with interest attached.

It counts toward what your staff earned. The gratuity appears in Tips this service alongside voluntary tips, split the same way, so the people who made and carried the drink are credited for it. Every order also records the rate you charged and whether it was taxed, so a return can be reconciled long after you have changed the setting.

One thing we deliberately do not do: move the money. It reaches your account with everything else and you pay your people the way you always have.

Every pickup and table order already carried a six-character collection code, shown to the guest and on your queue. Nothing checked it — so a bag could still go to whoever answered to a name called out across a counter, and the order closed exactly as if someone had asked.

Now the code is required at the moment the goods change hands. Your queue and your floor board each have a field on the last step: ask the guest for the code, type it in, done. Case and dashes don't matter — type what you hear. Everything before that step is unchanged; a ticket still moves from accepted to making to ready on one tap.

When a guest can't produce it, you can still serve them. Phones die and tabs close. Tap Release without code, pick a reason — the guest has no code, or you confirmed who they were another way — and the order goes out. That release is written onto the order with your name and the time, and it shows on the card afterwards in red. A code that was checked shows quietly; the exception is the one worth seeing.

Guests get the code twice, so fewer of them turn up without it: once on the confirmation screen when they order, and again on the order itself in the Bottl.Service app, where it survives a closed tab. It stays on the order after collection too, next to the time it was picked up, so there's a shared record if anyone ever asks. Delivery and shipping orders never had a code and still don't — a courier and an address are a different problem.

Product photos on Bottl.Service sit on a dark studio backdrop with warm lighting. Until now only we could produce one, which was backwards — you hold the correct image of your own bottle.

You can now restyle the photos for products you own. Upload your bottle, and we place it on the backdrop. The bottle, its label and its fill level are left exactly as they are; only what's behind it changes. You see the result before anything is saved, because the tool is very good and occasionally wrong — a label can come back altered, and you get the last word rather than hearing it from a customer.

Send us a cut-out — a PNG with a transparent background. This is the one requirement, and it isn't fussiness. If the bottle is sitting on white, "replace the background" leaves a white rectangle floating on the dark backdrop. We check before spending anything on it and tell you straight away if the image won't work, so a wrong file costs you a moment rather than a bad result to sort out.

A photo with a transparent-looking corner isn't always a cut-out, so we look at the actual image rather than what the file claims — some exports keep a solid background inside a format that supports transparency.

Do it once and every shop gets it. The photo belongs to the product, not to any one store's listing. Every retailer carrying that bottle shows your restyled image on their storefront from then on, without either of you doing anything further.

If you serve people at tables and hand orders across a counter, you were watching two screens: table tickets on the floor board, to-go orders in the Order Queue. During a rush that's how one gets missed.

Both now show on the floor board. A to-go ticket sits in the same list, sorted by who has waited longest, marked TO GO so it reads at a glance. It moves through the same buttons — accept, start making, ready — and the last step asks for the collection code exactly like a table order does. Nothing about your table service changed.

Two things work differently on a to-go ticket, because they have to. You can't assign one to a server: nobody carries a takeaway anywhere, so there's no walk to credit. And refunding one is still done in the Order Queue, where the full payment history lives — the ticket links straight there.

Your service times now cover both. A table order is timed to the moment a server hands it over; a to-go order is timed to the moment the collection code is matched at the counter. Same clock, so "how long did that take" finally means the whole shop. The per-person panel still counts table service only — that's the part a named person actually carried.

The Order Queue keeps every pickup order too, including orders from your online store. The floor board shows the ones for the location you're working.

Fixed

If you imported a shelf and found far fewer items than your file had — or none at all — this is why, and it is fixed.

A row with a barcode only imported if we could identify the bottle: either it was already in our catalog, or a barcode lookup told us what it was. When neither happened, the row was counted as needing attention and nothing was saved. The import still reported success. Oddly, rows without a barcode were saved all along, so having a barcode was the reason an item went missing.

Every row imports now. If we can't identify a bottle, it arrives with the name, count and price from your own file, left unlisted and flagged so you can finish it when you like. Importing the same file again updates those rows rather than duplicating them.

And your bottles now join the product catalog. A barcoded item becomes an entry in the shared catalog rather than sitting only on your shelf. Two shops importing the same bottle land on the same entry, not one each — and it means a brand can claim its own products and supply the proper photo, which then shows up for every store carrying that bottle, including yours.

Nobody else can edit those entries, and a later import never overwrites one that already exists.

Your cost comes across too. If your export has a cost column, it now imports as the Cost on each row — so your inventory valuation and your margins are right from the first upload instead of reading as zero. If your file has both a cost and a retail column and we can't tell which is which, we ask you rather than guess: getting that backwards would either price your shop at what you paid or wipe out every margin. You can re-import the same file later to fill cost in on items that came in without it.

A big import is fast now, and photos arrive on their own. Looking up thousands of barcodes takes about twenty minutes no matter what — the barcode service limits how fast anyone may ask. So a large shelf no longer waits on it: your items land in a couple of minutes with the names, counts and prices from your own file, and the product photos fill in over the next hour or so without you doing anything. You'll see how many are still on their way, so a shelf that looks plain at first isn't mistaken for an import that failed. A small import still gets its photos immediately.

If a barcode lookup is unavailable, we say so. Previously it failed quietly and items just arrived bare. You'll see a note telling you how many came in without photos.

You can undo an import. My Inventory now lists your recent imports for the location you're viewing, each with an Undo. It removes the items that import added. Items it only updated keep their current counts — we didn't record what they were before, and guessing would be worse — and the confirmation tells you exactly that. Catalog entries the import created stay, since other shops may use them.

Negative stock is reported, not silently flattened. Some POS systems write an oversold item as (1.00). Those used to arrive as 0 with no mention — so your count here quietly disagreed with your POS and you had no way to know which rows. They still arrive at 0 (a shelf can't hold less than none), but the import now lists each one with the value your file carried, so the difference is explained instead of discovered.

Items we couldn't identify stay unlisted and are never given a drink type or tax category we had to guess at — those are yours to confirm before anything sells.

Sep 5, 2026

Added

Guests have been tipping on table and seat orders since the day it launched. That money has always gone straight to you — we take our fee on the drinks only, never on a tip and never on tax — but nothing on your side said who earned it. The tip landed in your Stripe balance as one undifferentiated number, and your staff had no way to see what they had made.

That is the part worth fixing, and not only for fairness. Your bartenders are the people who have to accept tickets. An app that hands them work they are not visibly tipped for is an app they quietly stop accepting.

Every ticket now records who took it on and who carried it. Whoever first moves a ticket off the queue is the one who accepted it; whoever taps Delivered is the one who ran it. Both are written once and never moved, so credit does not follow whoever happened to touch the ticket last. Your service history shows the pair — Dana → Mo — or a single name where one person did both.

Tips this service now appears on your orders board, broken down by person. By default a tip splits evenly between whoever made the drink and whoever carried it; you can change that split on the Table Ordering settings page. One person doing both jobs gets the whole thing.

A share nobody claimed is shown as Unassigned rather than quietly given to someone. If you see a number sitting there, it means tickets are being delivered without anyone tapping Delivered — worth knowing, and something a guess would have hidden from you.

This is a record, not a payment. The money is already in your account and you pay your people the way you always have. We are not moving tips, holding them, or taking a cut — we are telling you who earned what so you can pay it correctly.

Tonight, 7 days or 30 days — the buttons above the table switch range. Tonight is instant because it comes from the tickets already on your board; a longer range is fetched, and if it holds more tickets than we read in one go we say so rather than showing you a total that is quietly short. A shift lead can read all of it with ordinary order permissions, so nobody needs a manager login to see what they made.

Improved

Uploading your shelf to My Inventory used to require a column literally named upc, barcode, ean, gtin or sku, and another named for a stock count. Anything else came back as "CSV must have a column named upc…" with the whole file refused.

Nothing was ever wrong with those files. Cash Register Express calls its barcode column ItemNum. The only fix we could offer was "open it and rename a column" — every week, forever.

Your export is now read as it comes out of your register. ItemNum, UPC Code, upc_code, Barcode #, On Hand, Qty On Hand and their relatives all resolve on their own. Punctuation, capitals and underscores no longer change the meaning of a column.

A report is understood as well as a table. Some registers export a printed report rather than a spreadsheet — a title and a date above the columns, or the column labels and the running totals repeated on every single line. Those files were being refused, or worse, misread. They are now read correctly, including the ones with no header row at all, where the first line is already a product.

When the columns still can't be placed, we work them out from the values rather than the names — a column of 12-digit numbers is a barcode whatever it is called.

You always confirm before anything is written. This decides which column becomes your stock count, and a wrong answer would not fail loudly — it would quietly write a case size or a price into your inventory. So you get one screen showing each field, the column we picked and a real value from your file next to it. Change any of them. Nothing imports until you say so.

A deliberate omission: a cost column is never read as your retail price. Getting that wrong would reprice your whole shelf to what you paid for it.

Your own department column is read too, when your file has one. We only sell drinks, so cigarettes and gift cards are set aside rather than filed as liquor — and your department is what tells us which is which. Judging on the product name alone, a bourbon called Cigar Batch looks like tobacco and a carton of cigarettes named after its brand does not. You will see everything that was set aside, listed in full, so nothing goes quiet.

If you run more than one store, the import goes to the location you have selected — and the screen tells you which one before you commit it. Stock is kept per location, so a file from one shop must not land on another's shelf; switch location first if it belongs to the other store.

Only your column headers and five sample rows are ever sent for matching — never your file.

Sep 4, 2026

Added

Your operating hours have always been on your store settings page. Until now they were decoration: they showed on your storefront and nothing checked them. An order placed at 3 a.m. went through exactly like one placed at noon.

Your hours are now enforced at checkout, on both your storefront and your table orders. Outside them, an order is declined with a plain message rather than landing on a floor nobody is standing on.

Last call is its own setting. Tick Alcohol is served at different hours and you get a second schedule, seeded from your operating hours so the usual edit is pulling one number back rather than retyping seven rows. A kitchen open until 2 a.m. that stops pouring at 1:30 can finally say so.

A bar can now enter its real hours. Closing at 2 a.m.? Enter 2:00 AM as the closing time and we read it as the next morning — the row says next day so you can see we understood. That could not be expressed before at all: a window ending earlier than it started was read as zero minutes long, which is a large part of why nothing enforced these.

Your hours are read on your clock, not ours and not your customer's. This mattered more than it sounds: a shopper looking at your page from another time zone was being told you had closed hours early, or that you were still open after you had shut.

Where the state sets a limit, we hold you to it. New York caps on-premise sales at 4 a.m. and package sales at midnight, so we will not save hours past that and we will tell you which day is the problem — we never quietly trim your number down. Illinois sets no statewide hours at all: yours come from your local licence, and in Chicago package-goods hours are negotiated licence by licence. There is nothing for us to check against there, so we take your word and record that you set it.

One thing worth being clear about: a state limit is the outer edge of what we will accept, never permission. Your own licence — and your county or city — can be stricter, and it governs.

If you have never set hours, nothing changes. Orders keep flowing exactly as before until you fill them in.

Sep 3, 2026

Added

Sometimes the bar just can’t make it. You’re out of mint, the last of that bottle went into the drink before theirs, the ticket is for something you stopped pouring at eleven. Until now the only honest answer was to refund — and a refund doesn’t give the processing fee back. You paid roughly seventy cents to make nothing.

Table and seat orders are now held, not charged, until somebody accepts them. The guest’s card is authorised the moment they order, exactly as before from where they’re sitting. The money is only actually taken when a bartender taps Accept.

That makes refusing free. Tap Can’t make this on a ticket nobody has accepted yet and the hold is simply released — nothing settled, so there is no fee to lose, and the guest watches a pending line disappear instead of waiting a week for a refund to land. Refuse one you’ve already accepted and it refunds properly, commission included: we don’t keep a cut of a drink that was never made.

Pick a reason and the guest is told in plain words. “Out of an ingredient”, “Out of stock”, “Couldn’t make it”. They get a notification that says what happened and whether they were charged, which is the difference between a bar that ran out and an app that lost their order.

A ticket nobody accepts doesn’t hold anyone’s money overnight. If six hours pass without anybody touching an order — the last one of the night landed after the taps went off, the tablet died — we release the hold, put the bottle back on your count, and tell the guest they weren’t charged. It can’t reach a live ticket: six hours is far longer than any bar takes to accept a drink.

Accept now means something. It used to be a formality — payment had already confirmed the ticket, so the tap only moved it along your board. It’s now the moment the sale becomes real, which is also why it’s worth doing promptly on a busy night.

Your bar has always had one switch per product — Listed — and it answers a question about your storefront, not about tonight. Two new controls on My Catalog answer the ones your floor actually asks. They only appear at locations that pour.

On the menu. Turn a line off and guests stop being able to order it, immediately. Turn it back on when the delivery lands. It’s deliberately separate from your stock count, because the reason is often nothing to do with stock: you’re holding a bottle back for Saturday, the garnish ran out, you stopped pouring it at eleven. Nothing infers any of that — we don’t track what goes into a glass — so the switch is yours.

Sold as: Bottle or Pour. This decides whether a sale moves your count.

  • Bottle — the whole thing leaves the bar, so your count comes down with it. This is what every existing product already is, and nothing changed for them.
  • Pour — sold by the glass, and your count doesn’t move. We can’t know how much liquid went in, and a guess would be worse than nothing: it would quietly corrupt the count your RL-26 valuation is built on. Keep counting bottles for reordering; just don’t expect a cocktail to do it for you.

A bottle line with an empty shelf is unorderable whichever way the switch is set, and the row tells you so rather than leaving you to wonder why a guest can’t see it.

Guests see an unavailable line greyed out on the menu rather than missing from it — it now reads Unavailable instead of “Sold out”, which was a claim about your shelf we had no business making.

Improved

Page titles across the dashboard had drifted into nine different sizes, and the row of buttons beside them sat at three different heights depending on which page you were on. Nothing was broken — each page was internally consistent — but moving from Home to Orders to Invoices visibly moved the furniture.

Every page now uses one header: same title size, same spacing beneath it, and the page's buttons in the same place relative to the title. On a phone those buttons stack under the title as full-width taps instead of squeezing beside it, which several pages weren't doing before.

Nothing moved that you use — the same buttons do the same things, in the same order.

Sep 2, 2026

Improved

Your staff had one way to confirm an order belonged to the person in front of them: the order number. It’s thirteen characters, it starts with a timestamp, and it contains both an O and a zero. Nobody is reading that aloud across a table during a support act.

Every table and seat order now carries a six-character code — something like K7F‑2M9. The guest sees it the moment they order, and it’s on the ticket your runner is already looking at. They match it and hand the drink over.

It’s built to be said out loud. No O or 0, no I, L or 1 — the letters that get misheard and misread, which is the same reason most venues skip rows I and O. No vowels either, so a code never accidentally spells a word.

The order number hasn’t changed and still appears everywhere it did before. This is a separate, smaller thing that exists only for the moment one person hands a drink to another.

It matters most in seated sections, where a code on your signage tells us the guest is in that section but not which seat — so your runner is the check, and now they have something to check.

Sep 1, 2026

Added

Table Ordering used to assume one shape of room: numbered tables, each with its own QR code. That works for a bar. It doesn’t describe an amphitheatre with reserved rows, a theatre, or a venue where half the crowd is standing.

Now you describe your room as it actually is, and we serve the parts that can be served.

Tell PLUG what kind of place you run. Say “we’re an outdoor venue” or “it’s a wine bar” and it proposes a layout — reserved seating, VIP tables, general admission — then says it back before writing anything. Rename a section, add one, drop one. It only saves what you confirm.

Your rows are yours. Some venues skip rows I and O so they can’t be misread as 1 and 0; plenty don’t. We ask once, and whichever you answer, we use it — we never quietly leave out a row you actually have, or invent one you don’t.

Reserved seating takes orders now. You print one code per section, not one per seat — on your signage or on the ticket. A guest scans it, picks the row and seat already printed on their ticket, and the drink comes to them. Their seat is on the ticket your runner reads, exactly where a table number used to be.

Where ordering doesn’t work, it says so. A lawn or a standing floor has no seat or table number, so there’s nowhere to carry a drink to. Those sections still belong in your layout — you describe your whole room, and the parts that can’t be served are marked rather than quietly missing.

Bars and VIP decks are unchanged. Every code you’ve already printed keeps working exactly as it does today.

Opening the venue stays yours. Describing the room doesn’t open it — only you can switch Table Ordering on, in Table Ordering settings.

Seat tickets say “check ID at the seat”, and here’s why. A table code is stuck to the table, so scanning it means the guest is sitting there. A section code is on your signage, so it tells us they’re in the section — not which seat. They pick the seat themselves, and nothing stops someone picking a seat that isn’t theirs. Your runner is the check that matters, so the ticket says so. (Send-to-a-friend is switched off in seated sections for the same reason.)

When a bank transfer is returned — insufficient funds, a closed account, a debit the bank hasn't authorized — the payment processor charges a fee for the return. Until now DISTRYB absorbed it. From now on it's recovered from whoever made the payment, as the Terms of Service describe.

How it works. The bounce adds the return fee to what that buyer owes. It's collected on their next payment for the same bill — no new debit, no new authorization, nothing to sign. Once collected it's gone, and it never applies twice for the same return.

What it costs. Exactly what our processor charged us for that return, and never more. It's read from the processor's own record every time rather than set as a fixed price, so a payment that costs us nothing to fail — a declined card, for instance — adds nothing. If we can't evidence a charge, we don't pass one on.

What you'll see. A separate "Returned payment fee" line on the payment screen, the pay link, and the invoice confirmation, shown before you authorize anything. Your own bank may charge you its own fee for the same event — that one isn't ours and we can't waive it.

If you're the seller, nothing changes for you. You still receive the full invoice. The return was the payer's, and so is the fee; it never comes out of what you're owed.

Improved

When a customer's payment cleared, bounced, or started on its way, the alert told you the amount and named the invoice — but clicking it dropped you on the Accounting page, leaving you to find that invoice yourself. It now opens the bill it is about, from the notification bell, the notifications page, and the banner on your phone.

A failed payment also says why. "Their bank transfer failed" is the same sentence whether the account was short, closed, or blocking the debit — and those are three different phone calls. You'll now read it as, for example, "Skycity Grill's bank transfer payment of $311.79 for invoice INV-1095-R failed — not enough money in the account. The balance is open again and can be chased."

The invoice remembers it too: until it's paid, a bill whose last payment bounced carries a note at the top saying what happened and when, so the reason is still there a week later when someone actually picks up the chase. It clears the moment a new attempt goes through, and it never prints on a copy you send the customer.

And now your customer is told too. A bank transfer can be returned days after it is made, and until now everything that followed happened on your side — the invoice reopened, your team was alerted, the chase restarted — while the customer's last information was the confirmation screen they saw when they paid. They found out when you rang them. A returned payment now emails the buyer as well, in your business's name, saying what came back, why, that no money left their account, and what is still owed — with a link that pays it again, no login needed. Buyers with a DISTRYB login also get it in their notifications, which opens straight to the bill.

When a bank transfer is returned — insufficient funds, a closed account, a debit the bank hasn't authorized — the payment processor charges a fee for the return. Until now the Terms of Service said nothing about it, so it was simply absorbed. The terms now cover it, on both bottlservice.com and distryb.com, effective September 1, 2026.

What it says. If a payment made through the platform is returned, reversed, or fails after it's been submitted, DISTRYB may recover the processor's return fee from whoever made that payment. It applies to every payment on the platform — an invoice, a wholesale order, a subscription charge, a storage bill, an automatic payment — and to whoever made it, not just buyers.

What it's limited to. The fee can never be more than what the processor actually charges us for that return, and never more than the law allows. It's a recovery of a cost, not a penalty or a finance charge, and it's shown to you before you pay again. Your own bank may separately charge you its own fee for the same event — that one isn't ours and we can't waive it.

What doesn't change. The amount originally owed stays exactly the same and can be paid again with the same or a different method. Where the returned payment was for a sale between two other businesses, the fee is ours to recover from the payer and doesn't change what the seller is owed.

Fixed

The Renew license button in a licence-expiry email now takes you to your Licences page even when you have to sign in on the way. It was already pointing there, but signing in discarded the destination and dropped you on the dashboard home — so you had to go find the page yourself. Any emailed link into your dashboard now survives the sign-in step.

Those emails also stop asking you to reply. Questions about a licence notice go to @distryb in Messages, where the rest of your account conversations already live.

The 0.5% platform fee is a marketplace fee — it exists because two other businesses are trading through DISTRYB. It was never meant to apply when DISTRYB is the one selling to you, and it already didn't apply when DISTRYB is the one buying. Only half of that rule was actually being applied, so customers paying a DISTRYB invoice were charged 0.5% on top for the privilege of paying DISTRYB through DISTRYB.

That's fixed. Paying an invoice where DISTRYB is the seller now costs the invoice plus the bank transfer fee, and nothing else — on the invoice page, the pay link, and "Make a payment". On a $311.79 invoice that's $314.31 instead of $315.88.

The bank transfer fee stays, on every invoice: it's what the payment network charges to move the money, passed through at cost rather than marked up. Nothing changes for invoices between two other businesses, where the platform fee still applies as it always has.

One related fix on the way past: the confirmation dialog on the invoice page still described the platform fee as "max $200" after the cap moved to $500. It now reads the real numbers from the same place the charge does, so what you're quoted and what you're charged can't drift apart again.

Claiming one of your brands opened a review thread with us — and that was the only place anything about it appeared. If you weren't watching Messages, nothing told you the claim had been received, and nothing told you when it was decided.

Now it reaches you properly. When your claim is approved or declined, you get a notification — in the bell and as a push if you've turned those on — and it goes to everyone on your team who can manage your catalog, not just whoever happened to file it. Tapping it opens Brand Partners.

The review thread still exists and still works the same way. If a claim needs more documentation, reply there and we'll reconsider it.

On our side, a new claim now alerts the people who can decide it, and the Brand Claims queue carries a count of what's still waiting. Claims used to depend on someone opening the right page to notice them — which is the part that could leave you waiting.

Aug 31, 2026

Fixed

Illinois bars selling alcohol on credit to a retailer on the state's Delinquent List, and we check that before a wholesale order goes through. The check was looking for the buyer's licence in one place, and almost every business keeps theirs somewhere else — so it was clearing orders without ever comparing them to the list.

It now reads the licences recorded on your locations, the same ones shown on your registrations page.

If you sell: orders to a retailer on the list will now be stopped instead of quietly going through. Nothing changes for buyers who aren't on it.

If you buy and you are on the list: you'll see a message explaining it, and ordering resumes once the state clears you.

Aug 30, 2026

Improved

Table Ordering now requires a verified 21+ check before a guest can order a drink at your venue. Not the self-declared “I confirm I’m 21 or older” box — a real check of a photo ID and a selfie, done in the app.

It takes a guest about a minute, it’s free to them, and they only do it once. We remember it for a year, so a regular isn’t asked again next weekend. You pay nothing — the verification cost sits with us.

Why we changed it. You are the licensed seller of record for every drink your staff carry to a table, which means the dram-shop exposure is yours. A tick-box is the guest’s own word about themselves; it isn’t evidence of anything. If we’re going to tell you the app handles age, that has to be true.

What still needs your staff. Two things a credential can’t answer:

  • A drink sent to another table. The person who bought it verified their age — that says nothing about the guest it’s carried to. Those tickets still read CHECK ID AT THE RECEIVING TABLE, and they always will.
  • Whatever your own licence requires at the point of service. Illinois still expects your server to check ID when they hand the drink over. This strengthens what happens before that moment; it doesn’t replace it.

Ordering online for pickup or delivery is unchanged — a parcel already has the carrier’s 21+ ID check at the door.

Fixed

Advancing an order from Order Queue — Accept, Start, Mark Ready, Complete — was failing. The buttons were there and the cards looked right, but the change never saved: you got "Failed to update order." every time, on pickup, delivery and shipping alike.

That is fixed. The queue now saves through the server, the same way the rest of the dashboard does.

Two things you may notice alongside it:

Order history is kept properly. Each status an order passes through is now added to its record rather than replacing what came before, so an order carries its full timeline — when it was accepted, when it started, when it was ready — instead of only its most recent step.

Wholesale orders are managed from Orders, not the queue. The queue's button for a wholesale order could never have worked: advancing one has to attach your compliance attestation, update the retailer's stock on delivery, and reissue or void the invoice — none of which the queue can do. Those cards now carry a Manage in Orders link straight to the order on the page that handles all of it. Nothing about how you work a wholesale order has changed; the shortcut just goes somewhere real now.

Table orders are unaffected — they run on the Table Orders board, which already saved through the server.

Aug 29, 2026

Added

Invoices → Pay automatically. Connect your bank once and authorize a supplier to take what you owe on the due date, instead of paying each invoice by hand. One authorization per supplier — you choose which, and turning it on for one doesn't touch the others.

Nothing is being taken yet. Setting this up now records your authorization and starts showing you the schedule; we'll tell you before the first automatic payment is ever taken. That's deliberate — it lets you see exactly what would happen before anything does.

From now on, an invoice from a supplier you've authorized tells you so at the top:

Note
This will be paid automatically on 12 September — $311.79 from your linked bank account. Cancel any time before then.

The same line goes in the invoice email, so you get the amount and the date when the invoice is issued — a month ahead on Net 30 terms, not the night before.

You can turn it off for any supplier at any time from the same screen. Invoices already clearing, and anything already paid, are never touched.

Anyone who can already pay invoices for your business can set this up. It's disabled while staff are viewing your account — an authorization to debit your bank has to come from you.

Delivery is open for Washington off-premise locations — liquor stores, grocery and beer/wine specialty shops. It had been switched off here while we confirmed which rules still applied after a 2025 change; the rules covering off-premise delivery were never affected.

A few Washington specifics are built in:

  • Your own staff deliver. Third-party courier services stay switched off in Washington for now.
  • Deliveries run 6:00 a.m. to 2:00 a.m., and must be completed by 2:00 a.m.
  • Someone 21 or older has to accept it, with their age checked at the door. If nobody of age is there, the order comes back to you.
  • Keep the paperwork: who bought it, who accepted it, both addresses, and the times and dates of purchase and delivery.

Bars, restaurants and taverns are not included — Washington's separate on-premise delivery allowance ended on 1 July 2025, so those locations can offer pickup.

An order and its invoice now say where the sale was placed — a small tag beside the number on Orders and Invoices. Bottl.Service, Shopify, POS, Off-platform: whichever it was.

Orders placed in DISTRYB carry no tag, because you are already looking at DISTRYB.

This was invisible before, and one order proved why it needed its own answer: a wholesale sale that came in through Bottl.Service looked identical on screen to every other wholesale sale. The information existed only in the old storefront.

Two things it is deliberately not: it is not the payment channel, and it is not who you sold to. A Bottl.Service sale to a retailer is still a wholesale invoice, still on wholesale terms, still filed the same way. Where an order was placed and how it settles are separate questions, and the tag only answers the first one.

Every existing order and invoice has been tagged, so the history reads correctly too — not just what you take from here.

Table Ordering has a second page: Table Orders, a live board for the people actually working the room. Your setup page keeps the floor plan, the QR tents and the tips — this is what your servers look at during service.

It answers three things at a glance:

  • Who's on this floor. Everyone with access to this location, their job title, how many tickets they're carrying right now, how many they've served, and their average time.
  • What was ordered and where it goes. Each ticket leads with the table — and reads Table 3 → Table 12 when a guest sent a drink to someone else's table — then the drinks, the guest's name and any note they left.
  • How long it's taken. Every open ticket counts up in real time, against the prep time you set, so a drink that's slipping turns amber before anyone has to ask.

"Delivered to table" is now its own step. Before, marking a ticket ready and handing it to the guest were the same tap, so the walk across the floor — the part your servers actually control — couldn't be measured at all. Now a ticket goes ready → delivered, and the board records the time from the guest's order to the moment it landed: per ticket, per person, and per service, with an on-time percentage against your own prep estimate.

Your floor staff get the board in their own sidebar, and they can run tickets from it without any access to your settings, pricing or books.

One change to who sees Table Ordering. It is for licensed on-premise venues — a bar, restaurant or lounge, or a producer's tasting room — and it now attaches to the location that pours rather than to the company. If you hold a bottle shop and a bar, only the bar can take table orders; a warehouse never can. A distributor can't run table ordering at all: the guest at a table is a consumer, and that isn't a sale a distributor is licensed to make.

Disagree with one invoice but happy for the rest? Open it and choose Leave this one to me. That invoice is set aside; everything else from that supplier still pays automatically.

Before this, holding a single line meant turning automatic payments off for the whole supplier and remembering to turn them back on — so the safe thing was never to switch them on at all.

The button sits on the invoice itself, next to the line telling you when it would be paid, because that's where you are when you decide. Press it again to put the invoice back on.

Two things it won't do:

  • Only you can set your own invoices aside. Your supplier sees the same note and has no button — they can't clear a hold you placed on a bill you're querying.
  • Not once the money has started moving. If a bank payment is already clearing on that invoice, setting it aside would look like it stopped the payment, and it wouldn't.

Improved

The machinery behind Pay automatically is live. When automatic payments are switched on for you, here's what happens:

  • The day before, you get an email listing exactly what's going out, from which bank account, with a link to change or cancel it. It leads with "nothing to do", because that's the point.
  • On the due date, one bank transfer covers everything due to that supplier — one transfer, not one per invoice, so you pay the bank fee once.
  • You're told when the money leaves and if it doesn't go through. A failed transfer leaves the balance open so you can pay it another way.

An invoice that already has a payment clearing is never charged again, and an invoice isn't touched before its due date.

It's still off for everyone. We turn it on account by account, starting with anyone who asks — setting up an authorization doesn't switch it on by itself. Nothing is taken from your account until we've turned it on for you and told you.

Opening Invoices used to start pulling the whole book: the list fetched the next page as soon as you scrolled near the bottom, so a long history kept loading whether or not you wanted it.

It now loads a page and waits. Load more sits under the list and tells you how many are left — the same control Orders has always had.

The tabs count properly too. Received and Issued show the real number of invoices matching whatever filter you are on, instead of the number that happened to have loaded so far.

Wholesale buying is state-by-state: a distributor sells to retailers in the states where it holds a licence. The catalogue now works that way too.

If you buy: the distributor list, catalogues, product rows and pricing now show only distributors and distilleries licensed to sell in your state. Suppliers you were never able to order from won't appear at all — including their prices.

If you sell: your catalogue reaches buyers in the states where your licence is verified. Adding a verified licence in another state opens that state's buyers to you; nothing else needs changing.

Your state is taken from your business address, so make sure it's set — if we can't tell which state your business is in, wholesale ordering pauses until you add it.

Aug 28, 2026

Added

Pick your territories during signup and you'll now see what each state actually asks of you — the licence name, the statute, what it costs, how long it takes, and a link straight to the agency that issues it.

Six of the eleven states we operate in require the person soliciting retailers to hold their own licence; the distributor's wholesale licence doesn't cover it. Several of those states also exempt you outright depending on who you represent — in New York, for instance, no permit is needed to solicit for a micro-distillery, farm distillery or micro-rectifier.

Nothing here blocks signing up. Which rule applies often depends on which businesses you end up representing, so this is here to give you a head start on the paperwork rather than to stand in your way. When you're assigned a territory that genuinely requires a licence you don't hold, we'll tell you then.

You can now point the AI you already use at your own DISTRYB data. Go to Developer, create an AI key, and paste the setup snippet into Claude Desktop — or any MCP client — then ask in plain English: what's running low, who hasn't paid me, which orders need accepting, what's selling in my state. No dashboard, no exports, no copying figures into a spreadsheet.

This is on every plan, and any active team member can create a key. It is separate from the Enterprise REST API, which is still its own thing.

Tick let it make changes and it can act as well as answer: accept an order, correct a stock count, propose a payment. Leave it unticked and it can only look.

A key can never do more than the person who made it. It carries that member's current permissions, checked live — so a bartender's key works orders and cannot touch money, a bookkeeper's key records payments and cannot fulfil, and a key stops working the moment its owner leaves the team or has a permission taken away. Promote someone and their key gains the same reach they do.

The same rule now applies to PLUG inside the dashboard: it offers each member exactly the tools their role allows, rather than the full set. If a teammate mentions a tool that has gone, that is why — an owner can grant it back under Settings → Team → Roles.

Anything it can't take back waits for you. Recording a payment, removing stock, registering a SKU in a new state or cancelling an order don't just happen — they appear under Pending approvals on the Developer page with the exact change spelled out, and nothing moves until a person clicks Approve. Accepting orders and correcting counts go straight through, because both can be done again.

Approving runs the change as you, so you can only wave through something you could have done yourself — and two people clicking Approve at the same moment can't record the same payment twice.

If the small ones aren't worth your time, set a limit on the same page: payments at or under it get recorded straight away, anything larger still waits. It starts at $0 — every payment waits — until you deliberately change it, and only someone who can record payments by hand can set it.

When a customer pays one of your invoices, everyone on your team with a finance role — owner, manager or bookkeeper — gets a notification. Three moments, because they mean different things:

  • The money is on its way. A bank transfer takes 1–4 business days to clear. Until now your dashboard showed the invoice as overdue for that whole window while your customer believed they had settled up — which is the gap that produces the phone call. The alert says how long it takes, so there's nothing to chase.
  • It cleared. The payment landed and the invoice is closed.
  • It failed. The balance is open again. This is the one worth acting on, and it used to be the quietest: the invoice simply went back to unpaid and nobody knew to follow up.

Tap the notification to open the invoice. A customer settling several invoices with one payment is one alert, not one per invoice.

Payments made by card, by bank transfer, through the emailed pay link, or from the customer's own dashboard all report the same way.

Open a customer from an order and, under what they owe, you'll now see how they actually pay — "3 of 5 on time · usually 4 days late", with a one-word read: early, on time, a few days late, or often late.

Two things it deliberately won't do:

  • It ignores imported books. Invoices carried over from before DISTRYB record the issue date as the payment date, which on Net 30 looks like paying a month early. Counted, every customer would look like a model payer. They're excluded, and the card says when that's all there is.
  • It won't guess. Under three real payments it says "too few to call yet" instead of showing a verdict. Most customers will read that way at first — the figure fills in as payments come through the platform.

It's a median, not an average, so one invoice that sat open for three months doesn't redefine an otherwise punctual customer — but the worst instance is still recorded. Paying any time on the due date itself counts as on time.

Visible to anyone who can already see invoices.

Improved

Enter a licence number and state during signup and we now look it up in that state's own register. When we find it, the licence type, the name it's held under, and the expiry date fill in automatically — confirmed rather than typed.

Previously we only asked for the number and the state, and recorded every licence with the same generic label. That label is what a lot of the platform reads to work out what a licence actually permits, so filling it in properly makes verification faster and the compliance checks around your account far more accurate.

If a licence isn't in the register yet — a brand-new one, or a state we don't index — nothing is blocked. Type the licence type yourself and we'll confirm it during review.

We'll also tell you if the state lists a licence under a different company name than the one on your account, so you can let us know whether that's a former name or a separate business.

The pay link you send a customer — the one that opens without a login — showed only two names. It now carries the same details as the printed invoice: both businesses' addresses and licence numbers, on the side that sold and the side being billed.

That matters for a wholesale alcohol invoice. A licensed retailer checks the licence number before they pay, and a bill with neither address on it reads as a payment request from a stranger.

If your business has more than one location, each invoice shows the licence and address of the store the goods went to, not a single company-wide one.

Sharing the link looks right too. Pasted into a text message, an email or Slack, an invoice link used to preview as Bottl.Service — the consumer app — with a nightlife photo attached. It now previews as DISTRYB. The preview deliberately shows no invoice number, amount or business name: link previews are generated for everyone in the conversation, so nothing about the invoice belongs in one.

Every DISTRYB link you share now does the same. Account invitations, agreements sent for signature, the Seller Agreement and Beta Agreement, and a broker's public profile all previewed as the consumer app; they now preview as DISTRYB, with the DISTRYB card. A broker's profile shows their own photo where they have uploaded one. On the Bottl.Service side, a store link now previews with that store's own picture and name rather than the generic one.

Fixed

Signing up on a phone could leave you stuck with nothing to press. The bar at the bottom of the chat showed a Create button once your details were complete — but while anything was still outstanding it swapped that button for a small chevron. The one control that finishes signup vanished at exactly the moment you were stuck, and the way forward was an unlabelled arrow.

There is now one button, always in the same place. It reads Continue while there's still something to sort out and Create when you're ready. Tapping it early doesn't do nothing — it opens your setup panel so you can see and fix what's outstanding.

And the bar no longer says you're finished when you aren't. It could read "0 things left" while still refusing to create the account, because the checklist and the final validation were asking the question two different ways. When they disagree it now says "One more thing to check" and takes you to the panel — where, instead of an empty "Still needed" list, you'll see the actual reason, field by field.

If you hit this, nothing you typed was lost. Your answers stay in the panel, and you can pick up where you left off.

Aug 27, 2026

Added

Getting a broker to sell for you started with a form that asked for an email address and gave you no way to learn one. If the address didn't already belong to a DISTRYB account, you filled the whole thing in and got an error telling you to go ask them to sign up. There was a directory of verified brokers — hidden as a second tab on the page the sidebar calls "Find Retailers", where nobody looking for a broker would open it.

Brokers in the sidebar is now My Brokers, with a new Find Brokers page under it that holds both ways of reaching one.

Browse who's already here. Verified brokers, filtered by the states they serve and their specialty, each showing their territory on a map with a count of the licensed retailers inside it. Send terms in two clicks — the states they actually cover come pre-selected. A broker you already work with says so on the card and links to the partnership, instead of offering an invite that would be refused.

Or invite someone who hasn't joined. Enter their email, set your commission, and we send them the offer — the rate, the territories, the categories — along with an invitation to create a broker account. The moment they sign up as a broker on that address, those terms become a live partnership invite on their dashboard. You don't have to come back and re-send anything, and we email you when it happens.

Outstanding email invites are listed with their status, so you can see who hasn't joined yet, change your terms, or withdraw. If something about the offer needs adjusting once they're here — their plan's territory limit, or a state that requires a broker's licence they haven't added — we tell you exactly what and link you straight to it.

The terms screen itself now says who the invite is for before you fill it in, and checks the address while you type, so you know which of the two will happen before you send.

Retailers get a broker directory too. Trade Network → Find a Broker lists the same verified brokers, filtered by the states they serve and their specialty, with their profile and a way to start a conversation. It was built some time ago and nothing in the sidebar pointed at it, so nobody could reach it; it works now and it's where you'd expect it.

Improved

Some states let a shop deliver but not a bar. Delivery is now checked against the licence type of the location fulfilling the order, so a store with both an on-premise and an off-premise location gets the right answer for each one instead of a single answer for the whole business.

California is the first state where this applies. Alcohol sold to-go from an on-premise licence is pickup only there, so those locations will now be offered pickup rather than delivery. Off-premise locations are unaffected.

If a location's premise type hasn't been set, delivery is declined in these states rather than assumed — set the premise type on the location and delivery resumes. Everywhere else, nothing changes.

The Invoices list was built for a desktop and shipped as-is to a phone. Received (you owe) and Issued (owed to you) each claimed a full line, so the two tabs stacked instead of sitting side by side, and every invoice arrived as a tall card listing the seller, the total, the gallons and the date whether you wanted them or not — three invoices filled the screen.

Both tabs now sit on one line, and each invoice is one row in the same shape your Orders list already uses: the number and its status, then who it is with, which town, and when it is due, with the amount to the right. A chevron opens the payment actions for that invoice — the part an invoice has and an order does not. Tapping anywhere else on the row opens the invoice. The heading, buttons, search box and filters are all sized for the screen they're on.

The customer card — the one that opens when you tap a retailer's name inside an order — got the same treatment: smaller heading, tighter balance box, and five action buttons that no longer each demand the height of a thumb.

The order drawer followed. Opening an order on a phone meant a desktop-width header, 13px detail rows and a column of uppercase buttons sized for a mouse; the status, the retailer and the total — the three things you open an order to read — sat below the fold. The header and body are tighter, the rows and line items smaller, and every action in the drawer now lands on the same height instead of two families disagreeing by four pixels.

Nothing moved on a desktop.

Once you're set up, your dashboard offers to install DISTRYB as an app — it opens full-screen from your home screen and can push you on new orders, messages, and alerts. The offer now appears only inside the dashboard, so it no longer interrupts the marketing site or sign-up.

Your business type is the one answer everything else hangs off. It decides which details you're asked for, what the compliance gate expects, and what your dashboard can do — and the words are slippery. "Distributor" sounds right to a brand owner who ships their own cases, and being wrong is awkward to undo once the account exists.

So PLUG no longer takes the word and moves on. Whether you say your role or PLUG works it out from your licence, it now says back what that role actually means — "So you'd be a Broker: you represent other people's brands to buyers in the states you cover, and never own the goods yourself. That right?" — and waits for a plain yes before setting it.

If what you describe fits a different role than the word you first reached for, PLUG goes with what you described.

"Manufacturer" and "distiller" are the Producer role. Both were offered as choices while neither was one, so picking either could leave you somewhere that didn't quite fit. Say whichever word is natural — it's stored as Producer, with the specific kind (distillery, brewery, winery, cidery, meadery) kept alongside it.

You can change it. The setup panel — the bar at the bottom of the chat on a phone, the column beside it on a desktop — has always let you edit your business type, and it now shows what each role means and what it will ask you for, right under the picker. Changing your role there also clears the earlier confirmation, so we know to check the new one with you rather than assuming the old yes still counts.

When you post as one of your locations, it now reaches the people following your business, not just the people following that one store.

Locations are new, so a store starts with no followers of its own. Without this, posting as your Uptown shop would have reached almost nobody — which is a strange reward for using the feature.

What this means day to day:

  • Post as a location and it lands for your business's followers too. The store still signs it, so readers see which shop it came from and can tap through to that store's page.
  • Post as the business and it still appears on every location's page, as before. You never have to write the same thing twice.
  • Following a specific store still works the way you'd expect — you get that store's posts, whether or not you follow the parent business.

One deliberate exception: a separate brand identity you post under keeps its own audience. Its posts go to the people who followed that name, and nowhere else.

Fixed

When you invited someone to represent your business on Bottl.Service, their notification linked to a page that didn't exist yet — it quietly dropped them on their general settings, with your invite nowhere in sight. Anyone who didn't happen to scroll past it never accepted.

Their account now has a Partner tab, and that's where the invite lands. It shows who invited them, what the role is, and — new — exactly what representing you would let them do: post as the business, post as themselves with your badge, go live for you, approve your content. A pending invite also carries a count on the tab itself, so it can't be missed.

Active affiliations live there too, with the Show on profile toggle and the option to leave. Where the commission rule applies — a creator who works for a licensed retailer — the explanation now appears before they accept, not months later when the commission doesn't arrive.

Representing a business is still a social relationship only. It gives no access to your DISTRYB dashboard, and the tab says so.

If you opened a DISTRYB link from inside WhatsApp, Instagram, or a similar app and tapped Continue with Google, you could land on a blank page reading "Unable to process request due to missing initial state." No account, no explanation, no way back.

That page was Firebase's, not ours, and the cause is the chat app rather than anything you did. Those apps open links in their own small browser. Signing in with Google means leaving that browser, proving who you are, and coming back — but you come back to a different browser, and the sign-in it was halfway through is no longer there.

Signing in with your email and password never leaves the page, so it works everywhere. It now sits at the top of the sign-in and sign-up forms, with Google and Apple one tap below for anyone on a browser that can complete the trip. A short note under those buttons says what to do if you arrived from a chat app.

Nothing about existing accounts changed, and Google and Apple still work exactly as before in Chrome, Safari, and every ordinary browser.

Aug 26, 2026

Added

Market Benchmark on Sales Intel used to be an upgrade prompt unless you were on Growth. Now every account sees it, including free ones.

What you get on any plan:

  • The top movers in your state, across all sellers — not just your own orders.
  • How many of them you carry, and which ones you don't. "You carry 6 of the top 10" is the line most people act on.
  • Which way each one is trending, up or down.

Everything comes from real sales across the platform, aggregated and anonymised: no seller is ever named, and a product only appears once enough businesses other than you are selling it for the figure to stay anonymous. If your state is quiet, you'll see that plainly rather than a misleading zero.

On Growth and above the same card keeps the detail it always had — unit volumes, exact momentum, seller counts and your position against the whole market.

Product pages now show a units-sold count — the social proof shoppers look for before buying something they haven't tried.

It's deliberately imprecise. Nothing shows at all until a product has real momentum behind it, and above that the number is rounded down to a band ("120+ sold", "1.2K sold") rather than published exactly. You get the credibility of the number without handing a competitor your precise volume, and a quiet new listing shows nothing rather than something discouraging.

It counts units, not orders, so a six-bottle purchase counts as six. Refunds and cancellations come back out, and only sales made through Bottl.Service are counted — imported order history isn't included.

If you run more than one store, each location can now have a public page of its own at bottlservice.com/@yourstore — its name, its logo, its address, and what's actually on its shelf.

Before this, every location's @handle opened the same page: your company's. A shopper who tagged one store saw the parent business, and the Visit Store button could send them to a different location entirely.

What's new:

  • Your locations are listed on your company page, so a shopper who finds the business can pick the store nearest them.
  • The Shop tab on a location shows that location's stock and prices — not the union of every store you operate.
  • Shoppers can tag a location by name on Bottl.Service. Your store appears in the @-picker under its own name, so a shout-out points at the right shop.
  • You can post as a location. In Store → Post, pick which name signs the post. Anything posted by the company still appears on every location's page, so you never have to write it twice.

A location's page follows the Visibility toggle in Store settings — the same switch that already controls whether that storefront is public. Locations you haven't turned on stay private, and can't be tagged or posted as.

Aug 24, 2026

Improved

Creators who work for a licensed retailer — bartenders, bottle hosts, servers — can be approved as affiliates and can still earn, but only where a retailer's margin bears the commission. Where a producer's or distributor's margin bears it, the referral is still attributed and still shows in their reporting; the commission simply doesn't accrue.

This is the tied-house rule about paying a retailer's staff, and it's the same structure the wider drinks industry already uses: the sale is completed by a retailer, so no supplier money reaches the person recommending the bottle.

Nothing changes for creators with no venue employment — the large majority — who earn exactly as before.

Aug 23, 2026

Added

Your Messages sidebar collects things you're finished with — a closed brand claim, an old order thread, a trade channel you don't follow closely. Now you can put them away.

Hide any row from the ⋯ menu on it. It leaves your sidebar and nothing else changes: the conversation stays exactly as it is, you keep your access, and your teammates' sidebars are untouched. A hidden conversation comes back on its own when someone sends something new — anything already sitting there when you hid it doesn't count, so hiding always sticks. A hidden trade channel stays put until you bring it back. Either way, type its name in the search box and it's there. A "3 hidden · show" line under the search box keeps track.

Notifications, per conversation, from the same menu — three choices, the way you'd expect them:

  • All messages — every message notifies you. This is how conversations have always worked.
  • Mentions only — quiet unless someone @mentions you.
  • Nothing — silent, including mentions.

Trade channels offer the last two; they've never notified on every post, and with thousands of businesses reading them they can't. Anything below All messages also dims the row, drops its badge, and keeps a hidden row from coming back.

All of it is yours alone — nobody else's view or notifications change.

Your trade channel default moved too: it's under Account Settings → Notifications now, not Company Settings. A notification reaches a person, not a business, so you and a colleague can each choose your own — and a level you set on a single channel still overrides it. Whatever your business had set carries over until you pick your own, so nothing changed underneath you. The old Every post option is gone; it never worked, and Mentions only is what it was reaching for. Messages

Three gaps on the collections side of an invoice, all of which used to end at Void — which cancels the sale outright. None of these do that: the money didn't arrive, but the sale still stands.

Decline a reported payment. When a buyer marks an invoice "paid off-platform", you could only ever confirm it — a cheque that never turned up sat there indefinitely with a Confirm button beside it. You can now refuse the claim with a reason. It clears from the invoice so nothing offers to confirm it again, it's kept on the record with who refused it and why, and the buyer is told in the same thread the claim came in on. It moves no money: a report never changed the balance, so retracting one can't either.

Reverse a recorded payment. For the cheque that bounced. You pick the specific payment rather than an amount, and the balance comes back — the original entry stays on the ledger with the reversal beside it, because money received and money taken back are two events. The invoice re-ages on the way back, so one that was already months late returns to overdue rather than quietly dropping out of your overdue views. If that invoice is synced to QuickBooks, the payment there is not unwound — the reversal names it so you can settle that side rather than finding out at reconciliation.

Chase the person, not each business. Request payment now has an account-wide option, off by default. Someone running three of your accounts used to get three emails and three totals, and no answer to "what do I owe you". Turned on, it sends one email to the person, with each business listed under its own subtotal and its own pay button — a pay link belongs to one buyer, so one button over a combined total would collect less than the figure above it. The preview names who it's actually going to and flags any business that can't carry a pay link. Invoices

Freight lived on its own page, so sending an order by LTL meant retyping a lane the order already knew and hooking the paperwork up by hand. Orders now offer Ship by freight beside Schedule delivery: the rating form opens with the lane already filled in from the order, and booking marks the order shipped and links the freight record to it. An order already carrying a booking won't take a second one. Stock still transfers when the load is delivered, not when it's booked — goods in transit aren't on anyone's shelf yet.

Your store settings now say when live carrier rates are available to you, at the moment you're typing a flat fee instead of after you've saved one.

Also fixed, on parcel: buying a label could fail on an order that was already paid, because the recipient's name wasn't reaching the carrier. It never showed at checkout — the quote came back fine — and only bit at fulfilment. Both the checkout and subscription-renewal lanes now carry the name, and an order left unlabelled by this before the fix can get its label on a retry. Orders

States disagree about whether liquor you gave away is taxed, and the rules are narrower than the reason on the ledger row: a pour at a licensed tasting is not the same thing as a free case dropped at a retailer or a donation. Rather than guess on your behalf, DISTRYB now asks. You answer once, per state, per reason, and we stamp who answered and when, then apply that answer everywhere those gallons are described.

Every determination we apply is labelled as yours — who set it, when, and that DISTRYB does not verify it. Illinois is not asked and cannot be overridden: we generate those returns and file against them. Reading determinations needs tax access; recording one needs filing permission.

Separately, storage you hold for someone else is now recorded against the building it actually sat in. Illinois registers a warehouseman for each location and reports against that registration, so the form asks which premises when you have more than one, and the report you download covers that one registration. Tax filing

Improved

The gallonage reconciliation on Tax filing used to roll up stock movements at every location you have, wherever it is. That was right while everyone stored only in Illinois — but an RL-26 is an Illinois return, and a warehouse in another state doesn't belong on it.

It now builds from your Illinois locations, and tells you what it did: how many movements at other states were left out, and — if any location has no state recorded — a warning that its movements were counted here anyway. They're kept on purpose, because a short return is worse than a long one, but you should set that location's state under Warehouses so it files where it belongs. If all your stock is in Illinois, nothing about your numbers changes. Tax filing

Fixed

"List on Bottl.Service", on a catalog that says it can't be listed. If your organisation isn't set up to sell, the chip still took the click, reported success, and left you reading "✓ On Bottl.Service" directly under the banner explaining your products can never be listed for purchase. Nothing had listed. The control is now disabled and says why on itself, and the request is refused on the server too. Setting prices is untouched — a catalog whose prices will never be charged can still carry them — and switching a listing off is never blocked.

"Reach out", on a prospect who has no DISTRYB account. Messaging runs business to business, so a licensee pulled from a state register has nobody at the other end; the button dropped you into an empty inbox. Prospects who aren't on DISTRYB now show Invite to DISTRYB on its own, and prospects who are get Reach out that opens the actual thread, plus View business. My Prospects behaves the same way. Where you can sell

The dashboard read your organisation once, when the page loaded. So buying Table Ordering, adding a bar to your organisation, or having us set your premise type left the navigation showing how things stood before you did it — with nothing on screen to suggest that reloading was the missing step. It follows those facts live now, and it does so for the organisation you're viewing.

Locations had the sharper version of this: adding your second location left you with no location switcher at all, while Company Settings on the same screen happily listed it. The switcher now appears as soon as the location does — and the location you're working in is never switched out from under you.

Aug 22, 2026

Improved

Signing up as a retailer used to require an Illinois sales-tax (IBT) account number, whatever state you were in. If you don't hold one, there was no answer you could give that was both true and accepted. That requirement now follows the state you're actually in: it's asked for where DISTRYB generates the returns that carry it, and simply not asked for anywhere else.

Your account numbers are also stored per state now, so a business that expands keeps a separate set for each — a new state means new numbers, not overwriting the old ones. The Tax filing page shows the account fields for whichever state you're viewing, in that state's own words, rather than only for Illinois.

One consequence worth knowing if you were affected: a number entered on your Tax filing page previously didn't reach your supplier's Schedule R, and a number captured at signup didn't show up on that page. Both now read the same record, so what you see is what gets filed. Tax filing

Fixed

If you had already set up two-factor authentication, DISTRYB could still ask you to set it up — sometimes again in every new tab. The prompt was reading a copy of your security settings held in your browser, which comes back empty after a dropped connection, instead of checking your account.

It now asks the server, so an authenticator you have already added is recognised straight away. If you were seeing the reminder despite being set up, it stops — and the deadline it had quietly started counting against you has been cleared. You can see exactly what is on your account under Account Settings -> Two-factor authentication.

Aug 20, 2026

Added

Open a channel with a supplier, retailer, or broker you work with — invite them by @handle or email, and they accept from an Invites inbox on their side. Everyone in the channel is labelled with the company they're from, so it's always clear who you're talking to. Owners and managers control who can invite, leave, or remove. Messages

Aug 19, 2026

Fixed

Member flat shipping is capped at two orders a month. On the third, the quote quietly reverted to full freight with nothing on the page explaining it. Checkout now says which of three things happened: the rate applied and how many shipments are left this month, it's spent and when it resets, or ordinary carriage was already cheaper so nothing was used.

Aug 18, 2026

Improved

Listeners can ask to come up, and you approve or decline. Removing someone actually cuts their mic rather than just changing a label, a room shows as live only while its host is really in it, and a members-only room is now genuinely members-only instead of open to anyone holding the link.

Aug 17, 2026

Added

Welcome. Your dashboard is live with your catalog, orders, invoices, licences, and tax filings already in it — including any history we imported for you, because that history is the point.

Everything below this entry shipped in the run-up. Start at Getting started, and use Report an issue in the green beta bar the moment something looks wrong. Beta feedback

Improved

Two-factor is now something you manage, not something set up once and never revisited — turn it on, swap authenticators, or replace it entirely from Settings. An authenticator app is still the stronger factor and stays the default, but if you'd rather not install one you can now receive a code by SMS (US numbers).

Aug 16, 2026

Added

The "coming soon" blog is gone, replaced by a real newsroom at /news with three lanes: our announcements, coverage written about us elsewhere, and an industry desk. Anything written by a machine says so on the byline rather than hiding it.

Fixed

Connecting QuickBooks could fail, or check your permissions against a request carrying no credential at all. The handoff is fixed end to end, so Connect works the first time and your sign-in never travels in a URL. Connectors

Aug 15, 2026

Added

You can now download everything we hold about you, or request erasure, without emailing anyone. Deletion shows you a preview of exactly what goes before you confirm, and names the few records we're required to keep.

Improved

Aug 14, 2026

Added

Flat member shipping used to stop at DISTRYB's own bottles, so a member paid full freight everywhere else. Any seller can now opt in from Store settings: members pay the same capped rate per box at your store, your listings get a member badge, and you can switch it off any time.

Improved

Every alert in the tray now buzzes the right device and wears the icon of the app it came from, and the notification panel opens fully on-screen instead of half off the side of a phone.

Aug 13, 2026

Improved

Pricing, UPC, compliance, access, and ownership changes used to sit in separate trails, and money movements left none at all. Change Log is now one record of who changed what and when — including payouts, invoices, KYB decisions, and subscription tier changes.

Aug 12, 2026

Improved

Commission follows the person who made the sale: amending an order re-prices it, a broker who recruits a retailer earns on that retailer's orders, and the partnership prices the order while the assignment only records whose sale it is. Brokers can also see exactly what they're cleared to sell. Brokers

The overnight check now runs for every stock-holding organization, not just the ones on QuickBooks, and judges a recount by its net effect rather than every keystroke along the way. Inventory

Aug 11, 2026

Added

Claim a @handle for your business and it becomes your public address — one profile, all your locations on it, your own two brand colors, and a Shop tab showing what you sell. Handles are first-come and claiming one is decided on our side, so nobody can take a name that isn't theirs.

Aug 10, 2026

Improved

The log stops reloading itself every 45 seconds, stops scrolling sideways, and becomes expandable cards on a phone. Each row now says which premise it happened at, uses your own state's words for the reason, shows live on-hand, and a voided movement says Voided instead of just looking faded.

Aug 8, 2026

Improved

Warehouses — and anyone storing goods on behalf of another business — can now record the stock they hold. Stock checks run against the premise the change targets, so a multi-location operation stops being measured against the wrong shelf.

Aug 7, 2026

Added

Everything one customer owes you, on one page — every open invoice, what has been paid, and the balance — ready to send. Invoices

Viewers can send Sips to creators on the consumer app, staff can be tipped on content they post for your business, and there's an Earnings screen showing what has been earned, what is held, and what has paid out. Payout fees are quoted at what Stripe actually charges, not a rounder number.

Aug 5, 2026

Added

Post an open campaign, review who applies, and run the whole thing in one place: a private brand-to-creator thread, an opt-in group thread for broadcasts and shared Q&A, a review loop with request-changes and resubmit, and structured usage rights so you know what you are licensed to reuse.

Fund it up front, or charge on approve as each deliverable is accepted.

Improved

Selling alcohol now requires a licence that exists in the public record — checked the same way for buyer and seller, on every lane. Expiry resolves against the state registry rather than whatever was captured at onboarding, and a non-alcoholic business is no longer flagged as missing a licence it never needed. Compliance

Aug 4, 2026

Added

The invoice link you already email on every order can now collect the money. Your customer opens it and pays that invoice, or their whole open balance with you, without creating an account. You can also send a payment request that chases everything one customer owes, grouped by location. Invoices

If your plan includes tax automation, you can now file RL-26 yourself rather than waiting for the beta to lift. Out-of-state sellers get Schedule L (RL-26-L) — the Out-of-State Sellers' Shipment Report, which is the return they actually owe, not the RL-26 an Illinois manufacturer or importing distributor files. Your filing state defaults to where the business is located, and you're shown the returns your organization owes rather than every return that exists. Tax filing

Brand owners get a demand profile (velocity, repeat rate, momentum), a retail-readiness scorecard covering the case, pallet, and GTIN-14 details a buyer will ask for, and a cross-org market benchmark of sell-through — aggregated and anonymized, so you can see where you stand without anyone seeing you. Analytics

Jul 29, 2026

Added

The green BETA bar at the top of your dashboard now has a Report an issue button (it's in the ? menu too). Flag a bug, something confusing, or an idea — paste a screenshot straight in with Ctrl+V — and we attach the page, browser, and screen size for you, so nobody has to ask you which screen it was.

You can also just tell PLUG and it will file the report for you. Either way you get a reference number, and the dialog shows where each of your reports stands. How it works

Jul 27, 2026

Improved

Carts with partial or mixed-case quantities now show the per-bottle rate and line total on every line, so what you'll pay is clear before you check out.

Jul 26, 2026

Added

A new "?" menu in the dashboard puts these docs a click away, and PLUG — your AI assistant — is always in reach beside it for account-specific questions like "Is my QuickBooks connected?" or "Where am I registered to sell?"

Brand owners can now reply, react, and repost as their brand on Bottl.Service posts — and get notified when a post mentions them. Your brand shows up with its own voice and badge, right where customers are already talking.

Threads and Mentions give you one place to catch every reply and @-mention across your conversations, so nothing slips through.

Improved

These docs now match your theme — light or dark — with a cleaner layout, the DISTRYB brand header, and a one-tap theme switch up top. Arriving from the dashboard? They open in dark to match. Prefer the other look? Flip it and we'll remember.

Clearer case vs. single pricing, size and ABV on every card, a persistent cart button, and an "Ask the brand" contact for brand-owned listings — so buyers get the details they need without leaving the page.