DATE:
AUTHOR:
Dutchie Product Team
TABLE OF CONTENTS:
    Dutchie POS

    Dutchie POS: ‘Buy more, save more’ discounts; Customer geography and demographic insights; Floor-depleted inventory alert updates; fixes, and more

    DATE:
    AUTHOR: Dutchie Product Team
    TABLE OF CONTENTS:

      Here’s what’s new and coming soon to Dutchie POS. Subject to change.

      Enhancements

      Discounts

      Buy More, Save More: multi-tier discounts. Build a single discount with multiple reward tiers based on item quantity, spend, or weight, instead of creating and managing several separate discounts to get the same "buy more, save more" effect. For example, one discount can give 5% off at 5 grams, 10% off at 10 grams, and 20% off at 12 grams. Configure it from the Discount Wizard's Requirements tab by checking This is a multi-tiered discount, picking a single requirement type (Minimum Items, Minimum Spend, or Minimum Weight), and adding threshold breaks. The Rewards tab then shows a reward field for each tier. At checkout, the register applies the reward for the single highest tier a cart qualifies for (tiers don't stack on top of each other). The Backoffice discount list shows only the parent discount, with the linked tiers rolled up behind it. During the initial rollout phase, a discount can use only one requirement type — weight, spend, or item count can't be mixed within the same discount. Learn more in the Help Center.

      Loyalty & Marketing

      Customer geography and demographic insights. A new Customer Geography tab under the Customers menu in Backoffice provides visual, data-driven insights into where shoppers live and who makes up your customer base, making it easier to plan targeted promotions, optimize delivery zones, and tailor local marketing campaigns:

      • Interactive Customer Heatmap: View customer density mapped by home address for shoppers within your selected timeframe. The map automatically centers on your store location or the highest concentration of customers at a metro level.

      • City Breakdown Table: Review an at-a-glance breakdown of your customer count by city to see exactly which surrounding areas drive the most foot traffic.

      • Demographic Breakdown: Toggle visual demographic charts to analyze customer distributions across Age and Gender.

      • Flexible Date Range Filtering: Filter both geographic and demographic data by custom date ranges to track trends over specific weeks, months, or promotional periods.

      Personalize automated SMS opt-in messages. Instead of sending a generic system prompt for opt-in messages, boost brand trust and recognition, increase opt-in conversion, and reduce spam flags by adding your dispensary name to opt-in messages:

      1. In Dutchie Backoffice, go to Marketing > Configure > SMS Settings.

      2. Scroll to the bottom of the page to Opt-in Message settings.

      3. Select the Dispensary Name format and configure whether to send the message as SMS or MMS.

      4. A preview of your opt-in message dynamically renders based on your selections.

      This setting is location-specific, allowing multi-location dispensaries to customize branding for each storefront.

      Insert merge tags directly into campaign subject lines and preview text — no manual syntax required. Click the new Merge tags button next to the Subject and Preview Text fields in the email campaign builder. Select any available customer attribute (such as First Name or Loyalty Points) to insert it right at your cursor position, and access the same familiar merge tag options available in the email body editor.

      Public API: ExpiresOn on loyalty transactions. The GetLoyaltyTransactions endpoint will return a nullable ExpiresOn date for each transaction, giving API consumers the dispensary-local expiration date for loyalty points earned in that transaction.

      Subject lines shown in the Backoffice campaign list. See a campaign's subject line while browsing the campaigns list, without opening each one.

      Loyalty settings change history. View a full audit log of loyalty configuration changes directly in Backoffice (Settings > Loyalty > History). The log captures the timestamp, the user who made the change, the specific setting updated, and a comparison of the old vs. new values for easier troubleshooting and compliance tracking.

      Inventory & Catalog

      Floor-depleted inventory alert updates:

      • A new dedicated Catalog field (Replenishment quantity) will decouple floor-depleted inventory alerts from online menu visibility (Low Stock Threshold), giving you greater control over when products trigger floor replenishment alerts versus when customers see low-stock warnings online. These fields will both be location-specific for products available at multiple locations, and existing Low Stock Threshold values will be automatically carried over to the new Replenishment quantity field as a starting baseline. Changes made to either field moving forward will not affect the other.

      • Enable or disable floor-depleted inventory alerts per location. Go to Settings > Location and check/uncheck View Floor Depleted Inventory. This will be enabled by default.

      • Learn more about floor-depleted inventory alerts in the Help Center.

      Guidance for missing Catalog Brand data. Backoffice will alert you when products are missing Brand data. A new Missing option in the Brand filter and a one-click Review action on the Catalog page make it simple to filter unbranded products and safely bulk-assign Brands, ensuring accurate browsing and filtering on online menus.

      Optional online-detail copying. When duplicating a catalog product, choose whether to also copy the online description, instead of it copying automatically every time.

      Reporting & Analytics

      More columns on the Daily Sales Report. Added columns that previously required pulling data from multiple separate reports, so a single report covers what used to take manual consolidation across at least three reports.

      More fields on the Inventory Snapshot report. Added Expiration Date, Manufacturing Date, and Packing Date columns, which previously required manually cross-referencing the Inventory Products page.

      New columns on the Manifests grid. Users can add Invoice Comments and Customer Notes as columns on the Products > Manifests grid via the column selector.

      Cash Rounding Adjustment reporting. For locations using "Round Cash Change to Nearest Nickel," reports and the API will include an explicit rounding-adjustment line item, so pre-rounded income and post-rounded cash received can be reconciled instead of leaving an unexplained variance.

      Cost per Unit column on the Discount Detail Report. Added a Cost per Unit column to the Discount Detail Report, useful for reconciling wholesale vendor credits without a manual per-SKU lookup.

      Pay by Bank

      We are rolling out an enhanced e-commerce onboarding experience that consolidates account creation, Dutchie Loyalty enrollment, Pay by Bank linking, and mobile loyalty pass downloads into a single progressive modal sequence.

      This flow engages customers at a natural, low-pressure moment to drive net-new adoption across loyalty and cashless payments without affecting conversion at checkout.

      How it works:

      When a net-new shopper registers via the e-commerce menu, they are guided through a multi-step sequence:

      1. Create an Account: The standard e-commerce account creation flow.

      2. Join Loyalty: Prompts the user to opt into the retailer’s Dutchie Loyalty program (only displays if Loyalty is enabled).

      3. Link a Bank (Pay by Bank): Directs the customer through the integrated Plaid workflow to securely connect their bank account.

      4. Download Loyalty Pass: Offers a downloadable pass or scannable QR code for their mobile wallet (only displays if Loyalty and the Dutchie Mobile App are active).

      Key guardrails:

      • Net-New Registrations Only: Triggers exclusively during initial menu sign-up. It will not re-prompt existing users logging in with incomplete profiles.

      • Zero Checkout Friction: Never displays from the cart or during checkout.

      • Fully Skippable: Every step is optional—declining any step simply advances the shopper forward to complete registration.

      • Dynamic Display: Screens only appear for features actively enabled by the dispensary (Loyalty and/or Pay by Bank).

      Impact on dispensaries & staff

      • No Configuration Required: Automatically activates for eligible dispensaries with Loyalty and/or Pay by Bank enabled.

      • No In-Store Impact: Does not alter POS or in-store workflows; no budtender training is required.

      • Disabling / Opt-Out: There is no self-serve toggle. Dispensary requests to disable this flow must be escalated to the Payment Specialist team for manual processing.

      This new experience will roll out gradually over the next few weeks.

      Customers

      Independent permission for exporting segment customer lists. Exporting a segment's customer list as a CSV will require its own permission (Export Segment Customers), separate from View Customers and View Segments. Retailers can grant broader visibility into a segment without also granting bulk CSV export of customer contact details. Existing users who could already export retain that access; administrators can selectively remove it going forward.

      Members tab on Customer Groups. Customer Group detail pages will include a Members tab with a searchable, paginated list of everyone in the group (name, customer ID, code, phone, email, status), so retailers no longer have to open customer records one at a time to confirm group membership.

      Fixes

      We're releasing fixes for the following issues:

      • Concurrent edits to the same delivery route could return a generic server error instead of a clear conflict message telling the user to refresh and retry.

      • Updating a manifest's status could fail with a server error when the request referenced a manifest that didn't exist.

      • Importing a JSON file for a receive could zero out quantities and costs for the affected items.

      • A customer's displayed loyalty point balance could be out of sync with their actual redeemable balance after certain point-void scenarios, causing "insufficient points" errors even when enough points appeared available.

      • Segment spend-to-next-tier data in Loyalty could fail to match a customer's actual year-to-date spend.

      • During medical patient check-in via ID scan, a customer's minor status was not always being honored.

      • Saving a marketing campaign could fail with an error.

      • A marketing event with an assigned audience could remain in a "not started" state instead of running.

      • The loyalty sign-up prompt no longer appeared at the end of check-in after a Dutchie ID scan.

      • Converting all remaining clones in a clone group to plants could fail with a connection error.

      • Loyalty tier settings accepted negative accrual rates, negative point thresholds, and duplicate tier names without validation.

      • A discount could be saved with an end date before its start date, silently never activating with no error shown.

      • External Loyalty settings accepted whitespace-only values in required fields.

      • A template with a very long name could hide its actions (overflow) menu after saving.

      • The tax rate audit trail didn't record changes to 5 columns (including the Is Excise Tax flag), so the Audit Tables page couldn't show who changed them or when.

      TABLE OF CONTENTS:
        Powered by LaunchNotes