Kitchen and Customer Screen for Restaurant POSKitchen and Customer Screen for Restaurant POS
  • Getting Started

    • Documentation Home
    • Overview
    • Features
    • Installation
    • Licence and Updates
  • Configuration

    • Real Time Connection
    • General Settings
    • Endpoints and URLs
    • Kitchen Users
    • Customer Screen Setup
  • Daily Operation

    • Sending Orders From The POS
    • Kitchen Screen
    • Customer Screen
    • Order Lifecycle
  • Help and Support

    • Troubleshooting
    • FAQ and Notes
Demo
Buy Now
  • Getting Started

    • Documentation Home
    • Overview
    • Features
    • Installation
    • Licence and Updates
  • Configuration

    • Real Time Connection
    • General Settings
    • Endpoints and URLs
    • Kitchen Users
    • Customer Screen Setup
  • Daily Operation

    • Sending Orders From The POS
    • Kitchen Screen
    • Customer Screen
    • Order Lifecycle
  • Help and Support

    • Troubleshooting
    • FAQ and Notes
Demo
Buy Now
  • Kitchen and Customer Screen for Restaurant POS

    • Documentation Home
    • Overview
    • Features
    • Installation and Activation
    • Licence and Updates
    • Real Time Connection
    • General Settings
    • Endpoints and URLs
    • Kitchen Users
    • Customer Screen Setup
    • Sending Orders From The POS
    • Kitchen Screen
    • Customer Screen
    • Order Lifecycle
    • Troubleshooting
    • FAQ and Notes

Real Time Connection

The kitchen board, the POS kitchen tabs and the customer screen all read from one live channel. Until that channel is configured, tickets are not delivered and every screen stays empty. This is the first thing to set up after activation.

Go to Restaurant POS → Settings → Kitchen & Customer Screen.

Choosing a channel

Scroll to the Other Setting block and set Select App Access Type.

OptionWhat it usesChoose it when
Firebase (default)A Firebase Realtime Database in a Google project you createYour hosting cannot run Node.js, or you want several kitchen screens for the same outlet
SocketThe Node server that ships with WooCommerce Point of Sale, running on your own serverYour server can run Node.js, you do not want a Google account involved, and one kitchen screen per outlet is enough

The Other Setting block with Video Control and Select App Access Type

Firebase is only the default — you do not have to use it. The kitchen screen, the customer screen, the POS kitchen tabs, the statuses and the browser alerts all work on either channel.

How the two differ

FirebaseSocket
What you needA free Google Firebase project and its eight keysNode.js 14 or newer on the web server, with PHP shell_exec or exec enabled
Where tickets are storedYour Firebase Realtime DatabaseYour WordPress database
Yesterday's ticketsCleared automatically on the first connection of a new dayKept until they are sent or deleted
Ticket numbersRestart every dayOne running number that keeps counting up
Kitchen screens per outletAs many as you likeOne at a time
POS screens per outlet receiving live kitchen updatesAs many as you likeOne at a time
Customer screens per outletAs many as you likeAs many as you like
Usage limitsFirebase plan limits on connections and dataOnly your own server

One kitchen screen per outlet on Socket. The Node server keeps a single kitchen connection and a single POS connection for each outlet. Opening a second kitchen screen signed in to the same outlet disconnects the first one, which then stops updating; reloading it takes the connection back from the other screen. Customer screens are counted per device, so any number of them can run. If one outlet needs two kitchen screens — a grill station and a cold station, say — use Firebase.

Ticket numbering and clearing are explained on Order Lifecycle.

Switch between the channels at any time; tickets already on the board are not carried across, so change it outside service hours.

Firebase

Firebase is a Google service. You create a free project of your own, and the module talks to it from the kitchen, customer and POS screens. The whole set up takes a few minutes and is done once.

1. Create a Firebase project

Sign in to the Firebase console with a Google account. The console lists any projects you already have; select Add project.

The Firebase console with the Add project tile

Give the project a name — something like Restaurant Kitchen Screen — and select Continue. Firebase suggests a project id underneath the field; you can accept it.

Naming the new Firebase project

Firebase then offers Google Analytics. Either choice works for this module: switch it off to finish faster, or leave it on and pick or create an analytics account. Select Create project.

The Configure Google Analytics step

Firebase builds the project and reports Your new project is ready. Select Continue.

2. Create the Realtime Database

This step is what produces the Database Url the module needs, so do not skip it.

In the left menu open Build → Realtime Database and select Create Database. Choose a location, pick a starting security rule set, and finish. The database URL is shown at the top of the database screen and looks like https://your-project-default-rtdb.firebaseio.com.

3. Register a web app

On the project overview, select the web icon — the one marked </> — under Get started by adding Firebase to your app.

The project overview with the web app icon highlighted

