LoyCart-POS provides a simple to use, fast, accurate, and seamless** point-of-sale interface directly within your WordPress dashboard. Built on top of WooCommerce, it allows you to manage in-person and telephone sales with ease.
Hi, I’m David Herbert, a dedicated WordPress developer and e-commerce specialist with eight years of focused experience in the WooCommerce ecosystem and Point-of-Sale (POS) systems.
Having partnered with countless businesses to launch and scale their online stores, I’ve gained firsthand insight into a persistent and frustrating challenge: the difficulty of maintaining real-time product and inventory synchronisation between a busy, customer-facing retail location and the online WooCommerce website.
Why LoyCart POS Was Built
My journey with LoyCart POS began in 2011, shortly after the initial release of WooCommerce. As a brick-and-mortar store owner myself, I immediately recognised the immense potential of building a simplified solution directly on top of this powerful platform.
I was personally frustrated by the administrative burden: I was wasting valuable time manually reconciling product details and stock levels across my store's separate POS system and my WordPress website. I quickly realised that by utilising the WooCommerce foundation, I could build a customer-facing POS that fulfilled my needs without the complexity and prohibitive costs of maintaining two entirely different systems.
I saw that many existing POS solutions were either prohibitively expensive, overly complex, or critically lacked the seamless, unified integration necessary for small to medium-sized retail businesses. My goal became simple: to engineer a solution that is efficient, accessible, and effortlessly keeps your in-store and online operations perfectly synchronised.
My Vision: Empowering Your Business Growth
LoyCart POS is designed to be more than a transactional tool—it's a robust system built to empower business owners by freeing them from administrative burdens.
I am personally committed to the continuous development of this plugin, driven by user feedback and a dedication to feature refinement. Thank you for choosing LoyCart POS to provide a reliable, unified commerce solution, allowing you to focus your energy on what truly drives growth.
1.0.1 - 2025-12-05
- Initial free version submitted for review.
- This is the first public release of the free version.
- Support, bug fixes and updates available at https://buymeacoffee.com/loycart
1.0.2 - 2025-12-10
Removed redirect user roles administrator and shop manager directly to the POS screen upon login. If you still need this fictionality its better to use a dedicated web browser link.
Removed much of the debugging code.
Fixed a bug in the refund code were partial refunds were failing due to a rounding error.
1.0.3 - 2025-12-10
Removed more debugging code.
Fixing i18n comments and removing DS_Store files
Fixed a bug in loycart-pos-ajax-handlers.php
= 1.0.4 - 2025-12-26
High Priority: Mobile & WebView Compatibility
This update focuses on resolving critical execution issues when the plugin is used within the official WordPress mobile app and other integrated WebView environments.
Changed
Removed Native Confirmations: Eliminated all window.confirm() calls that previously caused the POS to hang or fail in mobile applications.
Cart Management: Clearing the cart and removing a customer now executes immediately upon button click for a faster, non-blocking experience.
Held Sales: Deleting a held sale now processes instantly, removing the requirement for browser-level interaction.
Removed Native Prompts: Replaced window.prompt() in the Hold Sale workflow.
Auto-Naming Logic: The system now automatically generates a descriptive name for held orders based on the selected customer's name or the current timestamp (e.g., "Held Order for John Doe" or "Order held at 14:30").
Enhanced UI Feedback: Transitioned from blocking system alerts to non-blocking, integrated notifications using the showNotification utility to maintain user awareness of background actions.
Fixed
WebView Execution Lock: Resolved an issue where the POS would become unresponsive in hybrid apps due to unhandled JavaScript UI threads.
Workflow Efficiency: Reduced the number of "taps" required for common administrative actions (Clearing, Holding, and Deleting), optimizing the interface for high-volume retail environments.
Technical Details
Modified File: trunk/assets/js/loycart-pos-app.js.
Namespace Updates: Refined loycart.cartManager.clearCartAndCustomer and loycart.heldSalesManager event listeners to support direct execution.
= 1.0.5 - 2025-12-27
Improvements
Workflow Automation: Appended a hidden carriage return (\r) to shipping label barcodes. Scanning a label into the WooCommerce order search field now automatically triggers the search, eliminating the need for a manual "Enter" key press.
Human-Readable Labels: Refined the barcode text display on labels to show only numeric order IDs, providing a cleaner, more professional appearance.
🛠️ Bug Fixes
Data Sanitization: Fixed an issue where the "ORD" prefix was being included in the barcode encoding, which caused search failures in standard WooCommerce configurations.
Mobile App Stability
WebView Performance: Fine-tuned the print delay in the WordPress iOS app environment to ensure high-density barcodes have fully rendered before the print dialog appears.
= 1.0.6 - 2026-01-05
🏗️ Major Architectural Overhaul
JavaScript Modularization: Decoupled the massive POS logic into independent, specialized modules.
This prevents variable collisions, improves load times, and makes the codebase maintainable.
loycart.cartManager: Handles all state, math, and UI rendering for the shopping cart.
loycart.customerManager: Manages registered customer search, selection, and guest checkout states.
loycart.refundManager: Specialized logic for processing returns and order history.
loycart.productManager: Manages the grid display and real-time stock updates.
Namespace Isolation: Wrapped all modules in the window.loycart namespace to protect global variables and ensure cross-module communication is secure.