Skip to main content
Version: 1.x

Offline Functionality

WCPOS stores your product and customer data in a local database on each device. This means parts of the POS work without an internet connection, while others require connectivity.

What Works Offline

  • Browsing products — search, filter, and view product details from local data
  • Browsing customers — look up customer names, emails, and addresses
  • Building a cart — add items, change quantities, edit prices, and apply POS discounts
  • Applying coupons (Pro) — codes validate locally against synced coupon data; the server re-validates when the queued order reaches it
  • Saving an order — hold or save an order to the device; it joins the outbound queue and lands in WooCommerce when the connection returns
  • Barcode scanning — scan barcodes to find products in the local database
  • Viewing reports — the default (offline) report type generates reports from locally stored orders

What Requires a Connection

  • Taking payment — completing checkout renders a payment page hosted by your server, so the payment step itself can't be finished offline. You can still build and save the order while offline, then take payment once you're back online.
  • Server-dependent checkout actions — Web Checkout, integrated online or terminal gateways, and Save to Server need their respective services to be reachable
  • Syncing data — pulling new products, updated prices, or new customers from WooCommerce
  • Logging in — initial authentication requires a connection to your WordPress site
  • Licence activation — Pro licence checks need to reach the WCPOS licence server
  • Processing refunds — refunds can't be queued offline; the gateway and your store both need to be reachable (see Refunds)
Completing a sale needs a connection

You can build and save an order offline, but the payment step itself waits for a connection. Being able to complete a sale offline — starting with cash — is on the roadmap.

How the Local Database Works

When you first open WCPOS, it seeds your product catalogue in the background and pulls other data as you use it — you can start selling as soon as the first products are on the device. From then on, a background change check (every 60 seconds by default, tunable in Store health) fetches only what changed on the server.

The local database:

  • Persists between sessions — data survives browser restarts and device reboots
  • Is per device (and per cashier) — each device keeps its own local copy; cashiers don't share local data
  • Stays in sync — background change checks pull updates; your changes queue locally and push to the server

You can see exactly what's on the device — and what's still waiting to send — in Store health → Database. For more technical detail, see How the Sync Engine Works.

Changes You Make Offline Are Queued

Every change you make in the POS — a saved order, a new or edited customer, a coupon, a stock or price edit (Pro), a receipt email — is saved to the device first and queued to send. While you're offline the queue simply waits; nothing is lost by losing connectivity mid-shift. The queue is durable across restarts and crashes too: if the app hits an error screen, choosing Try again reloads it without discarding sales that haven't been sent yet.

When the connection returns, the queue drains automatically. If your server refuses a change outright (rare — for example, a record the server considers invalid), the POS won't retry it silently forever: the change is parked in Store health → Database under "changes never reached your server", with the server's reason and explicit Send again / Discard actions. See Store Health.

Connectivity Indicator

The POS header shows a coloured dot indicating connection status:

  • Green — connected to the server, all features available
  • Yellow — intermittent connection, some operations may be slow
  • Red — offline, limited to local data

What Happens During Connectivity Loss

If you lose your internet connection while using the POS:

  1. Products and customers remain browsable from local data.
  2. You can continue building carts and editing items — every change queues locally.
  3. You can build and save orders, but not take payment — carts and edits queue locally, and an order can be saved to send later. Completing payment waits until the connection returns, because checkout is rendered by your server.
  4. Open orders are preserved in the local database until connectivity returns.

When Connection Restores

Once your connection comes back:

  • The connectivity indicator turns green.
  • Queued changes drain to your server automatically — sales and edits made while offline push without any manual action.
  • Server-dependent payment gateways and Save to Server become available again.
  • Background sync resumes, pulling any product or customer changes that happened while you were offline.

Tips for Unreliable Connections

  • Use "Save to Server" on important orders — this pushes the order to WooCommerce immediately, so it's not lost if the device's local database is cleared.
  • Check Store health after an outage — the changes waiting to send tile in Store health → Database confirms when everything has reached your server.
  • Sync while you have signal — if you know connectivity will be intermittent, let the catalogue seed finish while you have a good connection.