Vendors / Bar, brewery & taproom

UNION POS

Bar-and-nightclub POS engineered around tab volume — claims 1,000+ concurrent tabs with no lag and one-button end-of-night close, plus first-party handheld (Union Pocket), KDS, guest mobile ordering, waitlist and a 'Status' loyalty program. A public knowledge base at support.getunion.com documents permissions, reports and hardware in real detail, but it is thin (about twenty articles, mostly troubleshooting) with no menu-build, inventory, KDS-config or API coverage, and no software pricing is published.

scored live legacy rubric

Claims in scope
224
Scored
41
Assessed
39
Unknown
185
Not applicable
90
Values challenged
4
83% of in-scope claims are unknown. This record measures what UNION POS publishes at least as much as what it does. A vendor that documents little scores low here whether or not the capability exists. Absence of evidence is recorded as unknown, never as no.

Identity

Owner
Union (getunion.com) — private; no owner, investor or parent disclosed on the site
Parent
ATX Innovation
Who it is for
High-volume bars, nightclubs and pubs running very large numbers of concurrent tabs; also sells beverage-brand on-premise insight as a second revenue line
Site
https://getunion.com/

Pricing

transparency: quote-only · unit: unknown (quote-only) · processor lock-in: unknown

Software
No pricing published; demo/sales call only. 24/7 support stated to be included at no additional fee.

Capabilities

Every claim is binary and checkable. Grades: A primary documentation · B product documentation · C pricing or feature page · D marketing claim · E third-party reporting · F inference with no source. A yes on a differentiator claim requires A or B.

Order capture & FOH workflow

Unknown

Provides a graphical floor-plan editor where an operator can draw sections, place tables of varying shape/capacity, save multiple floor-plan layouts per location, and assign sections to servers.

order-capture-floor-plan-editor

Not scored by this record.

Unknown

Order lines can be tagged to a seat number at entry, and the check can be split by seat afterward without re-keying items.

order-capture-seat-level

Not scored by this record.

Unknown

Items can be assigned to courses and held, with a fire-next-course action available from a handheld or terminal that releases only that course to the kitchen.

order-capture-coursing-hold-fire

Not scored by this record.

Partial

Supports splitting a check by item, by seat, by even N-way, and by arbitrary dollar/percentage amount, and merging checks or tables back together, including after partial payment.

order-capture-split-merge

