QR Codes & Public Unit URLs
QR codes are the bridge between the physical equipment in the field and the TuffOps record for it. Stick a QR sticker on a chiller, and anyone with a phone camera can pull up that unit's page and request service — no app install, no login.
What a QR code is, exactly
A QR code in TuffOps is a label that encodes a URL of the form /u/<guid>, where <guid> is a UUID. The GUID is stored on the unit record as qr_code_guid. The URL is:
- Opaque — knowing one GUID tells you nothing about the next one.
- Non-guessable — UUIDs are 128-bit; brute-forcing the space isn't practical.
- Stable — the GUID lives with the unit forever. If the sticker survives, the link survives.
There's no separate "QR code record" once it's assigned to a unit. The GUID is the unit's public identifier.
The QR code lifecycle
A QR code can be in one of three states:
| State | What it means |
|---|---|
| Blank | Printed on a label but not yet associated with a unit. Scanning the URL returns a not-found page; assignment happens from inside TuffOps. |
| Assigned | Tied to a specific unit. Scanning it opens that unit's public page. |
| Reassigned | The label is reused for a different unit (rare, usually after equipment replacement). |
Blank labels are useful when you want to pre-print a batch of stickers, hand them to a tech in a roll, and have the tech assign them on-site. Assignment happens from inside the TuffOps app: the tech opens a work order or unit, scans the blank label with the in-app QR scanner (or pastes the URL), and the GUID is bound to that unit. The customer-facing public page only appears once a unit is bound.
The public unit page
When someone scans an assigned QR code, they land on the public unit page. That page deliberately exposes very little:
- A friendly identifier (something like Lobby AC #2 or the unit's serial number)
- The customer name
- A way to request service or report an issue (which creates a Customer Request)
What's not on the public page:
- No financial info (no quotations, no invoices, no totals)
- No service history detail
- No internal notes
- No technician info
- No other units belonging to the same customer
Treat the QR URL as semi-public. It's not a secret — anyone holding the equipment can scan it — but the page behind it is intentionally lean. Anything sensitive lives behind authentication.
The "scan to request service" flow
The most common reason a QR code exists is to give building staff or homeowners a frictionless way to flag a problem. Scanning produces a customer request that includes:
- The unit GUID, so triage knows exactly which piece of equipment.
- Whatever the requester typed in the description box.
- The requester's name and contact info (if they provided it, or if they're a returning contact TuffOps recognizes).
That request lands in the office's triage queue and gets converted to a work order on the next pass. See Customer Requests for the full triage flow.
Why QR codes instead of NFC or barcodes
QR codes won out for three boring reasons:
- Every modern phone camera reads them with no special app.
- They survive being printed on a sticker and weathering on the back of an outdoor condenser.
- They're cheap to print, cheap to replace, and cheap to scale to thousands of units.
NFC needs the phone close enough to a transmitter; barcodes need an app for most phones; both lose to QR for the field-service use case.