Ritzy Web • Mobile
Fifteen installable phone apps over the same Ritzy database. Seven are for any Ritzy company — Ritzy Track, Ritzy Dues, Ritzy CRM, Ritzy Delivery, Ritzy Notify, Ask Ritzy and Ritzy Support. Six belong to the Real Estate module: Ritzy Tenant, Ritzy Jobs, Ritzy Inspect, Ritzy Letting, Ritzy Collect and Ritzy Holiday Homes. Ritzy Stores belongs to Inventory and Ritzy Employee to Payroll. Each signs in with the user's existing Ritzy credentials and adds nothing to the desktop menu — except Ritzy Tenant, which is for your tenants and uses no Ritzy login at all.
Each app is a separate address on the Ritzy server. Install only the ones a person actually needs — a driver has no use for the sales pipeline, and a salesperson has no use for the run sheet. The last five appear only where the Real Estate module is licensed.
| App | Who it is for | What it does | Address |
|---|---|---|---|
| Ritzy Track | Anyone, and customers | Look up a shipment and follow its milestones | :8081 |
| Ritzy Dues | Customers, collections staff | Outstanding balance and the invoices behind it | :8082 |
| Ritzy CRM | Sales | Leads, follow-ups, customer briefings — with AI help | :8083 |
| Ritzy Delivery | Delivery drivers | Today's deliveries, QR scan, photo & signature proof of delivery | :8084 |
| Ritzy Notify | Everyone | Notification inbox, messages to colleagues, push alerts | :8085 |
| Ask Ritzy | Directors, managers | Ask by voice or text where the company stands — sales, cash, profit, who owes what | :8086 |
| Ritzy Support | Everyone | Ask Ritzy how to do something, by voice or text — answers link into the manual | :8087 |
| Ritzy Tenant | Your tenants | What they owe, what they have paid, their statement — and reporting a fault | :8088 |
| Ritzy Jobs | Maintenance technicians | Assigned jobs, work log, parts, photos and the tenant's signature | :8089 |
| Ritzy Inspect | Property staff | Check-in and check-out condition reports, with or without a signal | :8090 |
| Ritzy Letting | Letting agents | Vacant search, photograph a unit, send a shortlist, log viewings, hold a unit | :8091 |
| Ritzy Collect | Rent collectors | The round, taking payment at the door, the slip, and the bag | :8092 |
| Ritzy Employee | Every employee | Your payslips, leave balance, applying for leave — and your team's requests to approve | :8095 |
| Ritzy Stores | Storekeepers, counters | The day’s store work: lookup by scan, receiving (with or without a PO, proof of delivery), returns, transfers, issuing requests, picking orders, and offline stock counts | :8093 |
| Ritzy Holiday Homes | Holiday-let managers | Daily rentals: today’s arrivals and departures, the portal checklist (block or reopen dates on Airbnb, Booking.com and the rest), a week calendar per unit, bookings, check-in, check-out with the invoice, and payments | :8094 |
http://192.168.1.100:8083.Access uses the permissions your administrator already grants in the web app under Tools → User Manager → Rights. No new permission screens were added.
| App | Permission needed |
|---|---|
| Ritzy Track | Any Ritzy login |
| Ritzy Dues | Customer Statement (Accounts) — View |
| Ritzy CRM | The CRM module in your licence, plus Sales Pipeline (CRM) — View |
| Ritzy Delivery | Delivery List Report (Shipping) — View |
| Ritzy Notify | Any Ritzy login — every user has an inbox |
| Ask Ritzy | Dashboard / Quick View (Accounts) — View, the same permission as the Accounts & Finance Dashboard |
| Ritzy Support | Any Ritzy login — support is help with the software, not access to data |
| Ritzy Tenant | No Ritzy login. The tenant is invited from Tenant Portal and signs in with a code sent to their mobile or e-mail |
| Ritzy Jobs | The Real Estate module, plus Maintenance Board (Real-estate) — View. A technician sees only the jobs assigned to them |
| Ritzy Inspect | The Real Estate module, plus Unit Inspections (Real-estate) — View to read, Add to carry one out |
| Ritzy Letting | The Real Estate module, plus the vacant property report — View. Property Photos adds the camera and share links; Letting Enquiries adds the pipeline and holds |
| Ritzy Collect | The Real Estate module, plus Collection Rounds (Real-estate) — View for the round, Add to take payment. A collector sees only their own round |
| Ritzy Employee | My HR (Payroll) — View, and Link to User set on the person's employee record. Applying for and approving leave also needs Leave Request (Payroll) — View / Add |
| Ritzy Stores | The Inventory module. Lookup: Product (Inventory) — View; cost also needs Show Cost. Receive: GRV (Inventory) — Add; History needs GRV View; returns need GRV Return — Add. Move: Stock Transfer — Add; requests need Stock Issue — View (Add to hand over); picking needs Sales Order — View and Delivery Order — Add. Count: Stock Adjustment (Inventory) — View to count, Add to post. A tab appears only with its permission |
| Ritzy Holiday Homes | The Real Estate module, plus Holiday Homes (Real Estate) — View to see bookings and the homes’ photos and details, Add to enter bookings, Edit to check in, check out, take payments and tick off the portal checklist, Delete to withdraw a payment or undo a check-out. The same Add / Edit / Delete enter, change and cancel costs. Adding or removing photos and videos needs Property Photos — Add / Delete |
If you sign in without the permission the app tells you so plainly and returns to the login screen, rather than leaving you on a page that will not load. Show that message to your administrator.
Look up any shipment and see where it has got to. The oldest of the seven apps and the one most often handed to a customer — it answers "where is my cargo?" without anyone in the office picking up the phone.
One match opens straight away. Several matches are listed with their date and shipper so you can pick the right one. Sea, air and misc cargo jobs are searched together with Liner jobs, so you do not have to know which desk the shipment belongs to.
The top card gives the job number, its type and status, the date, the route (loading port → destination), the vessel, the shipper and consignee, and the MBL/MAWB and HBL/HAWB numbers where they exist. New clears everything and starts another search.
Under the card, four small tiles summarise progress — Progress %, Done, Pending and Overdue — followed by the milestone timeline itself:
A milestone finished late also carries a small "nd late" tag, and any remarks recorded against it are shown underneath.
Tap Done next to an open milestone, set the completion date (today by default), add remarks if useful, and confirm. This is the same record the web app and the desktop client use — an operations person can close off a step from the quayside instead of waiting to get back to a desk.
The bell on the shipment card subscribes this device to that job: when a milestone is completed the phone is alerted, even with the app closed. Tap it again to stop following the job. A filled bell means you are following it.
Customer outstanding balances and the invoices behind them, with print and share. Built for the collections call and for handing a customer a copy of an invoice on the spot.
The opening screen lists every customer with a non-zero balance in name order, with a count and the total across all of them above the list. Type any part of a customer's name to narrow it; the search waits until you stop typing, so it keeps up on a slow connection.
Each row shows the customer's name, their account code, the outstanding amount and the currency. Customers who are square with you do not appear at all — the list is a work list, not a directory.
Tap a customer to see what makes up the balance. Every open item on the account is listed, not only the invoices — a receipt on account, a journal or an opening balance is part of what they owe, so it is part of the statement:
A count of open items and their total sit above the list. The back arrow returns to the customer list; the header keeps the customer's name and balance in view while you work through their items.
Tap any document to open a full preview. It is rendered from the same print template the web app uses for that document type, so what the customer sees on your phone is exactly what they would have received by post — company letterhead, VAT number, line detail, totals and amount in words included.
The 🎧 headset button beside Sign out opens the Ritzy assistant, by voice or keyboard (see section 10). Here it is deliberately scoped to using this app — finding an invoice, reading the outstanding figure, sharing a document.
The sales pipeline in your pocket. Everything you record here appears immediately on the CRM board in the web app, and vice versa — it is one pipeline, not a copy.
The screen you land on. Three lists, and only the ones that have something in them are shown:
Switch between Mine and Everyone at the top. The three tiles above the lists (Open, Win rate, At risk) appear only if your group has the CRM Dashboard permission; without it the lists still work.
Your stages as swipeable columns — drag the board sideways to move between New, Contacted, Quoted and so on. Each column header shows how many leads and their total value. Tap a card to open the lead.
The filter box searches the enquiry text, the customer and the owner at once. Scan runs the AI at-risk scan over every open lead and drops a reminder into the notification centre for each owner who has something going cold.
Tap + on the Pipeline tab. The green box at the top of the form is the fast way in: paste the customer's email or WhatsApp enquiry, tap Extract with AI, and the enquiry summary, job type, value, currency, deadline and notes are filled in for you. If the sender's company is already a Ritzy customer it is linked automatically; if not, you are told so and can search for the right one.
Nothing is saved until you tap Create. Read what the AI filled in, fix anything it got wrong, then create the lead. A prospect who is not in the customer master yet is normal for a lead — leave the Customer field empty and link it later from the web app.
Tap a lead to open it. From here you can:
Search any customer to see their profile, their open pipeline and their recent CRM activity, with the same Brief me button. Use it before a cold call to a name you do not recognise.
The other half of the question — the person in front of you is not on file yet. Scan a visiting card photographs the card and reads it into a form:
If the company name looks like one already on file, the app says so before you save — scanning a card at an account you already deal with is the easiest way to create a duplicate.
Adding a customer needs the add permission on the CRM Customers master (CRM, form 107). Being able to see the pipeline is not the same as being allowed to add customers, and the button reports it if you lack the right.
The driver's app. It shows the deliveries assigned to you — both cargo (import) deliveries and inland transport jobs — and records proof that each one was handed over.
One list, sorted by due date, mixing both kinds of work:
The three tiles at the top are Due today, Overdue and Done today. Use For delivery / Delivered / All to switch what the list shows, the search box for a job number, HBL or street, and the date range when you need last week's work.
Only mine is the default. Tap it to become All drivers when you are covering someone else's route — you can then open and complete a delivery that was never assigned to you, and the record shows that you delivered it.
The QR code is the one printed by the web app's Delivery List report, so no new paperwork is needed. On Android the scanner also reads ordinary barcodes.
Open a delivery and tap Take a photo. The phone camera opens; take the shot and it uploads on the spot. Take as many as the situation needs — the pallet on the tail-lift, the seal number, damage you want on record.
The app records the time, who delivered, who received, the remarks, the signature and — if the phone has a fix — the GPS location, which becomes a map link on the delivery afterwards.
Every confirmation writes straight into the same delivery record the office already uses, so the Delivery List report in the web app shows the delivery as done, by whom and when, without anyone re-keying anything.
The Ritzy notification centre as a phone app. The same inbox as the bell icon in the web app and the toast in the desktop client — one set of messages, three places to read them.
Received shows what has been sent to you, newest first, with a dot against anything unread and a count on the tab. Sent shows what you sent and whether it has been read. Tap a message to read it in full; opening it marks it read, which sends a read receipt back to the sender.
Tap the round pencil button. Pick recipients or tick Everyone, write a subject and message, and choose Normal or High priority. High-priority messages are tagged in the recipient's list. Reading a message you received gives you a Reply button that fills in the recipient and subject for you.
On the Settings tab, turn on Push notifications to be alerted on this device even when the app is closed. The phone will ask for permission — you have to allow it.
The company’s position, in words. Ask a question out loud or type it — “how much cash have we got?”, “who owes us the most?”, “are we making money this year?” — and get a short answer with the figures drawn as charts. It is a reading app for directors and managers: it changes nothing and posts nothing.
The Ask tab opens with a few suggested questions. Tap one, or tap the round microphone and speak. The words appear as you say them; tap the send arrow when you have finished, or the crossed-out microphone to stop without asking. If you would rather type, start typing and the microphone becomes a send button.
The Position tab is the same picture without asking for it: cash and bank, revenue and expenditure for the financial year, net profit and margin, what you are owed and what you owe, and how long customers are taking to pay. It works whether or not the AI is set up, and always shows the same figures for the same day.
The Alerts tab is the short list of things worth looking at: debt more than 90 days old, an overdrawn bank account, a customer past their credit limit, a period being traded at a loss, work done and not yet invoiced, jobs running late. Tap one and it hands the question straight to the Ask tab so you can dig into it.
AED 1.3m) to fit a phone.Ask Ritzy a question about Ritzy. How do I do this, why does this figure look wrong, what is the correct accounting treatment — typed or spoken, and answered with a link straight to the right page of the manual. It is the only app here whose subject is the software rather than your business.
The Ask tab opens with a few example questions. Tap one, type your own, or tap the microphone and speak — the words appear as you say them, and you can edit them before sending. The 🔊 speaker button at the top has the phone read answers aloud; it stays off until you turn it on, then stays on.
The History tab lists what you have asked before — yours only, never a colleague’s. Tap one to reopen it with the whole conversation intact and carry on from where it stopped. This is the one thing the Support button inside the other apps does not do: there the conversation is a passing aside and is thrown away when you close it.
Under every answer are two small buttons, and they are worth using. A 👍 adds that answer to Ritzy’s shared knowledge base, so the next person — at your company or any other — who asks something similar gets a reply built on one that already worked. A 👎 takes it straight back out and flags the conversation for a human at Ritzy. It costs one tap and it is the most useful thing you can do to make the assistant better.
The assistant answers from the manual. Some things it cannot answer at all — “our invoice print shows the wrong branch address” depends on your own setup, and only somebody inside your company can change it. That is what the Tickets tab is for.
The ticket gets a reference of its own (SUP-000123) and your administrators are notified straight away. It is stamped with the screen you were on and the Ritzy build you are running, so nobody has to ask.
The Tickets tab lists your own tickets — never a colleague’s — with the status of each: Open, In progress, Resolved or Closed. Tap one to see what you reported, the photos you attached, and the resolution once it is written.
You do not have to keep checking. When an administrator answers it you get a notification — in the Ritzy notification centre in the web app and, if you have Ritzy Notify installed, as a notification on your phone. Tidying the wording of an answer afterwards does not notify you a second time; only a change of status does.
Some tickets are not your administrator’s to answer. If the software itself is wrong, they can press Send to Ritzy on the ticket, and it joins Ritzy’s own support queue with the screen you were on and the build you are running already attached.
Ask about practice rather than the software — when to recognise revenue, straight-line or reducing balance, how often to reconcile — and you get the standard treatment first, then where Ritzy supports it. Local tax rates, thresholds and filing deadlines are the exception: you will get the general principle and be told to confirm the specifics with your own accountant, because those differ by country and change every year.
The only app in this set that is not for your staff. It is for the person living in the flat: what they owe, what they have paid, and a way to report a fault without telephoning the office.
A tenant has no Ritzy login and never gets one. Instead the office issues an invitation from Real-estate → Others → Tenant Portal, and the tenant signs in with a code sent to their mobile or e-mail each time.
The tenant picks a category — air conditioning, plumbing, electrical, an appliance, doors and locks, common areas, or something else — describes it, and may attach photographs. The request lands in Real-estate → Others → Tenant Requests for the office to deal with.
Access follows the tenancy, automatically. The portal works while the tenant has a live contract on that account, and closes itself the moment that stops being true:
| What happens to the tenancy | The portal |
|---|---|
| Vacated | Closes. A former tenant keeps nothing. |
| Suspended | Closes, and re-opens by itself if the tenancy is made active again. |
| Reserved, not yet moved in | No access until check-in. |
| Renewed onto a new contract | Nothing happens — they stay signed in. |
Nobody has to remember to switch a tenant off. Vacating the contract is the switch.
The maintenance technician's job sheet. It shows the jobs assigned to them, what was agreed, and what they did about it — recorded at the flat rather than remembered until the evening.
Jobs are assigned in the web app under Real-estate → Others → Maintenance Board. Until a job is assigned to somebody it appears on nobody's phone, which is the point: a technician sees their own work, not every open job in the company.
The condition report. Walk a unit at check-in and again at check-out, mark the state of everything in it, photograph what is wrong, and take the tenant's signature — so a deposit argument is settled from a record rather than from memory.
On a check-out the app carries what the check-in said about each item and shows it beside your answer, so you are grading against what was handed over rather than against an impression. Anything that got worse appears in a what changed list at the end, with the inspector's estimate beside it if one was given.
From Sent, any finished inspection produces the condition report as a PDF, which can be shared straight to the tenant from the phone. The office prints the identical document from Unit Inspections in the web app.
For the letting agent, in the flat, with the prospect standing next to them. Search what is empty, photograph it, build a shortlist across buildings and send it before leaving — then log what happened.
The vacant list, filtered the way an agent actually asks: area, rent, bedrooms, a particular building. Bedrooms means at least that many, because showing a three-bed when the two-beds have gone is normal.
A unit already spoken for is marked: Held if another agent is holding it, Already let if the office has reserved or let it. Both still read as vacant on the reports — seeing it here saves the drive.
Tap Photograph and shoot. Every photograph taken in the field arrives as a draft.
Whether an agent may publish their own photographs is your decision, set per user group: add permission on Property Photos lets them take drafts, edit lets them publish. Give one without the other and the app becomes upload-only for that group.
Add units to the shortlist from anywhere; it is kept on the phone and survives moving between buildings, closing the app and losing signal. When it is ready, send it — the prospect gets the same share page the office would have sent, with your name and number on it, expiring after a week by default.
Only photographs that are in the gallery go out. Anything taken today and not yet published stays out of the link.
The rent collector's round: who to call on, what they owe, what happened at each door — and taking the money, with or without a signal.
The office makes up a round in Real-estate → Others → Collection Rounds and assigns it. The collector opens the app and sees only their own round — never every tenant in the company.
Each door shows what is owed and how late it is: Due now, A month behind, Months behind, Long overdue. That is there to tell the collector which conversation this is before they knock.
Two buttons on every call: Take payment and No money.
Every payment produces a numbered collection slip — something like COL-A7K2M9-14 — which is what the tenant is handed. The slip is the company's acknowledgement that the money changed hands. It is not the receipt. The receipt is a voucher in the accounts, and the app names it on the slip as soon as it exists.
Take the payment exactly as normal. The phone issues the slip number itself, so the tenant is handed a real number whether or not the server could be reached, and the screen says plainly: taken — but not yet receipted.
The moment the phone has a signal it sends them by itself. Sending twice cannot receipt a tenant twice — each payment carries a reference that the office recognises, so a retry returns the receipt that already exists.
Bag is what you are carrying and what the office thinks you are carrying. Cash on me counts cash only — a cheque in an envelope is not what anyone counts at a hand-in. Anything that failed to post is listed with the reason and a Try again.
At the end of the round the office presses Hand in on the round and the money moves out of the collector's own cash account into the bank or the till. Until then, the accounts themselves say what each collector is carrying.
The payroll module turned around to face the person it is about. Everything in this app is the signed-in employee’s own record and nobody else’s — the server works out whose payslips to show from the login, not from anything the phone asks for.
The switch on the Home screen turns on push notifications for that phone: the employee hears when their leave is approved or rejected, and a supervisor hears the moment a request arrives. It is the same notification the web app shows in its inbox — the phone alert is only the doorbell.
The storekeeper’s phone, for the Inventory module. Home shows the day’s work; Lookup shows what the store holds; Receive books goods in (and sends them back); Move sends goods out — to another store, to whoever requested them, or to a customer; Count counts a location. Each tab and each action appears only for someone with the matching Inventory permission (section 3), so a counter who only counts sees only Home and Count. Everything the app posts is the same document the desk screen posts — a GRV, GRV Return, Stock Transfer, Stock Issue, Delivery Order or Stock Adjustment — and the office sees it there at once.
Tiles for the chosen location: purchase orders to receive (and how many are due), stock requests waiting, sales orders to pick, items at or below their reorder level, batches expired or expiring soon, and open counts. Tap a tile to go to the work; the reorder and expiry tiles open their lists.
Under the title is the location this phone works in. Choose it once; the phone remembers it. Lookup shows the stock there first, and a new count starts there. Choose All locations to see totals only.
Every tab finds items the same way. Type a code and press Enter, tap the barcode button to use the camera, or use a Bluetooth or built-in scanner (it types the code and presses Enter for you). An exact match on the barcode code wins. The barcode code is whichever of the five item codes Inventory Settings → Barcode field names. After that, an exact match on any other item code wins. A partial match shows a list to pick from.
The item’s stock at the chosen location and in total, its price (the default price type, or the retail price), every location holding it with its bins, batches in stock with their expiry dates, and the last fifteen movements. Batches expiring within 30 days are marked orange, expired ones red. Average cost shows only with the Show Cost permission. Lookup changes nothing.
You cannot receive more than is left on an order line; the app names the line. Receiving needs a signal. If the connection drops while you press Receive, press it again: the phone sends the same receipt, and the server returns the GRV it already wrote instead of booking the goods twice. The same protection covers every document the app posts.
Before pressing Receive, take photos of the delivery note and of anything damaged, type the driver’s name and have them sign on the screen. Once the GRV is posted these are attached to it, exactly as if they had been attached on the desk GRV screen. If one fails to upload the app says so; add it again from History.
Choose No PO, pick the supplier and the location, enter the delivery note number, then scan each item (scanning one again adds one). Set the unit, batch and expiry, add proof of delivery and press Receive. The GRV is priced the way the desk would start it: the supplier’s contract price for the unit, otherwise the item’s last purchase price, in the supplier’s currency. The purchase invoice corrects it if needed. Prices are shown only to someone with Show Cost.
History lists the GRVs of the last day, week, month or quarter. Open one to see what came in, its batches and its proof of delivery (and to add more), or to print it. With GRV Return rights, Return goods to the supplier takes chosen quantities back out of stock as a GRV Return, with the reason; the GRV’s own batches go first. You cannot return more than is left on a line after earlier returns and the supplier’s invoice.
Counting works without a signal. On opening a count the phone downloads the items it may contain, so scans resolve offline. Entries wait on the phone (“n entries waiting to send”) and are sent when the signal returns. Each entry carries its own id, so one sent twice is stored once. Posting needs a signal and refuses to run while this phone still has unsent entries.
Counters count blind. Only someone who can post the count sees the system figure and the difference beside each item.
The holiday-let manager’s phone, for apartments, units and villas let by the night. Bookings arrive on Airbnb, Booking.com, Trip.com, Agoda and Trivago, from agents and by referral; the manager keys each one in from the portal’s notification and blocks the same dates on the other portals by hand. The app is the same register as Real-estate → Realestate → Holiday Homes in the office, so a booking made on either is on both at once. Only properties set to Holiday homes on the Property master appear (see the Real Estate manual).
What to do now, in this order:
A week per unit, one square per night, coloured by the channel the booking came from (grey is closed dates). Tap a booked night to open the booking, a free one to book it. Find free asks for check-in and check-out dates and lists every unit free for all of those nights, with the price at its usual rate.
Close dates (the switch at the top of the form) takes a unit off sale for an owner’s stay, maintenance or a deep clean. It goes on the checklist the same way.
When calendar sync is set up in the office (Real Estate manual, section 20.5), new Airbnb, Booking.com, Agoda and Trip.com reservations arrive by themselves. Today lists them under Complete from the portal: open each, tap Edit and fill in the guest, the portal’s reference and the price from the booking notification. Gone from the portal lists reservations a portal no longer shows that could not be cancelled automatically. A red or orange box at the top means a portal’s calendar could not be read, or two portals sold the same night.
Setting up the sync from the phone. Open a home on the Homes tab and choose Sync (needs the Holiday Homes edit permission). For each portal:
Read all portal calendars now at the top of the Homes tab reads every saved portal address at once instead of waiting for the half-hourly read. The Ritzy address only works for the portals when the app is opened on Ritzy’s public https address; the Sync card warns when it is not.
The Homes tab lists every unit with its cover photo, bedrooms, size and usual rate. Open one, or tap photos, videos and details on a booking, to see:
When expenses are set up in the office (Real Estate manual, section 20.6), the cost of keeping each home is entered from the phone, usually at the door with the bill in hand:
Choose what it was for, the amount, and Paid now (from which cash or bank account, and to whom) or Bill to pay later (from which supplier, with the bill number). Photo of the bill takes a picture or picks one from the phone; it is shrunk on the phone and sent after the cost is saved, so a weak signal can lose the photo but never the cost. Saving posts it to Accounts at once: a payment, or a purchase from the supplier. Entering needs the Holiday Homes add permission, changing it edit, cancelling it delete.
The Costs tab is the month’s report. Step through the months with the arrows. At the top: what was spent, and what the homes earned — revenue less the portals’ commission and the costs, before tax. Below that, costs by category and by home (revenue, costs and net for each unit, and each building’s shared costs). Tap a category or a home to narrow the list of every cost underneath; tap a cost to open it. Share this report sends the figures as text through the phone’s share sheet — to an owner on WhatsApp, say — or copies them.
Full server instructions are in DEPLOYMENT.md. In short:
DBA account can change an address, add an app or switch one on or off. Print QR sheet produces a single page of codes to pin up or hand to whoever is setting the phones up. The screen needs upgrade script 038_pwa_registry.sql — until that is run the apps are listed from their built-in defaults and nothing can be changed.KEYPAIRS table — PWA_SPTRACK, PWA_SPDUES, PWA_CRM, PWA_DELIVERY, PWA_NOTIFY, PWA_ASK, PWA_SUPPORT, PWA_RETENANT, PWA_REMAINT, PWA_REINSPECT, PWA_RELEASE, PWA_RECOLLECT, PWA_STORES, PWA_REHOLIDAY, PWA_EMPLOYEE. Those are the same addresses Tools → PWA Apps shows and edits, so change them there rather than in SQL. A value you set by hand survives a re-install.090_pwa_app_modules.sql; before it is run the shipped apps use these same defaults.PWA_SPTRACK and PWA_SPDUES. A missing address, or an app disabled in Tools → PWA Apps, hides only the QR code.089_stores_pwa.sql (its count tables and its PWA Apps card) — run it from DBA Console → Upgrade Scripts on every company with Inventory. A company created after this release already has it. Its address is PWA_STORES, port 8093.092_re_holiday_homes.sql from DBA Console → Upgrade Scripts (its tables, the Holiday Homes menu entry and its PWA Apps card), 093_re_unit_videos.sql for gallery videos, 094_re_holiday_ical.sql for calendar sync and 095_re_holiday_expenses.sql for costs. Its address is PWA_REHOLIDAY, port 8094.037_delivery_pwa.sql — run it from DBA Console → Upgrade Scripts against every company database. A company created after this release already has it.VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY in the API's .env. Without them the inbox works normally and only push is unavailable. The same keys drive Ritzy Track's per-job alerts.039_ask_pwa.sql for its entry on the PWA Apps screen, and ANTHROPIC_API_KEY in the API's .env for the Ask tab. Without the key the Position and Alerts tabs still work in full. It deliberately has no permission of its own: it uses Dashboard / Quick View (Accounts), so whoever you already trust with the Accounts & Finance Dashboard can use it, and nobody else. It is read-only — there is no screen in it that changes anything.042_ticket_escalation.sql, which seeds the KEYPAIRS key SUPPORT_ESCALATE to Y — so it is available once that script has run. Set the key to N if data must not leave the building; a company upgraded before October 2026 was seeded N and stays that way until someone sets it to Y. Sending is never automatic: any administrator sends an individual ticket, and the screen states exactly what leaves — a ticket's text can name your customers and amounts. Replies are pulled back hourly (and whenever an administrator opens the ticket queue) because Ritzy cannot call in to your network — set SUPPORT_TICKET_SYNC_MINUTES in the API's .env to change the interval. Screenshots are sent only when an administrator ticks them individually in the send dialog, one request each.041_support_tickets.sql, and are answered in the web app at Tools → Support Tickets — administrators only, with an unanswered count beside the title. Open a ticket to see what was reported and the photos attached, write the answer, and choose Looking at it, Resolved or Close, no fix; saving notifies the person who raised it. A resolution cannot be saved empty, and editing it later does not notify them again. Until the script is run the screen says so rather than failing.ANTHROPIC_API_KEY in the API's .env — the same key as the other AI features. Saving the scanned card writes to the Consignee/Shipper master, so the user needs Cargo form 101 CANADD; the rest of the CRM app works without it.040_support_pwa.sql for its entry on the PWA Apps screen, and no API key of your own — unlike Ask Ritzy, the question is forwarded to Ritzy's own support service over your installation's licence token, and Ritzy holds the key. What it does need is an active Ritzy licence and a route out to the internet; without either, the app says so and the headset button inside every other app hides itself. On Ritzy Dues that button is worded for a customer rather than a colleague and is scoped to using the app — it never discusses a balance. It has no permission of its own on purpose: support is help with the software rather than access to data, and the people who most need to ask how something works are usually the ones with the fewest rights.USERS table, so a customer login is a real Ritzy user — put it in a group whose rights cover nothing but the app you intend them to reach. No phone-app sign-in consumes a licence seat — not a customer reading their statement, and not a member of staff — so handing out an app never costs you a concurrent user at the desk. Signing in to the web app still does.
http:// over the office LAN, Ritzy Delivery cannot scan (drivers must type job numbers) and Ritzy Notify cannot push. Put the PWA ports behind TLS, or a reverse proxy that terminates it.
| What you see | What it means |
|---|---|
| "You do not have access to…" straight after signing in | Your group lacks the permission in section 3. Your administrator grants it in User Manager. |
| "…has been switched off by your administrator" | The app has been disabled in Tools → PWA Apps. Only the DBA account can switch it back on. |
| The company list on the login screen is empty | The phone cannot reach the Ritzy server. Check you are on the office network or VPN, and that the address is right. |
| Track: "No matching shipments found" | Almost always the wrong search field — an HBL typed into Job No finds nothing. Switch the picker and try again, and let the suggestions confirm the number exists. |
| Track: following a job but no alerts arrive | Check notifications are still allowed for the site, that the bell is filled, and that the server has push configured (section 11). Clearing browser data drops the subscription — tap the bell again to re-follow. |
| Track: too many alerts from one job | Following a job alerts you on every milestone, by design. Un-follow the job, or ask your administrator to shorten the milestone template. |
| Track: "No milestones defined for this job" | No milestone template has been applied to that job yet. It is applied from the web app. |
| Dues: a customer is missing from the list | The list only holds customers with a non-zero balance. A customer who has paid up drops off it — that is the intent, not a fault. |
| Dues: "No print template is configured for this document type" | That document type has no active template under Tools → Report Templates in the web app. Everything except the preview still works. |
| Dues: Share downloaded the PDF instead of sharing it | The device cannot hand files to a share sheet. The PDF is in the downloads folder — attach it by hand. |
| The scanner shows "Camera permission was denied" | Allow camera access for the site in the browser's settings, or type the job number instead. |
| The scanner never reads the code | More light, hold steadier, fill more of the frame with the code. On plain HTTP the camera is unavailable altogether — use manual entry and tell your administrator. |
| "Take at least one photo…" when confirming | Working as intended — a delivery needs photographic evidence. See section 7. |
| A photo will not upload | Weak signal. Stay on the delivery and tap again; nothing is lost. Very large images are already shrunk automatically. |
| The push switch is greyed out | Install the app to the home screen (iPhone), or the browser does not support push. The inbox is unaffected. |
| "AI is not configured" on a CRM AI button | The server has no AI key. Everything except the AI features works; the at-risk scan still runs on rules. |
| Ask Ritzy: "Ask Ritzy needs an Anthropic API key" | The server has no AI key, so only the question box is unavailable. Position and Alerts carry the same figures without it. |
| Ask Ritzy: the microphone does nothing | The browser cannot listen — Firefox has no support at all — or microphone access was blocked. Allow it for the site, or type the question. Chrome, Edge and recent Safari all listen. |
| Ask Ritzy: "I could not answer that…" | The question is outside what it reads. It covers sales, cash and bank, profit and costs, debtors and creditors, and — where you run them — job volumes and the sales pipeline. Ask it more plainly, or use a suggested question. |
| Ask Ritzy: a figure disagrees with a report | Check the period. Balances are as at today; trading figures cover the open financial year unless you asked for another period, which the answer states. |
| A change you made is not showing | Pull down or use the refresh button. If the app looks stale after an upgrade, close it fully and reopen it so the new version loads. |