CLAIM: split by item, by seat, even N-way and arbitrary amount, and merge checks/tables back, including after partial payment. VERDICT: partial. EVIDENCE (https://getunion.com/release-notes/): June 2019 "Split individual items - Split a single item across multiple checks by long pressing the item in tab details and pressing SPLIT."; April 2022 "When splitting ToGo check by items, child tabs are also ToGo checks"; November 2021 "Split Evenly: Split evenly no longer defaults to the card on file after the first transaction"; March 2019 "Join tabs and tables - Long press a tab or table to join two separate tabs together."; January 2019 "Split and merge tables easily from within your POS."; November 2019 "Long pressing a seat number in a table view will allow you transfer items to other seats. You can also transfer items to other tabs as well from this dialog box." So item split, even split and joining tabs/tables are documented. SHORTFALL: no split-by-seat action (seats only move items), no split by arbitrary dollar/percentage amount, and nothing says a join works after a partial payment. NEW SURFACE: getunion.com WordPress REST census (retrieved 2026-09-16): 242 documents = pages 103/103, posts 41/41, release_log 16/16, product_feature 13/13, press 28/28, onprem_insights 35/35, wifi 2/2, job 4/4 (x-wp-total equals held, 0 content.protected), cached at .cache/q316/union-pos/wp/. The release-notes page (modified 2026-08-20) is a changelog from Aug 2017 to Aug 2026 with Manager Portal navigation paths; quotes re-checked verbatim in the live HTML (234,206 bytes). Retrieved 2026-09-16. https://getunion.com/release-notes/ · retrieved 2026-09-16 adversarially verified

B
Unknown

Opens a bar tab against a card pre-authorization with a configurable auth amount, supports incremental re-auth as the tab grows, and auto-closes stale tabs at end of day. differentiator

order-capture-bar-tab-preauth

Not scored by this record.

Unknown

An open check can be transferred between servers, tables, and devices, and the transfer is recorded in an audit log naming both employees.

order-capture-transfer-audit

Not scored by this record.

Unknown

Ships a first-party handheld ordering app running natively on the handheld device (not a remote/mirrored desktop session) that can send to kitchen and take a card payment tableside.

order-capture-native-handheld

Not scored by this record.

Partial

With the internet down, terminals and handhelds can still create orders, apply modifiers, send to kitchen, and tender cash, and the vendor publishes what does and does not work offline.

order-capture-offline-order-entry

'Offline mode that allows funds capture' is claimed on the product page; no published matrix of what degrades offline. https://getunion.com/product-feature/point-of-sale/ · retrieved 2026-08-01

D
Unknown

Guest QR at-table ordering writes items onto the same open check as server-entered items, rather than creating a separate order ticket. differentiator

order-capture-qr-same-check

Not scored by this record.

Unknown

Offers a first-party self-order kiosk that renders the same menu and modifier tree as the POS with no separate menu build, and the vendor documents ADA/accessibility conformance for it. differentiator

order-capture-kiosk-first-party

Not scored by this record.

Unknown

Supports order throttling: per-channel capacity limits per time slot with automatic quote-time extension when kitchen load exceeds a configured threshold. differentiator

order-capture-throttling

Not scored by this record.

Partial

Accepts future-dated/scheduled orders with a per-channel lead time and automatically injects them into the make queue at a computed fire time rather than on receipt.

order-capture-scheduled-orders

Shortfall: future-dating is captured but nothing documents timed firing. The KB's To-Go workflow says a new order is opened with 'Customer Name, Pick Up Date & Time, Phone Number, and/or Address', so a future pickup date/time is a first-class field. No Union page describes a per-channel lead time, a computed fire time, or holding the ticket back from the make queue until then; the KitchenHub page (third-party injection) is likewise silent on scheduled orders. https://support.getunion.com/knowledge/perform-tab-table-or-togo-pos-functions · retrieved 2026-08-03

B
Unknown

Provides a distinct catering order flow with quotes, deposits, balance-due tracking, and a delivery/event schedule separate from the standard order queue.

order-capture-catering

Not scored by this record.

Unknown

Pushes an order-ready signal back to third-party marketplaces (e.g. DoorDash) from POS or KDS state, rather than requiring a tablet tap. differentiator

order-capture-order-ready-signal

Not scored by this record.

Unknown

Voids, comps, and discounts require a reason code and can be gated behind role-based manager approval, with all instances recorded in an exception report.

order-capture-void-comp-controls

Not scored by this record.

Menu, modifiers & pricing engine

Partial

Supports modifier groups nested at least three levels deep, each level with independent min/max selection counts and a forced-selection (required) flag.

menu-pricing-nested-modifiers

Partial: Union's back-office Manager Portal supports modifier groups nested two levels deep, but a third level, per-group minimum/maximum selection counts and an independent required flag are not established. Source: the public source map https://manager.union-pos.com/main.206e851b.js.map. Every string quoted here was also confirmed in the served bundle main.206e851b.js (HTTP 200, 4,784,879 chars). HOW THE NESTING WORKS: a modifier is itself a Menu Item. When the items being edited are modifiers (showSecondLevelModifierToggle = some(batchItems, (item) => item.modifier)), each modifier column (a modifier group attached to the item) shows a checkbox, "Second Level Modifiers:", bound to isSecondLevelModifier. On save it is posted as modcolumn_second_level_modifier_enabled. The Modifier Hub then lists, for each modifier item in a group, that item's own modifier groups: (itemEntity.modifiercolumns_data || []).filter(col => col?.second_level_modifier_enabled && col.modifiergroup_id !== currentGroupId), shown under the label "Second Level Modifiers". So a modifier inside a group can carry modifier groups of its own. SELECTION RULES: each column has a Type ('substitution' Substitution, 'option' Options, 'pick_one' Pick One, plus an 'instruction' case). A "Required" label renders only when type === 'substitution'. SHORTFALL: (1) only a second level is named, and no third level appears anywhere (tokenised 'third' hits only 'Third Party Upcharge Price'); (2) no min/max selection-count field was found in the column editor or the Modifier Hub row. The only 'maximum' in these files is a UI cap on adding items to a group ("You have already added the maximum number of items"), not a limit on what a guest may select; (3) 'required' follows from the Substitution type rather than being a separate flag per group, and most 'required' hits are React PropTypes .isRequired. This covers the back-office editor only; the iPad POS client was not inspected, so these gaps are bounded to the Manager bundle and are not a claim of absence. https://manager.union-pos.com/main.206e851b.js.map · retrieved 2026-09-15 adversarially verified

A
No

A single modifier can carry different prices depending on the parent item and the selected size, configured as a matrix rather than by duplicating the modifier.

menu-pricing-modifier-price-by-parent-size

326th, CELL MOVED unknown -> no/B, because the KB supplies the BOUND the prior pass lacked: 'Menu Items can only be created and edited in the Manager Portal by an employee given the "Edit Items and Screens" permission' and 'A modifier (xyz) can only be added to a Menu Item through a Modifier Group' (https://support.getunion.com/knowledge/creating-menu-items, a new article surfaced by the HubSpot site-search census of support.getunion.com). Menu and modifier pricing therefore lives entirely in the Manager Portal, whose complete shipped source we hold, so the 325th's 'the POS app is outside the corpus' objection does not apply to this cell. EVIDENCE: the portal's complete price-row shape is src/modules/ui/pages/inventory/common/sizePricing/constants.js DEFAULT_SIZE_PRICE = {cid, sizeName, sizeId, priceId, quantity, measure, soloPrice, upchargePrice, thirdPartySoloPrice, thirdPartyUpchargePrice} - four prices, all keyed to the row's OWN sizeId, with no parent-item or parent-size key; modifier group types are only Options / Pick One / Substitution (modifierHub/constants.js DEFAULT_TYPE_OPTIONS). CONTROLS over the 1,479 first-party sources (6,097,276 B; map re-fetched today, nonsense sibling = 2,361 B shell): 'parent' 25 files and every inventory/menu/pricing hit is POISON - parent_item_id is the GLOBAL CATALOG item a venue item was cloned from ('a list of all global catalog IDs that are used in venue catalog'), parent_id is the sales-CATEGORY hierarchy, 'parent items station' is print routing, parent_to_child is KDS-hub bump syncing, and the rest is DOM parentNode in vendored assets/minton js. No matrix of modifier price by parent item and size exists in the only app that can price a modifier. HOST NOTE: manager.union-pos.com has a generic '*' robots bar (it does not name ClaudeBot) and was read like a browser per the standing order; the cited URL is the unbarred KB article that carries the bound. Retrieved 2026-09-18. https://support.getunion.com/knowledge/creating-menu-items · retrieved 2026-09-18 adversarially verified

B
No

Supports modifier quantity tiers (light / regular / extra / double) with a configurable price multiplier per tier, distinct from adding the modifier twice.

menu-pricing-topping-quantity-tiers

326th, CELL MOVED unknown -> no/B on the same new bound: the vendor states that 'Menu Items can only be created and edited in the Manager Portal' and that 'A modifier (xyz) can only be added to a Menu Item through a Modifier Group' (https://support.getunion.com/knowledge/creating-menu-items, new article from the HubSpot site-search census of support.getunion.com), so the Manager Portal's shipped source is the census for modifier pricing. EVIDENCE: a modifier carries exactly one price pair per its own size (DEFAULT_SIZE_PRICE = {sizeName, sizeId, priceId, quantity, measure, soloPrice, upchargePrice, thirdPartySoloPrice, thirdPartyUpchargePrice}) and a modifier group has only the types Options / Pick One / Substitution with display options All / POS Only (modifierHub/constants.js). No tier, level, light/regular/extra step or price multiplier exists. CONTROLS over the 1,479 first-party sources (6,097,276 B, re-derived today; real map, nonsense control passed): tiers? 0, multiplier 2 files both POISON (customers/settings CustomerSettingsPage loyalty points multiplier), 'quantity' 21 files all POISON - the SIZE's pour/count quantity ('quantity: parseFloat(size.quantity), measure: size.unit', unit 'count' rendered 'Counted' else 'Poured') and report quantity columns. The 37-article KB (97,519 B) has 0 hits for quantity and no light/regular/extra vocabulary. Union prices an 'extra' pour as a separate SIZE (Single 1.5oz $5 / Double 3oz $10), which is the duplicate-line workaround this claim rules out. HOST NOTE: manager.union-pos.com is generic-'*'-barred and was read like a browser per the standing order; the citation is the unbarred KB. Retrieved 2026-09-18. https://support.getunion.com/knowledge/creating-menu-items · retrieved 2026-09-18 adversarially verified

B
Unknown

Upsell/suggestive-sell prompts can be configured per item and per channel (POS, kiosk, online), and the vendor reports attach-rate on those prompts. differentiator

menu-pricing-upsell-prompts

Not scored by this record.

Unknown

A single 86 action propagates automatically to POS, KDS, the vendor's own online ordering, kiosk, and connected third-party marketplaces, with a documented propagation latency.

menu-pricing-86-propagation

Not scored by this record.

Unknown

Supports per-item countdown/par counts that decrement on sale and automatically 86 the item at zero, with a scheduled auto-restore. differentiator

menu-pricing-countdown-auto-86

Not scored by this record.

Unknown

Menus, individual items, and prices can be scheduled to activate and deactivate automatically by day and time in the location's own timezone.

menu-pricing-dayparting

Not scored by this record.

Unknown

Supports distinct price books per channel (dine-in, pickup, delivery, kiosk, each third-party marketplace) including percentage-markup rules applied to a base price rather than manual per-item entry.

menu-pricing-channel-price-books

Not scored by this record.

Unknown

Supports dual pricing / cash-discount at the item level with the card price displayed as the base price, applied consistently across POS, kiosk, and online ordering, and printed on the receipt. differentiator

menu-pricing-dual-pricing

Not scored by this record.

Unknown

Menu items and modifiers can be linked to recipes/bills of materials so that a sale depletes theoretical inventory and yields item-level theoretical food cost. differentiator

menu-pricing-recipe-linkage

Not scored by this record.

Unknown

Pushes menus to third-party marketplaces through a certified direct integration (not scraping or a menu-management middleman) and surfaces per-item sync status and rejection errors to the operator.

menu-pricing-3p-menu-push

Not scored by this record.

Payments & money movement

Unknown

The POS operates with third-party payment processors of the merchant's choosing (documented list of supported processors/gateways) rather than requiring the vendor's in-house processing. differentiator

payments-processor-choice

Not scored by this record.

Unknown

Vendor publishes card-processing pricing publicly (a specific flat rate or interchange-plus markup) rather than quote-only. differentiator

payments-published-rates

Not scored by this record.

Unknown

Native dual-pricing / cash-discount mode stores two prices per item and prints both cash and card totals on the guest check and receipt. differentiator

payments-dual-pricing

Not scored by this record.

Unknown

Surcharging engine automatically excludes debit and prepaid cards via BIN/product-code detection, enforces the network percentage cap, and can be enabled or disabled per location. differentiator

payments-surcharge-guardrails

Not scored by this record.

Partial

All first-party payment terminals accept EMV chip and NFC contactless including Apple Pay and Google Pay.

payments-emv-nfc

CLAIM: all first-party terminals accept EMV chip and NFC contactless incl. Apple Pay and Google Pay. VERDICT: partial. EVIDENCE: Union's "Tap to Pay on iPhone - Help Center" (https://getunion.com/tap-to-pay-on-iphone-union-pos-help-center/): "Which payment types are supported? Contactless credit and debit cards, Apple Pay, Google Wallet, other NFC-based digital wallets." (iPhone 12 or later, Union Pocket). Release notes (https://getunion.com/release-notes/): January 2026 "Venues using TSYS can now enable Incremental Authorization for card present transactions (dip, tap, and swipe) at the POS."; November 2017 "EMV Chip Reader Capability - Swipe or "dip" debit/credit cards on your Ingenico card reader."; July 2018 "3-Second EMV Card Dip"; January 2025 "New Card Readers - DynaFlex 2 Go" (in testing). SHORTFALL: wallets are named only for Tap to Pay on iPhone; the iPad card readers (the KB names MagTek eDynamo / iDynamo6) have no published contactless or wallet statement, and "tap" at the POS is stated only inside the TSYS incremental-auth note, so "all first-party terminals" is not established. CONTROL: the Manager Portal source map names only "Magtek Readers" (no contactless/NFC/model strings). NEW SURFACE: getunion.com WordPress REST census (retrieved 2026-09-16): 242 documents = pages 103/103, posts 41/41, release_log 16/16, product_feature 13/13, press 28/28, onprem_insights 35/35, wifi 2/2, job 4/4 (x-wp-total equals held, 0 content.protected), cached at .cache/q316/union-pos/wp/. The release-notes page (modified 2026-08-20) is a changelog from Aug 2017 to Aug 2026 with Manager Portal navigation paths; quotes re-checked verbatim in the live HTML (234,206 bytes). Retrieved 2026-09-16. https://getunion.com/tap-to-pay-on-iphone-union-pos-help-center/ · retrieved 2026-09-16 adversarially verified

B
Unknown

Accepts contactless payments directly on a phone (Tap to Pay on iPhone and/or Android tap-to-pay) with no separate card reader. differentiator

payments-softpos-tap-to-pay

Not scored by this record.

Unknown

Vendor ships a handheld that takes EMV/NFC payment at the table, including tip prompt and check splitting, without carrying the card away.

payments-pay-at-table

Not scored by this record.

Unknown

Guest can scan a QR code on the printed check or table tent to view and pay the check from their own phone, with the payment closing the check in the POS automatically. differentiator

payments-qr-guest-pay

Not scored by this record.

Unknown

Supports both pre-auth-then-tip-adjust and on-device tip prompt flows, with a documented batch/adjust window and a manager screen for unadjusted tips.

payments-tip-adjust

Not scored by this record.

Unknown

Configurable tip pooling and distribution rules (by hours worked, sales, role percentage, or points) that produce a per-employee tip allocation exportable to payroll. differentiator

payments-tip-pooling

Not scored by this record.

Unknown

Card payments can be captured while the internet is down via store-and-forward, with configurable per-transaction and cumulative offline limits. differentiator

payments-offline-store-and-forward

Not scored by this record.

Unknown

Vendor publicly documents who bears the loss when a stored offline transaction declines on reconnect, and surfaces a post-reconnect report of failed offline payments. differentiator

payments-offline-decline-liability

Not scored by this record.

Partial

First-party gift cards with real-time balance tracking, redeemable across every location in the group and through the online-ordering channel.

payments-gift-cards

Shortfall: gift cards are not first-party, and the group-wide/online half of the claim is undocumented. Union's own KB article says 'we partnered with industry leader, Factor4!' for gift cards and instructs the operator to 'Contact Factor4 to create an account' by phone or email, so the card program is a separate third-party contract, not Union stored value. Redemption at the terminal is documented as a real tender: open a tab, select Pay, choose 'Gift Card', swipe the card. The article does not describe balance checking, redemption across multiple locations in a group, or redemption through the online-ordering channel. Union's integrations page corroborates the architecture, listing Factor4 as 'Integrated Gift Cards' and naming no other gift-card provider or native alternative; the POS product-feature page never mentions gift cards or stored value. https://support.getunion.com/knowledge/factor4-integration · retrieved 2026-08-04

B
Unknown

House/on-account tabs with per-account credit limits, running balance, and periodic statement or invoice generation.

payments-house-accounts

Not scored by this record.

Unknown

A single check can be settled with multiple tenders and split by seat, by item, by even shares, or by arbitrary amount, with no hard cap below eight ways.

payments-split-tender

Not scored by this record.

Partial

Voids, refunds, discounts, and no-sales require role-based authorization (manager PIN or approval) and write to an immutable audit log identifying the approver.

payments-refund-void-controls

Shortfall: the authorization half is documented, the immutable audit-log half is not. (Citation re-pointed 2026-08-09: /knowledge/pos-permissions-glossary now 301s to /knowledge/configure-employee-pos-permissions, which carries the same permission reference list.) Under 'Approve Adjustments Permissions' the article defines 'Approve Voids' as 'Allows void of item(s) without manager approval', with the same construction for 'Approve Discounts', 'Approve Comps', 'Approve Tax-Exempt', 'Approve Spills', 'Approve Gratuities' and 'Approve Service Charges'; 'Open Cash Drawer Off Sale' is a separate Cash Drawer permission. Permissions are assigned to job roles, not individuals, and only a role holding 'Modify Permissions' can change them, so default-deny with manager approval is real. Refund issuance is a distinct Manager Portal permission: 'Issue Refunds: Allows issue of refund for a payment transaction within the Transaction Report in the Manager Portal' (configure-manager-portal-permissions, retrieved 2026-08-09). But neither live permissions article, nor the End of Day or Checkouts report articles, describes an audit log of approvals or any approver attribution -- only aggregate Voids/Comps/Discounts dollar totals per employee. https://support.getunion.com/knowledge/configure-employee-pos-permissions · retrieved 2026-08-09

B
Unknown

In-product dispute/chargeback dashboard that lists open disputes and allows evidence submission assembled from the POS transaction record. differentiator

payments-chargeback-tooling

Not scored by this record.

Unknown

Vendor publishes its deposit schedule and offers a next-day or same-day/instant funding option. differentiator

payments-payout-timing

Not scored by this record.

Unknown

Vendor provides point-to-point encryption and a current PCI DSS 4.x Attestation of Compliance / P2PE listing available to merchants on request.

payments-p2pe-pci4

Not scored by this record.

Kitchen & production

Partial

Items route to specific KDS stations by item, category, order type, or revenue center, with routing rules configurable per location without vendor involvement.

kitchen-station-routing

Shortfall: per-item station assignment is documented, but only as ticket printing, and never as KDS routing. 'Creating Menu Items' lists 'Add Item Stations' as a field on every Menu Item, defined as 'The area of the restaurant where the tickets related to the Menu Item will print, such as a Kitchen Station or Bar Station'. That is item-level routing configured by the venue, not the vendor — Menu Items and Screens 'can only be created and edited in the Manager Portal by an employee given the Edit Items and Screens permission'. Two gaps keep this off yes. First, the documented destination is a printer ticket; nothing in Union's KB connects Item Stations to KDS screens, and 'Troubleshoot the KDS' is pure connection triage (WiFi interference, confirming 'the correct KDS is already selected' in hardware settings) with no mention of stations, routing or expo. Second, only item-level assignment is documented — no routing by category, order type or revenue center appears anywhere. The KDS marketing page offers only 'Prioritize and manage orders with customized settings'. https://support.getunion.com/knowledge/creating-menu-items · retrieved 2026-08-04

B
Partial

An expo screen consolidates items from multiple prep stations into a single order view and only marks the order complete when every contributing station has bumped its items.

kitchen-expo-consolidation

Union's Manager Portal ships a public source map; every string below is also present in the served bundle main.206e851b.js (fetched 2026-09-15, HTTP 200, 4,784,879 chars). Settings -> Hardware Setup -> KDS Hubs has a Families card (src/pages/settings/kdsHub/components/FamiliesCard.js) whose info text reads: 'KDS Families allow you to set up relationships between specific KDS devices in your venue. You can dictate how they talk to each other by designating some KDSs as "Parents" and some as "Children". We recommend setting your Expo KDS as the "Parent"'. Each family's settings table (SettingsTable.js, rendered by FamilyCard.js) offers three actions as checkboxes: Bump Ticket ('Bump children tickets when parent bumps', 'Bump sibling tickets when child bumps', 'Bump fellow parent tickets when parent bumps'), Recall Ticket, and Cross Off, which includes 'Mark parent item ready when all children cross off' (child_to_parent). The per-KDS Bumping card (KdsBumpingCard.js) says: 'Only disable bumping if another KDS is responsible for bumping this KDS's tickets within KDS Hubs.' So an expo parent KDS can be linked to several station child KDSs, and an optional setting marks an item ready on the expo only once every child has crossed it off. Shortfall: that gate works per item, not per order, and it is an opt-in checkbox. Bump sync has no child_to_parent option, so no setting completes the expo's order only after every station has bumped; bumps propagate from parent down. Nothing states that the parent screen merges the children's items into one order view. That is inferred from the family model. This is portal configuration code; the KDS app itself was not inspected. https://manager.union-pos.com/main.206e851b.js.map · retrieved 2026-09-15 adversarially verified

A
Unknown

Items can be assigned to courses and held, then fired to the kitchen on demand from a server terminal, handheld, or expo screen. differentiator

kitchen-course-firing

Not scored by this record.

Unknown

Per-item cook times are configurable and the KDS staggers item start/display times so that all items on an order finish simultaneously. differentiator

kitchen-prep-time-pacing

Not scored by this record.

No

KDS supports physical bump bars or programmable keypads in addition to touchscreen interaction, with documented supported models.

kitchen-bump-bar-hardware

326th, CELL MOVED unknown -> no/B. The claim's second conjunct - 'with documented supported models' - is now testable against THREE complete first-party surfaces, none of which names a bump bar or keypad. (1) The vendor's own hardware catalogue, https://parts.getunion.com/products.json?limit=250, re-fetched today: 106 products (page=2 and page=3 return none), tokenised bump 0, keypad 0, keyboard 0, scanner 0, 'controller' 0; its kitchen SKUs are the four iPad KDS display/mount SKUs, 'SaaS - KDS', 'SaaS - KitchenHub Fee' and the TM-U220B impact printer. (2) The Manager Portal's Hardware Setup section, which is where Union's store devices are configured, enumerates exactly these device types in its shipped source: registers, KDS, KDS Hubs, printers, printer mapping, stations and payment devices (src/modules/api/settings/{registers,kds,printers,stations,paymentDevices,kdsHub}.js) - there is no peripheral, bump-bar or keypad device type, and no supported-model list anywhere in the 1,479 first-party sources (6,097,276 B; map re-derived today, nonsense sibling returns the 2,361 B SPA shell). Tokenised bump = 2 files and both are SOFTWARE bumping, not hardware: KdsBumpingCard.js 'Enabling Bumping allows KDSs to bump their own tickets. Only disable bumping if another KDS is responsible for bumping this KDS's tickets within KDS Hubs' (toggle order_bump_enabled), and kdsHub/SettingsTable.js whose only actions are sync_bump / sync_recall / sync_cross_off between parent and child KDSs. (3) The NEW 37-article KB census of support.getunion.com (HubSpot site-search API, all public, 97,519 B; route on the oauth cell): bump 0, keypad 0, and the KDS is documented as an iPad app ('Troubleshoot the Kitchen Display System (KDS)'). A cook on Union bumps by touching the iPad. HOST NOTE: manager.union-pos.com carries a generic '*' robots bar and was read like a browser per the standing order; the final_url is the unbarred parts catalogue, which alone carries the 'no documented models' conjunct. Retrieved 2026-09-18. https://parts.getunion.com/products.json?limit=250 · retrieved 2026-09-18 adversarially verified

B
Unknown

An all-day view aggregates outstanding quantities per item (and per modifier) across all open tickets on the station.

kitchen-all-day-counts

Not scored by this record.

Unknown

Configurable target cook times per station or order type, with visual color escalation and/or audible alert when a ticket exceeds target.

kitchen-sla-alerts

Not scored by this record.

Unknown

If a KDS screen or kitchen printer goes offline, tickets automatically fail over to a designated backup printer or screen with no ticket loss. differentiator

kitchen-printer-fallback

Not scored by this record.

Unknown

KDS continues to receive and display tickets from on-site POS terminals when the internet or cloud backend is unreachable. differentiator

kitchen-offline-operation

Not scored by this record.

Unknown

A bumped ticket can be recalled/unbumped, and an individual item can be refired or reprinted without re-entering the order.

kitchen-recall-refire

Not scored by this record.

Unknown

Edits made in the POS to an order already displayed in the kitchen visually flag the added, changed, or removed items on the live ticket. differentiator

kitchen-order-modification-alerts

Not scored by this record.

Unknown

Reports actual ticket and per-station times (average and percentile) sliced by daypart, station, and order channel, exportable to CSV or an API.

kitchen-speed-of-service-reporting

Not scored by this record.

Delivery, dispatch & third-party channels

No

Product includes a native in-house driver module: drivers are first-class entities with clock-in/out, assignment state (in-store / on-run / returning), and per-driver run history reportable from the POS itself (not via a third-party add-on).

delivery-driver-roster

326th, CELL MOVED unknown -> no/B. The missing piece the prior passes lacked was a CLOSED ENUMERATION of the POS's own functions; the HubSpot site-search census of support.getunion.com (37 articles, all public, see the oauth cell for the route) produced two: 'Configure Employee POS Permissions' and 'Configure Manager Portal Permissions', each with a Reference section introduced 'The following lists provide detailed definition of each available permission.' EVIDENCE: the POS permission list enumerates exactly three ticket kinds - 'Access Tabs', 'Access Tables', 'Access To-Go Orders' (and their 'Manage All Tabs / Tables / To-Go' counterparts) - plus Register, Management, Tender, Reports and Cash/Cash-Drawer groups. There is no delivery order type, no driver clock-in/assignment/run-history permission, and no dispatch function anywhere in either list. The Manager Portal list's modules are Back Office, Configure Menu, Reports, Employee and Table only. CONTROLS (tokenised, case-insensitive, non-word-character boundaries): over the portal's complete permission catalogue src/modules/static/permissions.js (163 constants) deliver/driver/zone/inventor = 0 and 'count' = 12 hits ALL POISON, every one inside 'HOUSE_ACCOUNTS'. Over the 1,479 first-party sources of the Manager Portal source map (6,097,276 B, re-derived today) drivers? 0, deliver(y|ies) 0, zones? 0, courier 0; 'dispatch' 213 files is Redux dispatch() POISON. Over the 37 KB article texts (97,519 B) driver = 3 files, all POISON ('Drivers License' in a bank-account-change form). The vendor's own integrations catalogue routes delivery outward to Checkmate and KitchenHub aggregation, and the parts catalogue (parts.getunion.com/products.json, re-fetched today, 106 products, complete) has no driver or delivery SKU - its one 'delivery' hit is 'power delivery' on a cable. Union is a bar/nightlife POS with tab, table and to-go tickets; it has no in-house driver module. HOST NOTE: manager.union-pos.com has a generic '*' robots bar and was read like a browser per the standing order; the cited evidence is on the unbarred support.getunion.com. Retrieved 2026-09-18. https://support.getunion.com/knowledge/configure-employee-pos-permissions · retrieved 2026-09-18 adversarially verified

B
Unknown

Delivery areas can be defined as arbitrary map polygons or by drive-time isochrones, not solely as a radius or a ZIP/postcode list. differentiator

delivery-zones-polygon

Not scored by this record.

Unknown

Each delivery zone carries its own independently configurable delivery fee, order minimum, and quoted promise time, applied automatically from the validated customer address.

delivery-zone-pricing

NEW CONTROLS: Manager Portal source map (1,482 files) has 0 word-boundary hits for delivery/deliveries (so no delivery zone/fee/minimum settings page in the back office); parts.getunion.com/products.json (106) delivery 0, zone 0; the consumer app (App Store id1356461892) offers tableside delivery or bar pickup only. Not a `no`: the POS app is outside the corpus and KB CENSUS CAVEAT (new): the parts.getunion.com product bodies link support.getunion.com articles absent from its 41-URL sitemap, and three of them (how-do-i-resolve-my-printer-ip-issues, what-is-my-pos-terminal-ip-address, how-to-re-pair-an-edynamo) answer 307 to /_hcms/mem/login (member-gated) while a nonsense slug answers 404, so the HubSpot KB is NOT a census and no `no` can be bounded on it. Retrieved 2026-09-16. || 326th: 326th, NEW ENUMERATION, HELD UNKNOWN DELIBERATELY. The closed POS permission list found this pass ('The following lists provide detailed definition of each available permission', https://support.getunion.com/knowledge/configure-employee-pos-permissions) enumerates exactly three ticket kinds - Access Tabs, Access Tables, Access To-Go Orders - and the Manager Portal list's modules are Back Office, Configure Menu, Reports, Employee and Table. Union has no delivery order type at all, so it has no delivery zones: tokenised zones? = 0 across the 1,479 first-party sources of the Manager Portal source map (6,097,276 B, re-derived today), 0 across the 163-constant permission catalogue src/modules/static/permissions.js and 0 across the 37 KB article texts, while the only 'delivery' string in the 106-product hardware catalogue is 'power delivery' on a cable. Per merge policy this is a claim that DOES NOT APPLY - the product lacks the delivery module entirely rather than shipping delivery with flat fees - so it is held unknown with this note rather than scored no; the companion cell delivery-driver-roster, whose claim is the module's existence, is the one that moves. Retrieved 2026-09-18. || 329th: 329th, CELL NOT MOVED, two new checks both empty. (1) The release-notes changelog re-fetched today (87,836 B stripped, through April 2026): zone 0, `delivery fee` 0, `order minimum` 0, `promise time` 0; every `delivery` hit is third-party marketplace prose (`whether it's for pickup or delivery` on KitchenHub/eTab tickets, `pause incoming third-party delivery orders`). (2) The store-level POS app's own App Store screenshots at full resolution (iTunes lookup id1206981322, `Union Point of Sale` v15.1.0, released 2026-09-14, seller ATX Innovation LLC; 3 iPad shots rewritten from /576x768bb.png to /2000x0w.png and read as images) show the All Checks screen offering exactly three order kinds - `+ NEW TAB`, `+ NEW TABLE`, `+ NEW TO-GO` - plus a table map; there is no delivery order type and therefore no delivery-zone surface, which independently corroborates the closed permission list (Access Tabs / Access Tables / Access To-Go Orders). This is still the `claim does not apply` shape, so it stays unknown rather than no. Retrieved 2026-09-18. adversarially verified

F
Unknown

Address entry is validated/geocoded against a mapping service at order time and rejects or flags out-of-zone addresses before the order is accepted.

delivery-address-validation

Not scored by this record.

Unknown

Can hand a first-party order to an on-demand courier marketplace (DoorDash Drive, Uber Direct, Nash, Relay or equivalent) natively from the POS, with the courier quote and status returning into the order record.

delivery-daas-dispatch

Not scored by this record.

Unknown

Offers direct, first-party certified API integrations with DoorDash, Uber Eats, and Grubhub marketplaces (vendor-owned, not solely resold through Otter/Deliverect/Chowly/ItsaCheckmate middleware). differentiator

delivery-3p-direct-integration

Not scored by this record.

Unknown

Third-party marketplace orders inject automatically into the POS as normal tickets that fire to KDS/printers without tablet re-keying or manual accept.

delivery-3p-injection

Not scored by this record.

Unknown

Menu, pricing, modifiers, and photos publish from the POS master menu out to connected third-party marketplaces, including channel-specific price markups, without maintaining a separate menu in each portal.

delivery-menu-push

Not scored by this record.

Unknown

Marking an item or modifier 86'd in the POS pushes item-level out-of-stock status to connected third-party channels in near real time, and restores it on availability (DoorDash requires item and item-option 86ing of new POS partners).

delivery-86-sync

Not scored by this record.

Unknown

Store can be paused/deactivated on each connected third-party marketplace from inside the POS with a timed auto-reactivation, rather than only from each marketplace's own tablet or portal.

delivery-store-pause

Not scored by this record.

Unknown

Produces a third-party reconciliation report matching marketplace payout deposits to POS-recorded 3P sales, itemizing commission, marketing fees, refunds/adjustments, and identifying missing or unpaid orders. differentiator

delivery-3p-reconciliation

Not scored by this record.

Unknown

Vendor exposes integration health to the operator — failed/rejected order injections, connection status per channel, and alerts on failure — rather than failing silently. differentiator

delivery-injection-error-visibility

Not scored by this record.

Unknown

Guests receive a branded order status / driver tracking page or SMS link on the restaurant's own domain for first-party delivery orders, driven by real order and driver state.

delivery-tracking-page

Not scored by this record.

Digital ordering & guest-facing channels

Partial

Vendor ships a first-party, commission-free web ordering site on the restaurant's own branding/domain that writes orders directly into the POS with no per-order marketplace commission.

digital-first-party-web

Guest-led mobile ordering and digital menus are first-party products; branded-domain web ordering and commission terms not documented. https://getunion.com/ · retrieved 2026-08-01

D
Partial

The web/app ordering menu is generated from the same POS menu record as in-store — one item edit propagates to all first-party digital channels without a separate digital menu build.

digital-menu-single-source

Shortfall: items are one shared record, but each channel's menu screens are separate builds that do not sync. The KB's Menu Screens article defines four screen types — POS Quick Pick, POS Alphabetical, 'Mobile: This type will create a Menu Screen that will only be visible on the Union Mobile App', and 'Online: This type will create a Menu Screen for third-party sites' — and warns: 'A Menu Screen MUST be updated for each size and type. Example: Editing the Draft Beer menu screen for the 13" size iPad will NOT automatically update the 10", iPhone, Mobile, or Online Draft Beer menu screens.' So digital channels draw on the same Menu Item records (Creating Menu Items carries item-level Union Mobile fields such as the special-instructions toggle), but menu structure, placement and visibility require an independent per-channel screen build and edits do not propagate across channels. https://support.getunion.com/knowledge/creating-and-editing-menu-screens · retrieved 2026-08-04

B
Partial

Guests can create an account with saved addresses, saved (tokenized) payment methods, and one-tap reorder of a previous order across first-party channels.

digital-account-saved-payment

CLAIM: guest account with saved addresses, saved tokenized payment methods, and one-tap reorder across first-party channels. VERDICT: partial. EVIDENCE (https://getunion.com/release-notes/): July 2020 "Apple Pay & Payment Methods in TabbedOut - Customers using TabbedOut will now be able to set up payment methods, select a default, and use Apple Pay to pay their tabs in the app." (TabbedOut was renamed Union Mobile, February 2022); November 2021 "Mobile Wallet Improvements: Ability to change payment type in mobile wallet"; April 2025 "The "Order Again" button has been changed to "Next Round" conveniently positioned on the running tab screen for guests to easily re-order their prior round."; January 2023 "Union Mobile now allows customers to easily save items". SHORTFALL: no saved guest addresses (the only address database is staff-side: September 2024 "To-Go Database (Coming Soon) ... search by name, phone number, or address"), and "Next Round" repeats the prior round inside the running tab rather than reordering a previous order. NEW SURFACE: getunion.com WordPress REST census (retrieved 2026-09-16): 242 documents = pages 103/103, posts 41/41, release_log 16/16, product_feature 13/13, press 28/28, onprem_insights 35/35, wifi 2/2, job 4/4 (x-wp-total equals held, 0 content.protected), cached at .cache/q316/union-pos/wp/. The release-notes page (modified 2026-08-20) is a changelog from Aug 2017 to Aug 2026 with Manager Portal navigation paths; quotes re-checked verbatim in the live HTML (234,206 bytes). Retrieved 2026-09-16. https://getunion.com/release-notes/ · retrieved 2026-09-16 adversarially verified

B
Unknown

Digital checkout presents configurable or algorithmic upsell/cross-sell suggestions (rules-based add-ons or personalized recommendations from order history), with attach-rate reporting on those suggestions. differentiator

digital-upsell-engine

Not scored by this record.

Unknown

Supports future/scheduled orders with per-daypart throttling — capacity limits on orders or items per time slot that automatically close slots when the kitchen is saturated.

digital-scheduled-pacing

Not scored by this record.

Unknown

Single digital ordering flow supports pickup, curbside (with arrival check-in), dine-in/QR table ordering, and delivery, with mode-specific fees and prep timing.

digital-fulfillment-modes

Not scored by this record.

Unknown

Supports guest-facing QR scan-to-order and/or scan-to-pay at the table that opens or attaches to the existing POS check, including splitting and tipping.

digital-qr-table

Not scored by this record.

Unknown

Supports group ordering: a shareable link where multiple participants add their own items to one order under a per-person or total spend cap, with split or single payment.

digital-group-ordering

Not scored by this record.

Unknown

Offers a distinct catering ordering flow with separate catering menu/minimums, lead-time rules, quotes or proposals, deposits, and invoice/house-account or ACH payment terms. differentiator

digital-catering-portal

Not scored by this record.

Unknown

Vendor offers AI voice phone ordering (native or a named certified partner) that answers inbound calls and injects the completed order into the POS without staff transcription. differentiator

digital-voice-ai-phone

Not scored by this record.

Unknown

Supports Order with Google — the restaurant's direct ordering link is provisioned to the Google Business Profile as an ordering option (ideally set as 'Preferred by Business'), rather than leaving marketplace links as the only choice. differentiator

digital-google-order

Not scored by this record.

Unknown

Supports Apple Business Connect ordering placement — an 'Order Food' custom action on the Apple Maps place card pointing at the vendor's first-party ordering flow.

digital-apple-business-connect

Not scored by this record.

Unknown

Loyalty accrual and redemption work inside the first-party digital ordering flow using the same guest identity as in-store, not as a separate post-purchase enrollment.

digital-loyalty-attach

Not scored by this record.

Unknown

Discounts, coupon codes, and loyalty offers are defined once and honored identically across POS, kiosk, and first-party digital channels, with channel eligibility controls.

digital-promo-parity

Not scored by this record.

Unknown

Vendor documents that the operator owns and can export first-party guest records (email, phone, consented marketing status, order history) in bulk, without a fee or vendor approval. differentiator

digital-guest-data-ownership

Not scored by this record.

Unknown

Digital checkout uses vendor-hosted fields or a hosted payment page so card data never touches the restaurant's page, with the vendor publishing PCI DSS 4.0 compliance (including the client-side script-integrity requirements effective March 2025) and supporting 3DS.

digital-checkout-pci-sca

Not scored by this record.

Unknown

Digital channels support the same service-fee / dual-pricing / card-surcharge configuration as the POS, with the required guest-facing disclosure and correct handling of jurisdictions and card brands where surcharging is prohibited. differentiator

digital-surcharge-transparency

Not scored by this record.

Guest data, loyalty & marketing

Partial

Maintains a single guest profile that automatically merges transactions from in-store POS, first-party web/app ordering, and kiosk under one identity (phone or email match), with documented dedup/merge behavior.

guest-loyalty-unified-profile

Shortfall: a single identity key is claimed, documented merge/dedup behaviour is not. Status uses the phone number as the sole identifier — 'One number is all it takes: no app, no account, no card' — and enrolls the same number from four surfaces (NFC puck tap, Point of Sale entry, QR code on the printed receipt, Pay at Table screen), which does imply one profile across in-venue channels. But this is a first-party marketing page, not documentation: it states no matching or dedup rules, no email identity, no handling of a guest whose number changes, and says nothing about first-party web ordering or kiosk transactions attaching to the same profile. https://getunion.com/product-feature/meet-status/ · retrieved 2026-08-03

C
Unknown

Orders arriving from third-party marketplaces (DoorDash, Uber Eats, Grubhub) attach to a native guest profile with usable guest identity rather than landing as anonymous tickets. differentiator

guest-loyalty-thirdparty-identity-attach

Not scored by this record.

Partial

Supports at least two of points-per-dollar, visit/punch-count, and spend-tier accrual as configuration, without custom development or a bolt-on loyalty vendor.

guest-loyalty-accrual-models

'Status' loyalty and Rewards are first-party and marketed with a 75% revenue-lift claim; accrual models not documented. https://getunion.com/product-feature/point-of-sale/ · retrieved 2026-08-01

D
Unknown

Supports status tiers with automatic promotion and demotion driven by rolling-window spend or visit counts. differentiator

guest-loyalty-tiers

Not scored by this record.

Unknown

Documents explicitly what loyalty lookup, accrual, and redemption do when the POS loses connectivity (queue-and-reconcile vs blocked). differentiator

guest-loyalty-offline-behavior

Not scored by this record.

Unknown

Offers can be issued to a dynamically defined audience (rules over recency, frequency, spend, or items purchased) rather than only broadcast to the whole list. differentiator

guest-loyalty-targeted-offers

Not scored by this record.

Unknown

Automatically computes recency/frequency/monetary or equivalent lifecycle segments (new, regular, at-risk, lapsed, VIP) without the operator building the queries. differentiator

guest-loyalty-rfm-segmentation

Not scored by this record.

Partial

Ships triggered lifecycle automations (birthday, first-visit thank-you, lapsed win-back) as configurable always-on campaigns rather than one-off manual sends.

guest-loyalty-lifecycle-automation

CLAIM: triggered lifecycle automations (birthday, first-visit thank-you, lapsed win-back) as always-on campaigns. VERDICT: partial. EVIDENCE: Status guide (https://getunion.com/union-status-loyalty-program-guide/, modified 2026-08-19): "First-time guest bonus: bonus points new guests start with, so they're already closer to their first reward."; "The Nudge ... For guests who've agreed to receive texts, Status sends them one the moment they earn a reward. That's a marketing campaign that writes and sends itself, every single time". Status product page (https://getunion.com/product-feature/meet-status/): "Set it up once. It runs forever."; "VIP status updates automatically after each end-of-day." So one always-on triggered text (reward earned) and an automatic first-visit points bonus ship. SHORTFALL: no birthday campaign, no first-visit thank-you message, no lapsed/win-back campaign. CONTROLS over the 242-document WP census (tokenised, word-boundary, case-insensitive): birthday 0, lapsed 0, winback/win-back 0; first-visit/first visit 3, all the points bonus or the "First Visit Loop" flyer. A marketing corpus does not bound the product, so no `no` on the missing triggers. Grade C: marketing host. NEW SURFACE: getunion.com WordPress REST census (retrieved 2026-09-16): 242 documents = pages 103/103, posts 41/41, release_log 16/16, product_feature 13/13, press 28/28, onprem_insights 35/35, wifi 2/2, job 4/4 (x-wp-total equals held, 0 content.protected), cached at .cache/q316/union-pos/wp/. The release-notes page (modified 2026-08-20) is a changelog from Aug 2017 to Aug 2026 with Manager Portal navigation paths; quotes re-checked verbatim in the live HTML (234,206 bytes). Retrieved 2026-09-16. https://getunion.com/union-status-loyalty-program-guide/ · retrieved 2026-09-16 adversarially verified

C
Unknown

Sends both email and SMS campaigns natively from the platform, not solely by handing the list to a third-party ESP. differentiator

guest-loyalty-native-email-sms

Not scored by this record.

Unknown

Handles or explicitly documents A2P 10DLC brand and campaign registration required for the operator to send SMS through the platform.

guest-loyalty-10dlc-registration

Not scored by this record.

Unknown

Reports redemption and incremental sales attributable to a specific campaign or offer, tying redeemed offers to actual check totals. differentiator

guest-loyalty-campaign-attribution

Not scored by this record.

Unknown

Provides self-serve export of the full guest list and transaction history, including contact PII, via CSV or API, without a vendor fee or support ticket. differentiator

guest-loyalty-data-export-portability

Not scored by this record.

Unknown

Triggers post-transaction feedback requests and routes responses by score, sending low scores to private service recovery and high scores toward public review sites. differentiator

guest-loyalty-review-capture-routing

Not scored by this record.

Unknown

Issues an Apple Wallet or Google Wallet loyalty pass with push-updatable balance, as an alternative to requiring a branded app download. differentiator

guest-loyalty-wallet-pass

Not scored by this record.

Unknown

Provides admin tooling to fulfill guest data access and deletion requests (CCPA/CPRA-style) including deletion propagation to loyalty and marketing records.

guest-loyalty-privacy-rights-tooling

Not scored by this record.

Unknown

Vendor documents AI/ML-generated recommendations for offer content, target audience, or send timing (claim-level; verify it is a shipped product feature, not a roadmap statement). differentiator

guest-loyalty-ai-offer-recommendation

Not scored by this record.

Unknown

Offers native stored-value/gift card balances tied to the same guest profile and redeemable across all locations of the brand.

guest-loyalty-stored-value-gift

Not scored by this record.

Labor & workforce

Yes

Employees clock in and out at the POS terminal using a PIN, badge, or card, with no separate time-clock hardware required.

labor-clock-in-at-pos

Citation re-pointed 2026-08-09: /knowledge/pos-permissions-glossary now 301s to /knowledge/configure-employee-pos-permissions, which carries the same permission reference. Under 'Register Permissions' the article defines 'Clock in' as 'Allows clocking in for a shift', immediately after 'Log in' ('Allows login and access the POS system'); 'Manage All Employees' 'Allows run of other employees' checkouts as well as the clock-out of other employees'; and 'Join Shared Group' 'Allows login with individual PIN codes but ordering under a group with one Checkout'. These are POS-terminal permissions -- the article's own framing is 'user access to specific functions on the POS terminals', set in the Manager Portal under Labor > POS Permissions -- so staff authenticate with an individual PIN and clock in on the iPad terminal itself, with no separate time-clock hardware. Corroborated downstream: the End of Day Report carries an 'Employee Hours Summary' section, and the Flash Sales report 'displays net sales by hour and who is currently clocked in'. https://support.getunion.com/knowledge/configure-employee-pos-permissions · retrieved 2026-08-09

B
Unknown

Records time punches while the POS is offline and reconciles them on reconnect without loss or duplicate entries, with the behavior documented. differentiator

labor-offline-time-punch

Not scored by this record.

Yes

Permissions are grantable per discrete action (void, comp, discount, refund, drawer open, price change, report access) per role and per location, not limited to fixed cashier/manager/admin tiers.

labor-granular-rbac

Permissions are per discrete action and not limited to fixed tiers: 'Permissions are assigned to job roles. Individual employees cannot have permissions assigned or removed -- but custom job roles can be created.' The POS grid is grouped Register / Tickets / Management / Approval Adjustments / Tender / Reports / Cash and Cash Drawer and includes Approve Voids, Approve Comps, Approve Discounts, Approve Pricing Events, Take Cards by Manual Card Entry, Open Cash Drawer Off Sale, View Flash Sales Report and Reopen Closed Tabs individually. The Manager Portal has its own grid (Edit Items and Screens, Run Reports, Issue Refunds, Modify Permissions), with 'only an individual whose job role has the Modify Permissions permission' able to change them. Caveat: neither article addresses scoping a role to a subset of locations. https://support.getunion.com/knowledge/configure-employee-pos-permissions · retrieved 2026-08-03

B
Partial

Manager overrides and approvals are attributed to the individual approver and written to an immutable audit trail queryable after the fact.

labor-manager-override-audit

CLAIM: manager overrides/approvals attributed to the individual approver and written to an immutable audit trail queryable after the fact. VERDICT: partial. EVIDENCE (https://getunion.com/release-notes/): May 2026 "High Tip Alert with Manager Approval ... Employees with the appropriate permission can self-approve; those without it must have a manager approve before the tip processes. All high-tip approvals are logged under adjustments for accountability."; March 2018 "Manager Approvals Report in your manager portal"; March 2025 "Check Activity Log - See Every Action on a Check"; May 2026 "Register Added to Activity Log ... giving venues a clear audit trail for financial transactions"; February 2026 "Shift Change History ... Audit shifts in seconds, figure out who made changes". CORROBORATION (anonymous Manager Portal source map https://manager.union-pos.com/main.206e851b.js.map, held in .cache/q310-union-pos/src): GET /venues/{venue_id}/reports/approvals (apiGetApprovalsReport), GET /venues/{venue_id}/tabs/{tab_id}/activity-logs (rendered as Time/Type/Event only), GET /venues/{venue_id}/shift-editor/shift-audit-log filterable by modified_by. SHORTFALL: for POS adjustment approvals no source names the approver as a recorded field (the activity-log UI shows only time/type/event, and no page in the bundle consumes the approvals-report API), and nothing states the logs are immutable. Approver attribution is explicit only for shift edits. NEW SURFACE: getunion.com WordPress REST census (retrieved 2026-09-16): 242 documents = pages 103/103, posts 41/41, release_log 16/16, product_feature 13/13, press 28/28, onprem_insights 35/35, wifi 2/2, job 4/4 (x-wp-total equals held, 0 content.protected), cached at .cache/q316/union-pos/wp/. The release-notes page (modified 2026-08-20) is a changelog from Aug 2017 to Aug 2026 with Manager Portal navigation paths; quotes re-checked verbatim in the live HTML (234,206 bytes). Retrieved 2026-09-16. https://getunion.com/release-notes/ · retrieved 2026-09-16 adversarially verified

B
Unknown

Builds and publishes employee shift schedules inside the same platform that holds the timekeeping data, rather than requiring a third-party scheduling app. differentiator

labor-native-scheduling

Not scored by this record.

Unknown

Generates recommended staffing levels or labor hours by daypart from the operator's own POS sales history, not just a static template. differentiator

labor-demand-labor-forecast

Not scored by this record.

Unknown

Displays labor cost as a percentage of sales in real time during service on a manager view or POS, not only in end-of-day or next-morning reports. differentiator

labor-realtime-labor-percent

Not scored by this record.

Unknown

Warns or blocks at clock-in when an employee is approaching or would cross a configured overtime threshold, before the overtime is incurred. differentiator

labor-overtime-prevention

Not scored by this record.

Unknown

Configures meal and rest break rules per state or jurisdiction, prompts required break attestation, and flags missed breaks for premium pay. differentiator

labor-break-compliance-by-state

Not scored by this record.

Unknown

Computes tip pooling and tip-outs automatically per shift from configurable rules (percentage of sales, hours worked, points, or role), rather than requiring a manual spreadsheet.

labor-tip-pooling-rules

Not scored by this record.

Unknown

Retains a per-shift, per-employee record of tips received, amounts contributed to the pool, and amounts distributed from the pool, exportable for audit.

labor-tip-distribution-audit-trail

Not scored by this record.

Unknown

Payroll export separates cash from charged qualified tips and carries a Treasury tipped-occupation code, supporting the W-2 Box 12 code TP and Box 14b reporting required for tax year 2026. differentiator

labor-qualified-tips-w2-reporting

Not scored by this record.

Unknown

Vendor processes payroll itself as a first-party product (tax filing and direct deposit), as opposed to exporting to a third-party payroll provider only. differentiator

labor-native-payroll

Not scored by this record.

Unknown

Exports timecards, wages, and tips in documented formats or via direct integration for at least two major payroll providers (e.g. Gusto, ADP, Paychex, QuickBooks).

labor-payroll-export-formats

Not scored by this record.

Unknown

Employees can request shift swaps or claim open shifts in a self-service app, subject to a manager approval workflow that enforces overtime and role eligibility. differentiator

labor-shift-swap-workflow

Not scored by this record.

Unknown

Reports per-employee sales performance metrics (average check, items or category attachment rate, void and comp rate) by server or cashier. differentiator

labor-server-performance-metrics

Not scored by this record.

Inventory, purchasing & cost control

Partial

Supports multi-level recipe/BOM costing where a recipe can contain sub-recipes (prep items) and plate cost recalculates automatically when any component ingredient's cost changes.

inventory-recipe-bom-costing

Shortfall: costing exists only through a third-party integration, and Union documents none of the claim's substance. Union's own KB positions Craftable as the costing engine — 'Craftable is inventory software that connects with the Union POS System to help with ordering, purchasing, inventory, costing, accounts payable, and payment functions', wired up when 'Craftable will request an API key from Union Support to enable access to your data'. The integrations page lists Craftable ('Inventory, invoicing, accounting, and analytics'), Restaurant365 ('Ordering, Inventory Control and Costing') and MarginEdge in the same role. Natively, Union's recipe field is explicitly reference material, not a bill of materials: 'Add a recipe to a Menu Item for employee reference'. Its native inventory hooks are an 'Inventory ID' ('A number or code created by the venue, used for inventory tracking') and a per-Size pour quantity ('a Single size of 1.5oz with a price of $5 and a Double size of 3oz for $10'). Neither Union article describes sub-recipes/prep items nor plate cost recalculating when a component ingredient's cost changes, so the multi-level half of the claim is unverified in Union's documentation. https://support.getunion.com/knowledge/craftable-integration · retrieved 2026-08-04

B
No

Stores purchase unit, recipe unit, and count unit per item with explicit conversion factors, plus a yield/waste percentage applied to raw-to-usable conversion.

inventory-unit-conversion-yields

326th, CELL MOVED unknown -> no/B. NEW SURFACE: 'Create or Edit Menu Items' (https://support.getunion.com/knowledge/creating-menu-items), found through the HubSpot site-search census of support.getunion.com (37 public articles; route on the oauth cell) and absent from the sitemap the earlier passes used. It is a field-by-field enumeration of the item template - Display Name, Kitchen Name, Inventory ID ('A number or code created by the venue, used for inventory tracking'), Modifier checkbox, Description, Sales Sub Category, Enable Special Instruction Box, Size ('A size to apply for inventory tracking and/or size-based pricing. Example: A Titos Vodka Menu Item could have a Single size of 1.5oz with a price of $5 and a Double size of 3oz for $10'), Add Item Stations, Modifiers, Recipes ('Add a recipe to a Menu Item for employee reference'), Screens - and it states that 'Menu Items can only be created and edited in the Manager Portal', which is the app whose complete shipped source we hold. There is exactly ONE unit dimension (the size's quantity + measure), no purchase unit, no recipe unit, no count unit, no conversion factor and no yield or waste percentage; recipes are explicitly reference text for staff, not a costed bill of materials. CONTROLS over the 1,479 first-party sources of manager.union-pos.com main.206e851b.js.map (6,097,276 B, re-derived today; nonsense sibling returns the 2,361 B shell): yields? 0, waste 0, on-hand 0, variance 0, par level 0, physical count 0. The vendor routes ingredient costing to partners ('Craftable is inventory software that connects with the Union POS System to help with ordering, purchasing, inventory, costing'). HOST NOTE: manager.union-pos.com carries a generic '*' robots bar and was read like a browser per the standing order; the cited page is the unbarred KB. Retrieved 2026-09-18. https://support.getunion.com/knowledge/creating-menu-items · retrieved 2026-09-18 adversarially verified

B
Unknown

Produces a theoretical-vs-actual usage variance report per item for a defined count period, showing theoretical usage from POS sales times recipe, actual usage from counts plus receipts, and the variance in both units and currency. differentiator

inventory-theoretical-vs-actual

Not scored by this record.

Unknown

Depletes ingredient on-hand quantities in near real time as orders are fired at the POS, including depletion driven by modifier selections, not only in an end-of-day batch. differentiator

inventory-realtime-depletion

Not scored by this record.

Unknown

Automatically 86s (marks unavailable) menu items on the POS, online ordering, and connected third-party delivery menus when a component ingredient hits zero or a configured threshold. differentiator

inventory-86-auto-sync

Not scored by this record.

No

Supports full physical inventory, ad-hoc spot counts of a subset, and scheduled recurring cycle counts, with each count's variance recorded as separate history rather than overwriting prior counts.

inventory-count-modes

326th, CELL MOVED unknown -> no/B on the two permission ENUMERATIONS found in the HubSpot site-search census of support.getunion.com (37 public articles; route recorded on the oauth cell). Each closes with 'The following lists provide detailed definition of each available permission.' The only stock-facing POS permission in the whole list is 'Manage Item Countdown: Allows access to item countdown, for managing item availability and 86-ing items' - i.e. the 86 counter, not a count sheet; the Manager Portal list has no inventory-count permission at all, its 'Configure Menu' group being 'Edit Items and Screens', 'Edit Sales Categories' and 'Edit Pricing Events'. Corroborating that the portal's 'Inventory' menu is menu management and nothing else, 'Create or Edit Menu Items' instructs the reader to 'Select "Inventory"' and then enumerates the item template's fields (Display Name, Kitchen Name, Inventory ID, Modifier checkbox, Description, Sales Sub Category, special-instruction toggle, Size, Add Item Stations, Modifiers, Recipes, Screens) - no on-hand, par, count or variance field - and adds that 'Menu Items can only be created and edited in the Manager Portal'. CONTROLS: over src/modules/static/permissions.js (163 constants) 'count' = 12 hits, ALL POISON inside 'HOUSE_ACCOUNTS'; over the 1,479 first-party sources of the Manager Portal source map (6,097,276 B, re-derived today, nonsense-path control passed) cycle count 0, on-hand 0, variance 0, par level 0, physical count/inventory 0, count sheet 0, stock count 0. Counting is delegated to partners in the vendor's own words: 'Craftable is inventory software that connects with the Union POS System to help with ordering, purchasing, inventory, costing, accounts payable, and payment functions' (https://support.getunion.com/knowledge/craftable-integration). Union's POS offers one availability counter, not full/spot/cycle counts with separate variance history. HOST NOTE: manager.union-pos.com is generic-'*'-barred and was read like a browser; the citation is the unbarred KB. Retrieved 2026-09-18. https://support.getunion.com/knowledge/configure-employee-pos-permissions · retrieved 2026-09-18 adversarially verified

B
Unknown

Provides a mobile/tablet counting app supporting barcode or QR scanning that continues to accept counts with no network connectivity and syncs on reconnect.

inventory-mobile-count-offline

Not scored by this record.

Unknown

Ships pre-built electronic vendor catalog and order-transmission integrations with named broadline distributors (e.g. Sysco, US Foods, Performance Food Group) that send purchase orders and receive invoices electronically rather than by emailed PDF. differentiator

inventory-vendor-catalogs-edi

Not scored by this record.

Unknown

Ingests supplier invoices from photo, PDF, or email and extracts line-item detail (item, quantity, unit, price) into the inventory ledger without manual line entry. differentiator

inventory-invoice-ocr

Not scored by this record.

Unknown

Tracks per-item purchase price history across invoices and alerts when a received price exceeds the prior or contracted price by a configurable threshold. differentiator

inventory-price-change-alerts

Not scored by this record.

Unknown

Maintains par levels per item per location and generates suggested purchase order quantities from on-hand versus par, with at least one mode driven by a sales forecast rather than a static par. differentiator

inventory-par-auto-suggest

Not scored by this record.

Unknown

Provides a structured waste/spoilage logging workflow with reason codes that debits inventory and reports waste cost separately from usage variance.

inventory-waste-logging

Not scored by this record.

Unknown

Tracks expiration or use-by dates on received and prepped items and surfaces an expiring-soon report or alert before spoilage.

inventory-shelf-life-expiry

Not scored by this record.

Unknown

Supports partial-bottle liquid inventory by weight (scale integration) or by bottle fraction for bar and beverage counting.

inventory-bar-partial-bottle

Not scored by this record.

Unknown

Exports period COGS and accounts-payable invoice detail in a named accounting system's import format (e.g. QuickBooks, Sage Intacct, NetSuite) with GL account mapping configurable per item category.

inventory-cogs-gl-export

Not scored by this record.

Unknown

Inventory and recipe costing are delivered natively by the POS vendor rather than requiring a separately-contracted third-party product (e.g. MarginEdge, MarketMan, Restaurant365) to function. differentiator

inventory-native-not-partner

Not scored by this record.

Unknown

Joins recipe cost to actual item sales mix to report contribution margin per menu item, and flags items whose margin fell below a configured threshold after ingredient cost changes. differentiator

inventory-menu-margin-linkage

Not scored by this record.

Reporting, BI & data access

Partial

Provides a live sales dashboard reflecting transactions within minutes of the sale, accessible from both a browser and a mobile app off-premise.

reporting-realtime-dashboard

326th, CELL MOVED unknown -> partial/B. BROWSER CONJUNCT MET: the Manager Portal's home page is a same-day dashboard, not a report list. Its shipped source enumerates the tiles - TOTAL_SALES_TODAY, TOTAL_ADJUSTMENTS_TODAY, TOTAL_LABOR_TODAY, TOTAL_SALES_DAY_PART_TODAY, TOP_10_ITEMS and a 'Flash Today' card rendering Net Sales / Tabs / Labor $ / Labor % (src/modules/ui/pages/dashboard/constants.js and src/pages/home/components/FlashToday.js in manager.union-pos.com main.206e851b.js.map, re-derived today: 1,479 first-party sources, 6,097,276 B; nonsense sibling zzz-nope-42.js.map returns the 2,361 B SPA shell, so the map is real), each with a today/yesterday pair. The POS side has the live equivalent, documented in the NEW KB census: 'View Flash Sales Report: Allows view of the flash sales report, which displays net sales by hour and who is currently clocked in' (https://support.getunion.com/knowledge/configure-employee-pos-permissions). SHORTFALL (why partial, both halves): (a) NO OFF-PREMISE MOBILE APP - Union's App Store seller census is two apps, the POS and the consumer tab app, with no owner/manager app, and the 37-article KB names none; (b) NO PUBLISHED LATENCY - no Union document states how soon a sale appears in the portal, and the one article that describes data reaching the portal describes a batch: 'Run the End of Day process... Result: The previous day's data has been sent to the Manager Portal for reporting' (https://support.getunion.com/knowledge/bring-online-an-offline-pos-system). So 'today' tiles exist but 'within minutes' is unevidenced. HOST NOTE: manager.union-pos.com has a generic '*' robots bar and was read like a browser per the standing order; the citation is the unbarred KB. Retrieved 2026-09-18. https://support.getunion.com/knowledge/configure-employee-pos-permissions · retrieved 2026-09-18 adversarially verified

B
Partial

Generates a daily close-out/EOD report reconciling gross sales, net sales, tax, tips, discounts, refunds, tender types, and expected cash deposit in one document.

reporting-eod-closeout

Union's help article 'Review the End of Day Report' (Manager Portal > Reports > End of Day) defines the report's labels: "Gross Sales : Total sales before adjustments (before any discounts, comps, spills or voids have been subtracted)"; "Net Sales : Total sales after adjustments"; "Taxes : Total taxes collected"; "Paid Tips : Total tip amounts collected by server (all reported credit card tips and cash tips)"; "Discounts : Total amount of items discounted"; "Payments by Type : A breakdown of payment types, with a count of each type of payment and tip taken" (Visa, MC, AMEX, Discover, Cash, Third Party, Website); "Cash Deposit : Total amount of all cash payments taken", followed by "Paid Ins/Paid Outs" and "Deposit Summary : Total amount of all payment forms taken (both card and cash)". Met in one report: gross, net, tax, tips, discounts, tender types, cash deposit. Shortfall: refunds. The label list adjusts only for voids, comps, discounts and spills and has no refund line; refunds are a separate Manager Portal report (served bundle main.206e851b.js: 'Refunds issued to track returned payments and support accurate financial reporting'). Cash Deposit is cash taken with paid ins/outs shown beside it, not a computed expected-drawer figure. https://support.getunion.com/knowledge/review-the-end-of-day-report · retrieved 2026-09-15 adversarially verified

B
Partial

Provides a product mix (PMIX) report at individual menu item AND modifier level with quantity, gross and net sales, filterable by daypart and revenue center.

reporting-pmix-modifier-level

Union's Manager Portal ships a named Product Mix report at item level with a day-part selector. The portal's public source map (main.206e851b.js.map, sha256 5ad7eaa6...c399, retrieved 2026-09-15) has ./src/pages/reports/constants/ReportsConfig.js. Its report entry is also in the served bundle main.206e851b.js, minified: title:"Product Mix",description:"Overview of product mix (PMix) showing item-level sales performance to analyze contribution and identify trends",portalReportKey:"product_mix",logiReportKey:"product_mix" ... showDayParts:!0,dayParts:<All Day>.label. The served bundle also names it 'Sales Product Mix' (product_mix) and routes it at /legacy-reports/product-mix. It calls /venues/<id>/settings/day-parts. MEETS: an item-level PMIX report exists and can be filtered by daypart. SHORTFALL: (1) no modifier-level output. The report's own description says 'item-level', and a tokenised modifier/modifiers search of the report and logiReports modules finds 0 hits. The 284 modifier hits in the served bundle are all menu-build and inventory UI: Modifier Groups, modifier-hub, Modifier Increments. The served report keys contain no by-modifier dimension. (2) No revenue-center filter on PMIX. Revenue center exists only on the separate Sales report dimension 'Sales by Revenue Center by Item', which is not a product-mix report and is not counted here. (3) Logi (reporting.union-pos.com) renders the report server-side, so the client does not show quantity, gross and net columns. The vendor's AI-Reporting video transcript PDF (getunion.com/wp-content/uploads/2026/03) lists Product Mix among the Legacy reports. Its extracted text runs 'Inventory Depletion' and 'Product Mix' together as one line, but the bundle shows these are two separate reports. The earlier unknown read only the EOD, Checkouts and Transaction KB articles, which are other reports. https://manager.union-pos.com/main.206e851b.js.map · retrieved 2026-09-15 adversarially verified

A
Unknown

Produces an audit report of comps, voids, discounts, and price overrides attributed to the employee who applied them and the manager who approved them, with reason codes and timestamps.

reporting-comps-voids-audit

Not scored by this record.

Unknown

Reports cash over/short per drawer, per shift, and per employee, comparing counted cash to expected cash from tendered transactions and paid-outs.

reporting-cash-over-short

Not scored by this record.

Unknown

Reports sales per labor hour and labor cost as a percentage of sales by hour, by department, and by employee, using actual clocked hours from the POS time clock.

reporting-labor-productivity

Not scored by this record.

Unknown

Reports per-server metrics including average check, items per check, attachment rate for named categories, and tips as a percentage of sales. differentiator

reporting-server-scorecards

Not scored by this record.

Unknown

Reports revenue and margin by fulfillment channel — dine-in, direct online, first-party delivery, and each third-party marketplace separately — net of marketplace commission fees. differentiator

reporting-channel-profitability

Not scored by this record.

Unknown

Supports scheduling any report for automatic recurring delivery by email or to a shared destination on a defined cadence and recipient list.

reporting-scheduled-delivery

Not scored by this record.

Unknown

Publishes a documented public REST or GraphQL API covering orders, payments, menu, and labor data, with self-service developer credentials obtainable without a signed partner agreement. differentiator

reporting-public-api

Not scored by this record.

Unknown

Emits outbound webhooks for order and payment lifecycle events to a customer-supplied endpoint, with documented retry behavior and payload signature verification. differentiator

reporting-webhooks

Not scored by this record.

Unknown

API and raw-data access are included in the standard subscription rather than gated behind an additional per-location fee, revenue share, or enterprise-only contract. differentiator

reporting-api-not-upcharged

Not scored by this record.

Unknown

Core reporting beyond basic sales summaries — labor vs sales, PMIX, comps/voids audit, multi-location comparison — is available on the entry-level paid plan rather than requiring a higher tier or an add-on analytics SKU. differentiator

reporting-tier-paywall

Not scored by this record.

Unknown

Documents a historical retention window of at least 24 months of transaction-level detail queryable in the reporting UI, with no silent truncation or archive retrieval fee. differentiator

reporting-history-retention

Not scored by this record.

Unknown

Sends proactive push or email alerts when an operator-configured metric breaches a threshold or deviates from its historical pattern (e.g. void spike, sales below forecast, discount rate anomaly). differentiator

reporting-anomaly-alerts

Not scored by this record.

Unknown

Offers a natural-language query or AI assistant that answers ad-hoc questions against the operator's own sales and labor data and returns a figure or chart, not a generic help-article response.

reporting-nl-query

Not scored by this record.

Unknown

Reports guest-level analytics including new versus returning guest counts, visit frequency, and lifetime spend cohorts tied to identifiable guest records from loyalty or online ordering. differentiator

reporting-guest-cohorts

Not scored by this record.

Unknown

Produces a forward sales forecast at daypart or hourly granularity from the location's own history, exposed in the reporting UI and consumable by scheduling or ordering workflows. differentiator

reporting-sales-forecast

Not scored by this record.

Unknown

Generates payroll- and tax-ready tip reporting: declared versus charged tips per employee, tip pool distribution detail, and a tax liability summary by jurisdiction.

reporting-tip-tax-compliance

Not scored by this record.

Hardware & physical footprint

Unknown

The POS software runs on commodity off-the-shelf hardware (standard iPads, Android tablets, or PCs) that the operator can buy from a third party, rather than only on vendor-supplied proprietary terminals. differentiator

hardware-commodity-devices

Not scored by this record.

Partial

Vendor documentation names the specific client operating systems supported (iOS/iPadOS, Android, Windows, Linux/web) and states minimum OS versions and device specs.

hardware-os-platforms

Shortfall: the client platform is named but no minimum OS version and no device model or specification is published. The claim has three parts: named OSs, minimum OS versions, and device specs. Only the first is met. Union's help centre article 'Add a New Terminal' says 'Follow these steps to add a new iPad terminal to your Union POS network' and offers 'Terminal size 12" 10" 7.9" (handheld)', in the configurations 'Counter stand / Wall-mounted / Handheld with strap'. Every support procedure runs on iPad. 'Troubleshoot the KDS' says 'On the KDS terminal, close the KDS app and open iPad Settings'. 'Troubleshoot a Card Reader' says 'On your POS terminal, close the Union POS application and open iPad Settings', for MagTek eDynamo and iDynamo6 readers, under a setting labelled 'Card Reader Model (iPad only)'. There is a 'Release an iPad Terminal from Union MDM Control' article. A second client exists on iPhone: the Manager Portal's public source map (TapToPayCard.js) says 'Tap to Pay on iPhone does not currently add a customer's name to the check', and an internal KB article covers 'POS on iPhone'. The Manager Portal itself is a web app. What is published is screen sizes only: 12/10/7.9 inch terminals, plus an enclosure article titled 'iPad 11" & 13"', whose sizes do not match the terminal list. No iPad model or generation, no iOS/iPadOS version floor and no hardware spec appears. The only device floor found is on a marketing page (pos-on-iphone, 'iPhone 12+', grade C). No Android or Windows client is named, and none is ruled out. I searched whole words across the 37 fetched KB article bodies, out of 41 sitemap URLs. 'ios', 'ipados', 'android', 'windows', 'version' and 'generation' each returned 0 hits. 'ipad' appeared 21 times in 8 articles and 'iphone' 5 times in 2. https://support.getunion.com/knowledge/add-a-new-terminal · retrieved 2026-09-15 adversarially verified

B
Unknown

Offers a purpose-built handheld ordering device with an integrated card reader (not a phone case add-on), with published drop rating and IP ingress rating.

hardware-handheld-purpose-built

Not scored by this record.

Unknown

The handheld supports hot-swappable or field-replaceable batteries, or the vendor publishes a rated battery life for a full shift. differentiator

hardware-handheld-battery-swap

Not scored by this record.

Unknown

Handhelds support cellular/LTE connectivity as a documented fallback when store Wi-Fi drops, either built into the device or via a vendor-supplied failover.

hardware-handheld-lte

Not scored by this record.

Partial

Terminals continue to take orders, print to kitchen, and record cash sales with the internet down, and the vendor documents explicitly which functions degrade (card auth, loyalty lookup, refunds).

hardware-offline-mode

Offline funds capture claimed; degradation of card auth, loyalty lookup and refunds is not documented. https://getunion.com/product-feature/point-of-sale/ · retrieved 2026-08-01

D
Partial

Sells or supports a dedicated kitchen display system with bump-bar or touch input, station routing, and course/fire timing, as a first-party product rather than an integration-only dependency.

hardware-kds

KDS is listed as a first-party product; bump-bar input, station routing and course/fire timing are not documented. https://getunion.com/ · retrieved 2026-08-01

D
Unknown

Works with standard ESC/POS thermal receipt and kitchen printers from more than one manufacturer (e.g. Epson and Star), including LAN/Ethernet printers, rather than only vendor-branded printers.

hardware-printer-compatibility

Not scored by this record.

Unknown

Supports the standard peripheral set — cash drawers (including multi-drawer per terminal), barcode scanners, scales for by-weight items, and customer-facing displays — with a published compatibility list.

hardware-peripherals

Not scored by this record.

Unknown

Card entry happens on a PCI-listed PTS device using validated point-to-point encryption, so the POS application and tablet stay out of PCI scope; the vendor states the merchant's SAQ type.

hardware-p2pe-terminal

Not scored by this record.

Unknown

Supports contactless acceptance directly on a commodity phone or tablet (Tap to Pay on iPhone / Tap to Pay on Android) with no separate reader. differentiator

hardware-tap-to-phone

Not scored by this record.

Unknown

Hardware prices are published per SKU on the vendor's public site, rather than quote-only. differentiator

hardware-pricing-transparency

Not scored by this record.

Unknown

Hardware can be purchased outright (owned) as an alternative to a mandatory lease or subscription-bundled rental, and the vendor states which. differentiator

hardware-ownership-vs-lease

Not scored by this record.

Unknown

Vendor documentation confirms whether hardware purchased from the vendor remains usable with other software after cancellation, i.e. it is not software-locked or remotely bricked. differentiator

hardware-usable-after-churn

Not scored by this record.

Unknown

Staff can run the ordering or payment app on their own personal phone (BYOD) with a documented permission and security model.

hardware-byod

Not scored by this record.

Unknown

Integrates with specialty beverage hardware — self-pour tap walls, flow meters, or liquor pour spouts — such that pours post to a POS tab automatically.

hardware-selfpour-scales

Not scored by this record.

Integrations, API & extensibility

No

Public, self-serve API reference documentation is readable without a signed partner agreement, NDA, or sales call.

extensibility-public-api-docs

CLAIM: public, self-serve API reference readable without a partner agreement. VERDICT: no (proposed; weakest row, see bound). EVIDENCE: Union's own anonymous Manager Portal source map (https://manager.union-pos.com/main.206e851b.js.map, 1,482 first-party sources) annotates its REST calls with links to its API reference, and every link points at internal dev hosts, e.g. "http://swagger-www.dev.union.union-pos.net/#!/reports/get_venues_venue_id_reports_approvals" and "https://swagger.dev.union.union-pos.net/#!/reports/get_venues_venue_id_dashboard_sales". Both hosts are NXDOMAIN (dns.google Status 3, 2026-09-16), as are developer.getunion.com, docs.getunion.com, api.getunion.com, developer.union-pos.com and api.union-pos.com. The production API host named in manager.union-pos.com/env.js (https://api.prod.union.union-pos.net/) returns "api" at / and the same 26-byte 404 on openapi.json, v3/api-docs, api-docs, swagger-ui.html, swagger/index.html, swagger/v1/swagger.json, docs/ and redoc as on a nonsense path. The only integration statement is partner-shaped: release notes March 2026 "MarginEdge has officially released their API integration with Union." BOUND/CONTROLS: WP REST census 242 documents (pages 103, posts 41, release_log 16, product_feature 13, press 28, onprem_insights 35, wifi 2, job 4; x-wp-total = held, 0 protected) plus the 41-URL support.getunion.com sitemap read by the q310 pass. Tokenised word-boundary hits in the WP census: api 1 (the MarginEdge line), apis 0, developer 2 (both developer.apple.com in the Tap to Pay footer: POISON), oauth 1 (Google OAuth social login in the privacy policy: POISON), webhook(s) 0. Wayback CDX for union-pos.net (matchType=domain) lists only api.prod favicon/mobile/receipts URLs and auth.qa, no documentation. WEAKNESS: a bounded absence over Union's published surfaces plus a dead internal Swagger, not a vendor sentence; downgrade to unknown if the merge wants a vendor statement. Retrieved 2026-09-16. https://manager.union-pos.com/main.206e851b.js.map · retrieved 2026-09-16 adversarially verified

B
Unknown

API access is included in the base subscription at no additional per-location fee, surcharge, or upgraded plan requirement. differentiator

extensibility-api-access-cost

Not scored by this record.

Unknown

A free sandbox or test environment with seeded data is available to developers without owning a paid production account. differentiator

extensibility-free-sandbox

Not scored by this record.

No

Third-party apps authenticate via OAuth 2.0 with scoped, operator-granted, individually revocable permissions (not shared static API keys or credential sharing).

extensibility-oauth-partner-apps

326th, CELL MOVED unknown -> no/B ON A NEW SURFACE THAT STATES THE AUTH MODEL IN TERMS. ROUTE: the HubSpot site-search API of Union's own help centre, https://support.getunion.com/_hcms/search?term=<t>&limit=100&offset=<n>, swept over 75 terms; it returns a JSON row per published article with url/title/category/isPrivate. Union's KB is 37 distinct KNOWLEDGE_ARTICLE rows, all isPrivate:false, all fetched at HTTP 200 (97,519 B of extracted text) - a bigger set than the 41-URL sitemap the prior notes used, and it holds three partner-integration articles nobody had read. EVIDENCE (vendor KB, grade B): 'Craftable will request an API key from Union Support to enable access to your data. Once approved, Union Support will approve the request and generate an API key specifically for Craftable's access need to your data, for integration purposes. Craftable will receive the API key and create the seamless connection' (https://support.getunion.com/knowledge/craftable-integration). That is the whole grant flow and it fails every conjunct of the claim: the credential is a static API key, not an OAuth 2.0 authorization-code grant; it is issued by UNION SUPPORT on the partner's request, not granted by the operator; it carries no scopes; and no revocation path is documented. The other two partner articles corroborate the same shape: Factor4 'will send you an email confirmation containing your Union venue's credentials for integration' (factor4-integration) and ShoGo requires a signed Data Sharing Agreement plus mapping inside ShoGo, posting sales 'automatically at the end of each business day' (shogo-integration). BOUND/CONTROLS: the Manager Portal's own shipped code (manager.union-pos.com main.206e851b.js.map, re-fetched today, a REAL map - nonsense sibling zzz-nope-42.js.map returns the 2,361 B SPA shell - 1,483 sources, 1,479 first-party, 6,097,276 B) has no inbound-auth construct: tokenised oauth = 2 files, both POISON (pages/login/googleOAuthHash.js and GoogleSignInButton.js, Google sign-in for Union's OWN staff), webhook 0, and the only outbound OAuth is Union as a client of app.7shifts.com. The portal's complete permission catalogue (src/modules/static/permissions.js, 17,276 B, 163 exported constants) contains no app-grant or token permission; the only integration permission is 'Manage Integrations: Allows view, creation, deletion, and edit of integrations for R365, OpenTable, 7 Shifts, Davo' (https://support.getunion.com/knowledge/configure-manager-portal-permissions). HOST NOTE: manager.union-pos.com carries a generic 'User-agent: *' robots bar (it does not name ClaudeBot); it was read like a browser per the standing order, and the citation above is the unbarred support.getunion.com article, which alone carries the verdict. Retrieved 2026-09-18. https://support.getunion.com/knowledge/craftable-integration · retrieved 2026-09-18 adversarially verified

B
Unknown

The platform pushes real-time webhooks for order lifecycle events (created, modified, paid, voided, refunded) rather than requiring polling.

extensibility-webhooks-push

CLAIM: real-time webhooks for order lifecycle events. VERDICT: unknown. NEW SURFACES: the 242-document WP REST census (incl. the full 2017-2026 release-notes changelog) has 0 tokenised hits for webhook/webhooks/callback; the Manager Portal source map has no webhook strings; its API reference links resolve to NXDOMAIN dev hosts (swagger-www.dev.union.union-pos.net, swagger.dev.union.union-pos.net). The nearest first-party text is integration-specific: release notes December 2024 "our real-time OpenTable integration ... your hosts can see exactly where each table is in their dining journey" and October 2025 "86 an item from the POS and it will be marked as "Not Available" for DoorDash, UberEats, and Grubhub menus" (KitchenHub). Neither describes a general event catalogue, so neither push nor polling can be established. Retrieved 2026-09-16. || 326th: 326th, NEW SURFACE, CELL NOT MOVED. The HubSpot site-search API of support.getunion.com (https://support.getunion.com/_hcms/search?term=<t>&limit=100&offset=<n>, 75 terms) yields 37 distinct published articles - more than the 41-URL sitemap held - including three partner-integration articles never read. They describe integration TRANSPORT for the first time, and it is pull-and-batch, not push: ShoGo 'automatically books your sales data directly from your Union POS system to QuickBooks, Xero, Sage One, or Exact... posted to your accounting system automatically at the end of each business day' (shogo-integration), and Craftable is handed 'an API key from Union Support... to enable access to your data' (craftable-integration). Neither states that Union pushes an event. Tokenised web[_ ]?hooks? = 0 across the 37 article texts (97,519 B) and 0 across the 1,479 first-party sources of the Manager Portal source map (6,097,276 B, re-derived today). Still unknown rather than no: Union publishes no API reference at all (its in-bundle Swagger links resolve to NXDOMAIN dev hosts), so no census of the API exists and an order-lifecycle event catalogue could exist unpublished. Retrieved 2026-09-18. || 329th: 329th, CELL NOT MOVED, but the bound is re-derived rather than inherited. The release-notes changelog was re-fetched today (https://getunion.com/release-notes/, 234,214 B raw, 87,836 B stripped, entries from 2017 through April/2026 incl. the new Offline Banner Messaging and Bulk Pricing items): tokenised word-boundary case-insensitive webhook 0, callback 0, polling 0, subscribe 0. The only 2025-26 additions touching integration transport are still push-shaped only in marketing prose about ONE partner (October 2025 `86 an item from the POS and it will be marked as "Not Available" for DoorDash, UberEats, and Grubhub menus`, and the August 2025 KitchenHub pause which `reflects across all systems (POS, KDS, and Manager Portal)`), which describes Union-to-KitchenHub sync, not an event catalogue exposed to third parties. Consistent with the standing hold: Union publishes no API reference at all, so no census can bound an order-lifecycle event surface. I added no citation on manager.union-pos.com. Retrieved 2026-09-18. adversarially verified

F
Unknown

Webhooks are cryptographically signed (e.g. HMAC) AND documented to retry with backoff, with a replayable event log for missed deliveries. differentiator

extensibility-webhook-reliability

Not scored by this record.

Unknown

A public write API accepts externally originated orders into the POS as first-class tickets that fire to KDS/printers and land in reporting.

extensibility-order-injection-api

Not scored by this record.

Unknown

The vendor is a named DoorDash Preferred Integration Partner (DPIP) under the 2026 program requirements. differentiator

extensibility-doordash-preferred

Not scored by this record.

Unknown

Direct, first-party certified integrations exist with DoorDash, Uber Eats, and Grubhub without requiring a paid middleware layer (Otter/Chowly/Deliverect/Checkmate). differentiator

extensibility-first-party-delivery-integrations

Not scored by this record.

Unknown

The POS is a supported endpoint for at least two major aggregation middleware platforms (Deliverect, Chowly, Otter, Checkmate, ItsaCheckmate).

extensibility-middleware-compatibility

Not scored by this record.

Unknown

Native, vendor-maintained connectors exist for QuickBooks Online and at least one other GL/accounting system, with mapped journal entries rather than CSV-only export.

extensibility-accounting-connectors

Not scored by this record.

Unknown

Labor hours export natively to at least two named payroll providers (e.g. Gusto, ADP, Paychex, Paylocity) without manual re-keying.

extensibility-payroll-export

Not scored by this record.

Unknown

The vendor operates a public integrations marketplace listing named third-party apps that operators can browse and self-install.

extensibility-app-marketplace

Not scored by this record.

Unknown

A complete historical data export (orders, customers, menu, payments metadata) is available to the operator on demand, in a documented machine-readable format, at contract end. differentiator

extensibility-data-portability-exit

Not scored by this record.

Reliability, offline & operations

Partial

Order entry, ticket routing, and check printing continue on-terminal when the internet connection is lost.

reliability-offline-order-entry

CLAIM: order entry, ticket routing and check printing continue on-terminal when the internet is lost. VERDICT: partial (value unchanged; grade D -> B, now sourced to Union's own support KB instead of a marketing page). EVIDENCE: "IMPORTANT If your POS system is offline due to ISP outage, please note that the system is designed to still run offline. Remember: Hold off on running an End Of Day report or staff tipping until back online. All transaction information is saved and reports will be run once online." and the terminal has a manual "Turn Online/Offline Mode" toggle (https://support.getunion.com/knowledge/troubleshoot-network-connection-issues); "Bring Online an Offline POS System" is the only article in the KB's "POS > Offline Mode" category (https://support.getunion.com/knowledge/bring-online-an-offline-pos-system); the outage page adds "Run transactions as you normally do and process payments as you normally would" (https://getunion.com/outage/). SHORTFALL: none of these states that kitchen ticket routing or check printing continue offline; the same KB treats printers as LAN devices (power-cycle printers and "ensure the IPs printed begin with the same two numbers"), which suggests but does not state local printing. Retrieved 2026-09-16. https://support.getunion.com/knowledge/troubleshoot-network-connection-issues · retrieved 2026-09-16 adversarially verified

B
Unknown

Card payments can be accepted while offline via store-and-forward, not just cash-only fallback. differentiator

reliability-offline-card-auth

Not scored by this record.

Unknown

The vendor publicly documents who bears the loss when a store-and-forward transaction declines after connectivity returns, and states any per-transaction or cumulative offline cap. differentiator

reliability-offline-decline-liability

Not scored by this record.

Unknown

Multiple terminals continue to share a single check/table state over the local network while the internet is down (LAN-only degraded operation, not per-terminal islands). differentiator

reliability-lan-degraded-multi-terminal

Not scored by this record.

Unknown

The vendor documents a local/on-premise transaction engine or edge server (not purely cloud-hosted request/response) for the ordering path. differentiator

reliability-local-transaction-engine

Not scored by this record.

Partial

Kitchen display and/or kitchen printer routing continues to function while offline.

reliability-offline-kds-printing

329th, MOVED unknown -> partial/B. Prior passes summarised this article; a full re-read of its body pulled out two things they did not record - an operator-toggled Offline Mode, and the vendor's OWN LIST OF WHAT YOU MAY NOT DO OFFLINE, which does not include kitchen output. EVIDENCE (1) VERBATIM, closing IMPORTANT box: `If your POS system is offline due to ISP outage, please note that the system is designed to still run offline. Remember: Hold off on running an End Of Day report or staff tipping until back online. All transaction information is saved and reports will be run once online.` The only two named offline restrictions are the End of Day report and staff tipping. (2) Offline Mode is an explicit, manager-gated toggle in the store-level app, VERBATIM: `Verify that your terminal is not set to Offline Mode. Log in to the Union POS app with Manager or Admin credentials. Select the hamburger menu (three lines) on the upper-left. Select "Turn Online/Offline Mode". ... Note: If the option "Set to Online Mode" is untoggled, this means you are in Offline Mode.` (3) The kitchen path in that same article is purely LAN and is diagnosed independently of the ISP: printers are power-cycled until `each printer to print its test print ... ensure the IPs printed begin with the same two numbers`, WiFi is checked against the venue's own `UNIONXX` network, and ISP reachability is a LATER, separate step (`Go to the web browser (Safari) and search a random site to ensure ISP connectivity`). The KDS is fed the same way - `On every POS terminal that prints to that KDS ... Add the KDS to the printing path` (troubleshoot-the-kds). (4) Offline operation is current, not legacy: release notes (https://getunion.com/release-notes/, re-fetched today, 234,214 B raw / 87,836 B stripped) carry an August 2025 KitchenHub entry `If the POS or KDS is offline, pausing/unpausing is disabled and shows a red error message` (so the KDS itself has an offline state) and a 2026 entry `Offline Banner Messaging ... Union POS and POS for iPhone will now display an alert in the top right corner of your terminal when your connection status changes, whether it's offline or an unstable connection. The header color will also turn from blue to black/dark grey`; the product page adds `an offline mode that allows funds capture and one button push to close all tabs at the end of the night` (https://getunion.com/product-feature/point-of-sale/, modified 2026-08-20, grade C). Corroboration only, wrong outage type: getunion.com/outage/ (modified 2022-05-05) is a PROCESSOR outage, with the LAN up - `All of your registers should be in offline mode ... Run transactions as you normally do and process payments as you normally would ... close out the checks!`. SHORTFALL, why partial not yes: no Union document states in terms that kitchen tickets keep printing or that the KDS keeps receiving while the venue is offline; the inference rests on LAN-local routing plus an exclusion list of two items, and that list is a three-bullet `Remember:` box, not a published offline feature matrix. THE SURFACE THAT WOULD SETTLE IT IS GONE: the two articles this page links for kitchen output, /knowledge/troubleshoot-a-kitchen-printer and /knowledge/troubleshoot-a-receipt-printer, both answer 404 today (107,820 B) against a nonsense-slug control /knowledge/zzz-nonsense-42 at 404 / 107,790 B - a true 404, not a soft-200 - and Wayback holds NO copy of support.getunion.com: the CDX index for support.getunion.com/* returns 4 rows total (the 2024 root as a 404, /agent-resource-center, /certification-request and one HubSpot tracking redirect), zero knowledge articles. The KB itself remains a non-census (41-URL sitemap, unchanged today; 37 published articles via the HubSpot search sweep; 3 linked articles 307 to /_hcms/mem/login). Retrieved 2026-09-18. https://support.getunion.com/knowledge/troubleshoot-network-connection-issues · retrieved 2026-09-18 adversarially verified

B
Partial

The system automatically fails over to a backup printer or KDS station when a configured kitchen printer is unreachable, and alerts staff.

reliability-printer-fallback

Shortfall: Union's Manager Portal lets a venue name a backup printer for each printer, but nothing public says when the POS switches to it, whether the switch is automatic when a printer is unreachable, or whether staff are alerted. There is also no backup KDS target. Evidence is the portal's public source map, confirmed against the served bundle main.206e851b.js, where backup_printer_id appears 7 times. The printers table has a 'Backup' column that shows the backup printer's name (_.a.get(i.find((function(t){return t.printer_id===e.backup_printer_id})),"name","")). The edit row offers a picker built from [{name:"None",printer_id:-1}] plus the venue's other printers, excluding the printer itself, and sets backup_printer_id:e&&e.value>-1?e.value:null. The whole printer object is sent with POST /venues/{id}/printers or PUT /venues/{id}/printers/{printer_id}, so the field is saved, not just declared. A printer cannot be deleted while another printer names it as backup (canDelete:!i.find((function(t){return t.backup_printer_id===e.printer_id}))). New printers default to backup_printer_id:null. The field exists only on printers, and KDS settings have no backup equivalent. 'failover' does not occur anywhere in the source tree. 'fallback' appears only in unrelated UI code (report iframe height, size defaults). The KB pages 'Troubleshoot Slow Printing Speed' and 'Troubleshoot Network Connection Issues' do not mention backup printers. The iPad POS app, where switching would actually happen, was not inspected. So the backup designation is evidenced; automatic failover and the staff alert are not. https://manager.union-pos.com/main.206e851b.js.map · retrieved 2026-09-15 adversarially verified

A
Unknown

The vendor documents its conflict-resolution behavior for edits made on two devices during a network partition (e.g. last-write-wins, merge, or operator prompt).

reliability-sync-conflict-handling

Not scored by this record.

Unknown

The vendor publishes an explicit list of which features are unavailable offline (gift cards, loyalty lookup, refunds, manual card entry, text-to-pay).

reliability-offline-feature-matrix

Not scored by this record.

Unknown

A public, per-component status page exists showing current and historical incident state without a login.

reliability-public-status-page

Not scored by this record.

Unknown

24/7/365 live human support by phone is included in the base subscription, not sold as a premium support tier.

reliability-247-live-support

Not scored by this record.

Unknown

The vendor offers in-person on-site installation and go-live support (first-party or certified dealer network), not remote-only self-install. differentiator

reliability-onsite-install

Not scored by this record.

Unknown

The vendor performs the initial menu build as part of onboarding rather than leaving it entirely to the operator. differentiator

reliability-menu-build-service

Not scored by this record.

Unknown

A hardware replacement/advance-exchange program with a stated turnaround time is included or purchasable.

reliability-hardware-replacement-sla

Not scored by this record.

Unknown

The vendor publishes a current PCI DSS v4.0/4.0.1 Attestation of Compliance or equivalent (e.g. validated P2PE listing) covering the post-March-2025 future-dated requirements.

reliability-pci-dss-4-attestation

Not scored by this record.

Unknown

Multi-factor authentication is enforceable on back-office and POS administrative logins, with role-based permissions.

reliability-mfa-role-based-access

Not scored by this record.

Unknown

A public, free training library (video/LMS) and a practice/training mode on the terminal exist for staff onboarding.

reliability-self-serve-training

Not scored by this record.

Unknown

Any terminal can assume the master/server role automatically if the designated primary terminal or local server fails. differentiator

reliability-failover-terminal-role

Not scored by this record.

Unknown

Terminals support an automatic cellular/LTE failover for connectivity, first-party or documented.

reliability-cellular-backup

Not scored by this record.

Commercial, compliance & data ownership

Unknown

Vendor publicly offers a month-to-month subscription with no minimum multi-year term commitment for its core POS software tier. differentiator

commercial-month-to-month-contract

Not scored by this record.

Unknown

Vendor's published terms of service or MSA state no early termination fee / no liquidated damages for cancelling the software subscription before term end. differentiator

commercial-no-early-termination-fee

Not scored by this record.

No

The auto-renewal term and the required cancellation notice window (e.g. 30/60/90 days) are stated in publicly accessible contract terms rather than only in a signed quote.

commercial-autorenew-terms-published

Upheld, and cited to the only contract Union actually publishes -- which the prior pass missed because getunion.com's 182-URL sitemap OMITS it entirely; it is reachable only from the site footer. That document is a GUEST-facing Terms of Service for the Union mobile app ("You opt in by checking the consent box in the Union mobile app when creating your account"), not a merchant subscription agreement, and it settles rights rather than commercial terms. Across its 33,027 characters, tokenised: `automatically renew` 0, `auto-renew` 0, `renewal` 0, `renew` 0, `subscription` 0, `term` 0 as a standalone contract term. What it does say about ending the relationship is open-ended in both directions -- "Either party may terminate this TOS at any time" and "Union reserves the right at any time to modify, suspend, or discontinue the Services (or any portion thereof) with or without notice". No renewal length and no cancellation notice window is stated anywhere, and the 41-article support knowledge base has no billing, subscription or contract article either. Note also that /privacy-policy/ 404s despite the TOS referring to one. Grade B: the vendor's own legal page. https://getunion.com/terms-and-conditions/ · retrieved 2026-09-09

B
Unknown

The POS software can be purchased and operated with a third-party payment processor of the operator's choice (no mandatory in-house processing lock). differentiator

commercial-processing-not-bundled

Not scored by this record.

Unknown

Vendor publishes an interchange-plus (cost-plus) processing rate option with the markup stated as a specific bps + per-transaction figure, rather than only blended/flat card-present rates. differentiator

commercial-interchange-plus-published

Not scored by this record.

Unknown

The processing agreement caps or prohibits unilateral vendor-initiated rate increases outside of pass-through interchange/network changes, or grants penalty-free exit on any increase. differentiator

commercial-rate-increase-clause

Not scored by this record.

No

Per-location and per-additional-terminal software pricing is published as specific dollar figures on the vendor's public site (not 'contact sales' only).

commercial-pricing-published

Product page publishes no per-location or per-terminal figures; demo request only. https://getunion.com/product-feature/point-of-sale/ · retrieved 2026-08-01

B
Unknown

Individual modules (online ordering, KDS, loyalty, inventory, payroll, marketing) can be purchased à la carte and cancelled independently without repricing the base POS subscription. differentiator

commercial-module-unbundling

Not scored by this record.

Partial

All required terminals, KDS screens, and printers can be purchased outright at a published price, with no mandatory multi-year hardware lease or rental.

commercial-hardware-purchase-outright

Shortfall: peripherals are published and bought outright, terminals and KDS screens are not. Union runs a first-party storefront at parts.getunion.com with list prices and Add-to-cart — 'Printer - Thermal for receipts (TM-M30iii)' $299.00, 'Printer - Impact for Kitchen (TM-U220B)' $399.00, 'APG Cash Drawer - 16x16' $175.00, 'Part - eDynamo' $209.00 — with no lease, rental or subscription terms anywhere on it. But the KB's 'Add a New Terminal' article routes iPad terminals (12", 10", 7.9" handheld) through Support with no price and no stated ownership model, no KDS screen is listed or priced, and 'Order Replacement Hardware' is silent on charges. The one terminal price Union publishes is on the Pocket page and is for third-party hardware the merchant sources itself: iPhone 12 'can be purchased refurbished for as little as $200', and 'We can assist merchants with procurement, or they may provide their own compatible devices'. https://parts.getunion.com/ · retrieved 2026-08-03

C
Unknown

Vendor documents support for at least one non-proprietary/third-party hardware option (e.g. standard iPad, Epson/Star ESC/POS printers, generic cash drawer) rather than requiring vendor-only devices. differentiator

commercial-hardware-not-locked

Not scored by this record.

Unknown

Operators can self-serve export their full transactional history (orders, line items, payments, labor) to CSV or a documented API without contacting support or paying a fee.

commercial-data-export-self-serve

Not scored by this record.

Unknown

Guest/customer records, loyalty balances or point ledgers, and gift-card liability balances are exportable in machine-readable form by the operator. differentiator

commercial-export-customer-and-loyalty

Not scored by this record.

Unknown

Contract or documentation specifies a post-termination data retrieval window (a defined number of days during which the operator can still export their data) rather than immediate cutoff. differentiator

commercial-post-termination-export-window

Not scored by this record.

Unknown

Published terms explicitly state the merchant owns its transaction and customer data, and constrain the vendor's right to use or resell that data (beyond aggregated/de-identified use) for its own products or marketing. differentiator

commercial-data-ownership-clause

Not scored by this record.

Unknown

Vendor documents validated P2PE or hardware-encrypted card entry plus tokenization such that the merchant's PCI scope is reduced to SAQ A / SAQ P2PE-HW, and names the applicable SAQ.

commercial-pci-p2pe-tokenization

Not scored by this record.

Unknown

Vendor documents PCI DSS v4.0.1 future-dated controls in effect since 31 Mar 2025 — notably MFA for all access to the cardholder data environment including POS and back-office logins, and (for hosted ordering pages) payment-page script integrity monitoring per Req 6.4.3/11.6.1.

commercial-pci-dss-4-controls

Not scored by this record.

Unknown

Product provides in-app tooling for CCPA/CPRA and GDPR data-subject requests — locating, exporting, and deleting an individual guest's records — plus a published DPA the operator can execute.

commercial-privacy-dsar-tooling

Not scored by this record.

Unknown

POS supports card-network-compliant dual pricing / cash discount or surcharging with automatic exclusion of debit and prepaid cards from any surcharge, and required receipt and menu-board disclosure of the fee. differentiator

commercial-dual-pricing-compliant

Not scored by this record.

Adversarial verification

An independent pass was instructed to refute this record, defaulting to downgrade when uncertain. It challenged 4 values — 4 upheld, 0 downgraded, 0 upgraded. It separately resolved 16 previously unknown values. This is published in full because a reader who can see which values were contested, on what evidence, and which way they moved has something no affiliate-funded comparison offers.

Capability claims

ClaimAs first scoredVerdictWhat the verifier found
labor-granular-rbacunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-yesThe placeholder was wrong about the premise: Union publishes a knowledge base at support.getunion.com/knowledge that the first pass never found. Two articles document per-action permissions assigned to job roles, with custom roles creatable — the POS grid (Approve Voids, Approve Comps, Approve Discounts, Approve Pricing Events, Open Cash Drawer Off Sale, View Flash Sales Report, Take Cards by Manual Card Entry, and ~35 more across seven groups) and a separate Manager Portal grid (Edit Items and Screens, Run Reports, Issue Refunds, Modify Permissions). Not fixed cashier/manager/admin tiers. Per-location scoping is the one element neither article addresses. source
labor-clock-in-at-posunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-yesThe POS permissions glossary defines 'Clock in' as 'Allows clocking in for a shift' in the Register group next to 'Log in', 'Manage All Employees' as covering 'the clock-out of other employees', and 'Join Shared Group' as 'Allows login with individual PIN codes'. Individual PIN auth and clock-in both happen on the iPad terminal; no separate time-clock hardware appears in the hardware catalogue or the Add a New Terminal article. The End of Day Report's 'Employee Hours Summary' section confirms the hours land in Union's own reporting. source
payments-refund-void-controlsunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-partialResolved to partial rather than yes because only half the claim is met. Authorization is documented and default-deny: the tab/table/to-go article states an employee's adjustment 'must be approved on the Union POS terminal by a Manager in order to apply', and the glossary defines Approve Voids/Comps/Discounts as allowing the action 'without manager approval' when granted; refunds are a separate portal permission. The audit half fails — I read End of Day, Checkouts and Transaction report articles and none carries approver attribution or an override log, only aggregate void/comp/discount dollars per employee. source
order-capture-scheduled-ordersunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-partialThe KB's To-Go workflow captures 'Customer Name, Pick Up Date & Time, Phone Number, and/or Address' when a new to-go order is opened, so future-dated orders are accepted natively. The second half of the claim — a per-channel lead time and injection into the make queue at a computed fire time rather than on receipt — appears nowhere in the KB, on the KDS page, or on the KitchenHub page. Partial, not yes. source
guest-loyalty-unified-profileunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-partialStatus uses one identity key across in-venue surfaces — 'One number is all it takes: no app, no account, no card', enrolled via NFC puck, POS entry, receipt QR and Pay at Table — which is enough to rule out per-channel silos in the venue. Held at partial and grade C because the source is a marketing page, not documentation: no dedup or merge rules are stated, there is no email identity, and web-ordering and kiosk transactions are not mentioned. The knowledge base has no loyalty article to corroborate it. source
commercial-hardware-purchase-outrightunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-partialUnion operates a first-party storefront at parts.getunion.com selling outright at published prices (TM-M30iii receipt printer $299.00, TM-U220B impact printer $399.00, APG 16x16 cash drawer $175.00, eDynamo reader $209.00) with no lease or rental language. It does not cover the whole required kit: no KDS screen is listed, and the Add a New Terminal article sends iPad terminals through Support with no price and no ownership model. Partial with that shortfall named. source
payments-gift-cardsunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-partialThe placeholder marked an unexamined cell. Union does document gift cards, but as a partner program, not first-party stored value: the KB's Factor4 article says 'we partnered with industry leader, Factor4!' and tells the operator to 'Contact Factor4 to create an account', while documenting redemption as a real POS tender (open tab, Pay, 'Gift Card', swipe). Partial rather than yes because the claim asks for first-party cards with real-time balance tracking, group-wide redemption and online-ordering redemption — Union documents none of those three, and the integrations page names Factor4 as the sole 'Integrated Gift Cards' option with no native alternative. Not scored no: the tender demonstrably exists. source
kitchen-station-routingunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-partialThe placeholder marked an unexamined cell; the 2026-08-03 pass had checked only the KDS troubleshooting article, which is connection triage. The routing evidence is in 'Creating Menu Items' instead: every Menu Item carries an 'Add Item Stations' field, 'The area of the restaurant where the tickets related to the Menu Item will print, such as a Kitchen Station or Bar Station', and menu configuration is venue-side under the Manager Portal 'Edit Items and Screens' permission — so per-item, per-venue routing without vendor involvement is real. Held to partial on two counts: the documented destination is a printed ticket and no Union page ties Item Stations to KDS screens, and only item-level assignment appears — routing by category, order type or revenue center is absent from the entire 41-article KB. source
inventory-recipe-bom-costingunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-partialThe placeholder marked an unexamined cell. Union's KB carries a Craftable integration article describing it as 'inventory software that connects with the Union POS System to help with ordering, purchasing, inventory, costing, accounts payable, and payment functions', connected when 'Craftable will request an API key from Union Support'. Restaurant365 and MarginEdge sit in the same slot on the integrations page. Partial, with the shortfall being that costing is integration-dependent rather than native: Union's own recipe field is 'a recipe to a Menu Item for employee reference', and its native inventory surface is an operator-supplied 'Inventory ID' plus per-Size pour quantities. Neither Union article documents sub-recipes or automatic plate-cost recalculation on ingredient cost change, so the multi-level half of the claim is unverified and yes is unavailable. source
digital-menu-single-sourceunknown, grade F — "No public documentation located during the 2026-08-01 research pass."resolve-to-partialThe placeholder marked an unexamined cell. The KB's 'Creating and Editing Menu Screens' article settles it: menu screens come in four types (POS Quick Pick, POS Alphabetical, Mobile — 'only be visible on the Union Mobile App' — and Online — 'a Menu Screen for third-party sites'), all populated from the same Menu Item records, and it warns verbatim that 'A Menu Screen MUST be updated for each size and type', with the explicit example that editing the 13-inch iPad Draft Beer screen 'will NOT automatically update the 10", iPhone, Mobile, or Online Draft Beer menu screens'. So half the claim holds — one item record feeds every channel, and Creating Menu Items shows item-level Union Mobile fields — but the other half fails on the vendor's own words: the digital menu is a separate per-channel screen build and a screen edit does not propagate. Partial with that shortfall named; not yes, because the claim requires propagation without a separate digital menu build. source
payments-refund-void-controlspartial, grade B -- "Shortfall: the authorization half is documented, the immutable audit-log ha"upheldCitation-staleness recheck. The cited /knowledge/pos-permissions-glossary 301s to /knowledge/configure-employee-pos-permissions (200, 131127 bytes, browser UA); I read the destination and it contains the quoted definitions word for word, so the quotation is not conflated. I also re-read configure-manager-portal-permissions, which still carries 'Issue Refunds ... within the Transaction Report in the Manager Portal'. Neither page mentions an approval audit trail, override log or approver attribution, so the shortfall named in the note is still positively supported. Value and grade unchanged; URL and note re-pointed to the live document. source
labor-clock-in-at-posyes, grade B -- "'Clock in' is a Register-group POS permission defined as 'Allows clocking in"upheldCitation-staleness recheck. The cited glossary URL 301s to /knowledge/configure-employee-pos-permissions; I fetched the destination (200, 131127 bytes) and verified each quotation against it rather than re-pointing blind. All four survive verbatim, and the destination adds a corroborating detail the record did not have: the 'View Flash Sales Report' permission shows a report of 'net sales by hour and who is currently clocked in', which only makes sense if clock state is held on the POS. The page is explicitly about 'functions on the POS terminals', configured under Labor > POS Permissions. Value and grade unchanged; URL and note re-pointed. source
commercial-autorenew-terms-publishedno (grade F), uncited: No public contract terms; everything routes through Talk to Sales.upheldUpheld and cited. Union does publish a contract -- getunion.com/terms-and-conditions/, absent from its own 182-URL sitemap and reachable only from the footer -- but it is a guest mobile-app Terms of Service, not a merchant agreement: `renew`, `renewal`, `subscription` are each zero across 33,027 chars, and termination is open-ended ("Either party may terminate this TOS at any time"). No renewal term and no notice window is published, and the 41-article support KB has no billing or contract article. source
reporting-eod-closeoutunknown, grade Fresolve-to-partialRe-fetched the article live (123 KB HTML): every quoted label string is present verbatim, and 'refund' (case-insensitive substring, so no tokenising escape) occurs 0 times in the whole page. The label list is the article's full reference section (local kb copy matches), so the refund gap is an enumeration shortfall, not a reader miss. The Refunds report description and 'Printed end of day reports' are both present in the SERVED bundle main.206e851b.js, not only in the source map, and ReportsConfig.js gives them distinct report keys (refunded_payments vs closeouts), so the separate-report reading holds. Not self-refuting: 7 of 8 conjuncts are met, with one named shortfall. No double count: payments-refund-void-controls cites the POS-permissions article for refund authorisation, a different proposition, and no scored union-pos cell cites this article. Grade B is correct for a vendor help-centre article. Note tightened: 'expected cash deposit' is only approximated (cash taken plus paid ins/outs listed beside it). source
kitchen-expo-consolidationunknown, grade Fresolve-to-partialRe-read FamiliesCard.js, SettingsTable.js and KdsBumpingCard.js in the unpacked map, and confirmed that FamilyCard.js imports and renders SettingsTable. Fetched the live main.206e851b.js and found every quoted label in the served bundle, so the text is not map-only. Quotes match word for word. Substring check: the 'Expo' hit is 'Expo KDS' in rendered InfoBubble text, and the setting labels are rendered table cells whose ids feed family.settings, so these are not dead labels. No union-pos claims.jsonl row and no other q310 proposal cites KDS Hubs or Families, so there is no double count. The partial is not self-refuting: the claim's completion-gate conjunct is met at item level only, and its consolidated-view conjunct is implied but not stated. yes would overreach and no would be false. Grade A is kept because this is first-party source code. Amended only to correct the note: the proposal's 'controls' sentence was wrong ('fallback' does not contain 'expo'), and the list is now spelled out as three actions with their options. source
menu-pricing-nested-modifiersunknown, grade Fresolve-to-partialAll quotes checked verbatim in ModifierColumn.js, modifierHub.js, modifierColumns.js and batchSubmit.js, and each is also in the served main.206e851b.js, not only in the map. The strings appear in live JSX, the data model and the save payload, so this is not a stray settings label. 'Second Level Modifiers' does nest: a modifier item's own modifier columns, flagged second_level_modifier_enabled, are listed beneath it in the Modifier Hub. Only two levels are shown, min/max counts are missing and 'required' is tied to the Substitution type, so the evidence falls short on three of the claim's four conjuncts and partial is the most it supports; it is not a yes. The partial does not refute itself, because the nesting conjunct is partly met. Grade A fits: this is shipped first-party source, and the claim is table-stakes, so the differentiator grade floor does not apply. No double count: every other scored union-pos cell cites the KB or marketing pages, and none is a menu-modifier cell. Amended only to soften the proposal's 'no min/max field exists' to 'not found in the Manager bundle', and to give the full served-bundle provenance and the item.modifier gate on the toggle. source
hardware-os-platformsunknown, grade Fresolve-to-partialI checked every quote myself against .cache/q310-union-pos/kb (add_a_new_terminal, troubleshoot_the_kds, troubleshoot_a_card_reader, release_an_ipad_terminal_from_union_mdm_control) and src TapToPayCard.js. All match word for word. The value and grade stand: iPad is named as the client in help centre articles (grade B), but there is no OS version floor and no device model, so a partial with a named shortfall is correct. It meets the naming part of the claim, so it does not refute itself. I amended the note for three reasons. First, the proposal's counts were wrong: 'ipad' is in 8 articles (21 hits), not 6. Second, it said there were 0 iPhone hits and no device spec 'in any' article, but the KB has 5 iPhone hits in 2 articles (the internal POS-on-iPhone article) and an enclosure article titled 'iPad 11" & 13"'. Those sizes conflict with the 12/10/7.9 terminal list, and it is still only sizes, not models. Third, I added the 'Card Reader Model (iPad only)' label as corroboration. Substring traps: whole-word matching means 'ios' is not caught inside other words, and 'pro', 'air' and 'mini' each returned 0 whole-word hits. The earlier 'mini 5' figure came from the 2018-2020 PDF text in txt/, not the KB. Overlap: no other scored union-pos cell cites the iPad client facts as its proposition. kitchen-bump-bar-hardware and commercial-hardware-purchase-outright cite parts.getunion.com for peripherals, so there is no double counting. I did not use the marketing page's 'iPhone 12+' as evidence, because it is grade C and not a key in notes.json. source
reporting-pmix-modifier-levelunknown, grade Fresolve-to-partialRe-opened the served bundle (4,785,098 bytes). The PMix description string occurs once, with showDayParts:!0 in the same config object, so the item and daypart conjuncts are backed by served code, not map-only comments. Item-only PMIX meets real conjuncts of this claim (item level, daypart filter), so the partial does not refute itself. That matches the corpus convention: cake-pos B, chowbus-pos C and clover all score item-only PMIX partial with a modifier shortfall. Amendments: (a) the proposal cited apiGetDayParts, but that identifier exists only in the map; the served bundle has it minified, so the note now cites the served /settings/day-parts endpoint instead. (b) The PDF quote 'Inventory Depletion and Product Mix' is two items run together by text extraction, so it is corrected. (c) Substring poison is recorded: the bundle's modifier hits are menu-build UI. No double count: every other union-pos reporting-* cell is unknown/F, and the Sales 'by Revenue Center by Item' dimension is not used for the revenue-center conjunct. Grade A stands, because the source is served first-party client code, but it covers only report existence and filter UI, not column content. source
reliability-printer-fallbackunknown, grade Fresolve-to-partialUpheld as partial/A, with the note rewritten. I confirmed every property in the served bundle, not only the source map: the Backup header, the name lookup in the grid, the None+printers picker writing backup_printer_id, the POST/PUT sending the whole printer object, the delete guard and the null default. The proposal's quotes with un-minified names (BACKUP_OPTIONS, printers.find(p => ...), file paths) exist only in the map, so the note now quotes the bundle's strings. The field is saved, shown in the grid and enforced by the delete guard, so it is not an unused label. The partial does not refute itself: it meets the backup-target conjunct and names the automatic-trigger and alert conjuncts as unevidenced. The pull toward unknown is real, because a stored mapping does not show automatic failover. Still, a per-printer backup designation is the object failover acts on, and the shortfall is named. It does not double count kitchen-station-routing (item-to-station ticket printing) or reliability-offline-kds-printing (still unknown). A tokenised grep of kb/ and txt/ for backup printer, backup_printer, failover and fallback found nothing. Grade A holds because this is first-party source code. source
reporting-realtime-dashboardunknown, grade FupheldProposed partial from the Union Manager Portal public source map / help centre (310th session); rejected on verification: Quotes confirmed verbatim in the source map, and the strings are in the SERVED bundle main.206e851b.js (4,784,879 chars), not only in map comments: the reducer ternary '"yesterday"===n.query.scope?...{yesterday:r}...{today:r}', the action meta 'todayMeta:{...query:{scope:"today"}},yesterdayMeta:{...query:{scope:"yesterday"}}' (qs.stringify'd onto GET /venues/{id}/dashboard/sales-summary/total-sales|labor|adjustments|sales-by-day-part), card titles "Today's Briefing" (FlashReportCard, 2 hits) and "Yesterday's Summary" (SalesSummaryCard, 2 hits), and a classic-dashboard 'Flash Today' card on GET /dashboard/flash-today (net sales, tabs, labor $, labor %). So the code proves a browser dashboard that ASKS the server for today's totals. It does not prove the conjunct the claim turns on, freshness. Each API call fires once, from loadDashboardPageAction on mount, with cache:false. There is no polling: the bundle's only setInterval is the session idle timer (36e5/108e5 ms), which is poison. No 'as of' or 'Last Updated' timestamp is rendered (0 hits), and the server-side population of scope=today is invisible to the client. The contrary KB text stands unrebutted: bring-online-an-offline-pos-system, 'Run the End of Day process ... Result: The previous day's data has been sent to the Manager Portal for reporting'. Also troubleshoot-network-connection-issues: 'All transaction information is saved and reports will be run once online'. The portal itself marks one dataset as EOD-gated ('points balances are updated after end of day is run'). One reading, that a Today card would be pointless if data only arrived at EOD, is only inference (grade F) and cannot carry an A/B cell. The KB line reads just as naturally as EOD being the upload. With the liveness conjunct unresolved, the proposed partial only meets 'browser access'. The claim's own why_it_matters says a dashboard that updates only at close is a non-starter, so the partial would be self-refuting. The mobile-app conjunct is also unevidenced: web SPA only, and the 'any device' line is grade-C 2019 marketing. No double count (the pmix and eod cells use other endpoints). Keep unknown/F. Suggested rationale: 'The Manager Portal source (served bundle main.206e851b.js) has a Today's Briefing card that requests scope=today sales/labor/adjustments once on page load, with no polling or as-of timestamp. The KB says End of Day sends the previous day's data to the portal, so intraday latency is unresolved. No owner mobile app is evidenced.' source

Sources

Every URL this record cites. 32 in total.