Give the app a nickname and select Register app. Firebase Hosting is not needed, so leave that box unticked.

Registering the web app with a nickname

4. Copy the eight values

Firebase now shows the Add Firebase SDK block. Inside it is a firebaseConfig object holding exactly the values the module asks for. Copy them from here.

The Add Firebase SDK block containing the firebaseConfig values

Select Continue to console when you have them.

Tips

You can come back to these values at any time. Open Project Overview → Project settings → General and scroll to Your apps; the same configuration block is shown there.

The General tab of Project settings, showing the app configuration again

5. Enter the keys in WordPress

Back in Restaurant POS → Settings → Kitchen & Customer Screen, fill in the Firebase Details block and select Save Configuration.

FieldValue from Firebase
API KeyapiKey
Auth DomainauthDomain
Database UrldatabaseURL
Project IdprojectId
Storage BucketstorageBucket
Messaging Sender IdmessagingSenderId
App IdappId
Measurement IdmeasurementId

The Firebase Details block on the Kitchen and Customer Screen settings tab

Warning

The values in the screenshot above are placeholders. Use the values from your own Firebase project. Treat the whole block as private configuration and do not share screenshots of it.

Note

The Firebase console is Google's product and its layout changes from time to time. The screenshots above come from Webkul's own guide for this plugin; if a button has moved, the wording in the steps is what to follow. The eight values themselves have not changed.

What Firebase stores

Only the working day's tickets: for each outlet, the tickets currently in On Hold, Preparing, Completed and Sent, plus the day's ticket counter. The first time a screen connects on a new day, the previous day's records are deleted automatically, so the database does not grow over time. Nothing about your customers' accounts or payments is written there.

Watch the free plan limits

Firebase's free tier caps the number of screens that may be connected at the same time, the amount of data stored and the amount downloaded per day. A single restaurant with a kitchen board, a customer screen and a till is well inside those limits, but several outlets each running two or three displays can reach the connection cap, and a screen that is refused a connection simply shows nothing.

The current allowances are published on the Firebase pricing page. Check them against the number of screens you plan to run before you go live, and move to a paid plan if you need more. This is Google's pricing, not Webkul's.

Socket

The Socket option reuses the Node server that WooCommerce Point of Sale already provides, so nothing leaves your own infrastructure and no Google account or Firebase keys are needed.

Before you start

The Start Server button runs Node.js on the same machine as WordPress, so check these with your host first:

  • Node.js 14 or newer is installed on the web server;
  • PHP's shell_exec or exec function is enabled;
  • the port you pick for the Node server is open to the devices running the kitchen, customer and POS screens;
  • if your store runs on HTTPS, you have the SSL certificate and private key for the server address.

If your hosting cannot run Node.js — common on shared hosting — use Firebase instead.

1. Configure the Node server

Go to Restaurant POS → Settings → Node Server.

The Node Server Configuration tab with its address, port, HTTPS and timeout fields

FieldWhat to enter
Node Server ( Domain / IP ) AddressThe domain or IP the server answers on, with no http or www prefix
Node Server PORTThe port the server listens on
Server HTTPS statusEnable when the server is reached over HTTPS, otherwise Disable
Node Server TimeoutHow long a client waits before retrying, in milliseconds
SSL Certificate KeysThe certificate, required when HTTPS is enabled
SSL Private keysThe matching private key, required when HTTPS is enabled

Save with Save Configuration. The tab then shows an Env Variables Require Keys Included checklist — Node Port, HTTPS, Certificate Key, Private Key and API URL — with a tick beside each value that reached the server's environment file. If any item is unticked, change something on this tab and save again so the file is rewritten.

2. Start the server

Use the Start Server button beside Start/Stop Server. The same button stops it again once it is running.

Important

The kitchen and customer screens are served over the same protocol as your site. A site on HTTPS cannot open a socket to a server on plain HTTP, so enable Server HTTPS status and supply the certificate and private key when your store runs on HTTPS.

3. Switch the module to Socket

Return to Kitchen & Customer Screen, set Select App Access Type to Socket and select Save Configuration.

The module registers its own handler with the Node server automatically. On the Socket channel the tickets are kept in your own WordPress database rather than in Firebase, and they are not cleared by date — see Order Lifecycle.

Note

The Node server is restarted whenever the handler registration changes, so expect a short pause the first time you switch to Socket.

Checking that the channel works

  1. Open the kitchen display at /kitchen and sign in as a Kitchen User.
  2. From the POS, send a ticket to the kitchen — see Sending Orders From The POS.
  3. The ticket should appear in On Hold within a second, without refreshing.

If it does not, the Troubleshooting page lists the messages the module shows and what each one means.

Next step

Continue with General Settings.

Prev
Licence and Updates
Next
General Settings