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

    Dutchie POS: See what customers bought from a campaign; Images in push notifications; Image-based ID scanning and check-in via OCR; Campaign events in segments; 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

      Loyalty & Marketing

      See what customers bought from a campaign

      The new Campaign breakdown card on the Performance tab shows what campaign-attributed customers purchased and who those customers were, helping marketers confirm whether campaigns drove the intended product sales and reached the right audience.

      Why it matters

      • Helps marketers see whether campaigns influenced the intended product, category, or brand purchases.

      • Shows customer age and gender breakdowns to validate audience targeting.

      What changed

      • Added a Campaign breakdown card to the Performance tab for one-time and automated campaigns.

      • Added quantity-weighted views for Category, Brand, and Product, plus customer breakdowns by Age and Gender.

      • Included interactive doughnut charts that highlight data on hover and respect campaign filters for attribution window, channel, and reporting range.

      Add images to push notifications

      When creating a Push campaign, a new image upload section allows you to add a single image to your push notification, shown in the campaign preview and in the notification itself.

      Send SMS contact cards

      New Opt-In Message Configuration settings in Backoffice (Marketing > Configure > SMS Settings) allow marketers automatically send a contact card (vCard) to help prevent future SMS messages from landing in a customer's spam folder. Two separate toggles provide options to Send a contact card to newly opted-in customers and/or Send a contact card to existing opted-in customers when they complete a transaction. Contact cards are sent as MMS and billed at the MMS rate. If a customer is already opted in, staff can also manually trigger a card send from the customer's profile in Backoffice by clicking Send contact card next to the Opt-in SMS checkbox.

      Required fields in the campaign builder and workflow builder

      To prevent sending "dead" marketing content, the campaign builder and workflow builder now block you from sending or activating until two things are in place: every button/link in the BeeFree email editor has a destination URL, and every SMS campaign has a message template selected. In the campaign wizard, the Build step's "Next" button is disabled with a tooltip naming the specific button missing a link (e.g., "The button 'Shop now' in this email has no link"); the Final Review step shows a clear warning if no SMS template is selected. In the workflow builder, "Activate workflow" is disabled if any email action node has a button without a link, with error styling on the offending node and a tooltip identifying it by position (e.g., "Message 2 has a button with no link"). These checks also apply to existing workflows — a previously active workflow with a dead button will be flagged invalid if you try to re-activate it after an edit.

      Campaign-related events in segment builder

      Build segments based on whether and how customers interacted with a campaign, including:

      • Email clicked

      • Email opened

      • Email received

      • Email unsubscribed

      • Push opened

      • Push received

      • SMS clicked

      • SMS received

      • SMS unsubscribed

      For example, these attributes can be used to target customers based on their engagement with campaigns in general, or even specific campaigns, such as customers who clicked an email link at least once in the last 3 months.

      Increased SMS sending rate

      We're increasing our per-LSP sending rate from 600 per minute to 3000 per minute.

      Register

      Image-Based ID scanning and check-in via OCR

      With Image-Based ID Scanning, staff can check in customers directly from a single photo of their identification (driver's license, state ID, or medical card) on both Register and Mobile Checkout, eliminating the need for separate barcode scans and manual photo attachments.

      What's new:

      • Single-Step Photo Check-In: Staff can capture or upload an ID photo to automatically extract customer details and trigger the standard match and check-in workflow in one fluid motion.

      • Smart "Fill-in-the-Blanks" Completion: If an ID is worn, damaged, or partially obscured by glare, OCR locks in the fields it confidently read and prompts staff to fill in only the missing information. This prevents full scan rejections and keeps check-in moving quickly.

      • Built-in Duplicate Prevention:

        • Full matching requires confident detection of First Name, Last Name, Date of Birth, and ID Number before running customer lookup.

        • Extracted data follows a fill-blanks-only safeguard to ensure existing profile information is never inadvertently overwritten.

      Where to find it:

      • Register: After clicking or tapping the Scan ID button, a new Upload a photo instead option appears in the "Scan driver's license, state ID, or medical ID" window.

      • Mobile Checkout: Available directly within the new "Check In" workflow (Select Path > Select Register > Check In).

      • Optional ID Image Storage: ID photos are only saved to customer profiles when explicitly requested by staff during check-in or profile creation.

      How to enable:

      This feature is controlled independently per location:

      1. In Backoffice, go to Settings > Location

      2. Enable the desired platform toggle:

        • Point of Sale: Image-based ID scanning (OCR)

        • Mobile Checkout: Image-based ID scanning (OCR) - Mobile Checkout

      Compliance

      Medical allotment overrides scoped strictly to medical sales

      We’re narrowing how medical allotment overrides work to ensure tighter compliance across your transactions. Allotment overrides set on a customer profile will only apply when the customer type is set to Medical, and only when Dutchie POS is configured not to pull live allotments from an external traceability system like Metrc. If you switch a Medical customer's type to Recreational to make an adult-use/recreational purchase, or if live state traceability allotments are enabled, Dutchie POS will not apply manual overrides.

      Allotment override tracking

      Our September 17 announcement incorrectly stated we were adding a new static report for allotment override tracking. Instead, we've added columns to the Customers list in Backoffice: Allotment Overridden (yes/no), Current Limit Override, and Max Limit Override, along with a checkbox for Only show allotment overrides, which filters the Customers list to only show customers whose limits have been overridden. The Bulk actions menu in the Customers list also now includes a Reset allotments option. To view the history of allotment overrides for a customer, including which employee did an override and when, open the customer profile and select History > Profile history.

      Washington CCRS validation errors in the Register

      The Register now shows more specific, actionable CCRS validation errors. Learn more in the Help Center.

      Purchase Orders

      We’re adding a Total Cost field to the Receive Details modal on Purchase Orders (Products > Purchase Orders > Add Item). Editing Total Cost now automatically calculates Est. Price Per Unit and vice versa, instead of requiring you to calculate and enter a rounded per-unit price by hand.

      Fixes

      We're releasing fixes for the following issues:

      • Selecting a purchase order during a receive could duplicate items in the add-items table.

      • Smart tag filters for grams/concentration returned zero results for decimal values under 1 (e.g., 0.5), on both catalog and inventory filters.

      • The receipt audit tool could flag loyalty point adjustments as discrepancies, even though they weren't.

      • A multi-tier discount with a maximum redemption cap could discount only one eligible item instead of every eligible item in the cart.

      • A bundled discount could find and apply to only one bundle when a cart contained two or more separate qualifying bundles.

      • Clicking a recipient's name in a campaign's recipient list didn't open their customer profile.

      • Selecting a BioTrack Receipt Audit date range wider than the allowed limit didn't show the alert explaining why, leaving the restriction unexplained.

      • The Discount Detail Report's CSV export was missing the "Cost Per Unit" column that's shown in the on-screen report.

      • The budtender loyalty enrollment leaderboard could count enrollments from sources other than POS, letting a non-budtender account appear as a top enroller.

      • Closing out a register could fail with a server error.

      • Voiding a transaction could fail with a generic "check your PIN" error even when the PIN was correct — the void flow included an unrelated permission check that was silently failing for some staff accounts.

      • Moving a package to a new room could fail with a database error if that package had never been assigned a room, which could happen when it was created through an Inventory Audit adjustment rather than a receive.

      • Searching within the Bill of Materials list (Manufacturing > Assemblies > New Assembly) could clear the search and reset the list while typing.

      • The AI bulk price-update tool in Backoffice didn't recognize that a product selection made via checkboxes was already the intended scope, requiring you to explicitly tell it which products to update.

      TABLE OF CONTENTS:
        Powered by LaunchNotes