All guides
Uniform and PPE guide

Uniform and PPE issue log with QR codes in Google Sheets

Log every uniform and PPE item handed out: who got which item and size, and when. Count allowances and stock on hand in a Google Sheet you own.

By the QR to Sheets team 11 min readUpdated 6 October 2026

Short answer

A uniform and PPE issue log in Google Sheets records one row each time an item is handed over: which employee, which item and size, and when, kept append-only so allowances and stock can be counted with formulas.

The free route is a Google Form on the counter with dropdowns for the employee, item and size, which works for a small team until names and sizes are picked in a hurry.

With QR to Sheets, each item and size gets its own scanner link, the issuer scans the employee's badge code, and every scan lands as one timestamped row in your Google Sheet.

Uniform and PPE issue is usually recorded on a clipboard by the store-room door, or not at all. That holds until someone asks how many polos a new starter has had this year, why the medium aprons ran out a week after a delivery, or whether the safety boots that a leaver never returned were ever issued to them in the first place. A clipboard can answer none of those without an afternoon of transcription.

The job itself is simple. Every time an item leaves the store, write down who got it, what it was, what size, and when. Done consistently, that one log gives you per-person allowances, stock on hand and a reorder list, all from formulas. The hard part is the consistently, at a busy counter, with a queue of staff waiting to start a shift.

Written by QR to Sheets, which sells the scanner link described below, so weigh that accordingly. The free Google Forms route comes first because for a small team it is genuinely enough. Google Sheets behaviour was read from Google's own help pages on 2026-10-06.

The free route: a Sheet template and a Google Form on the counter

Most uniform issue templates are a single tab with columns for date, employee, item, size, quantity and issued by. Filled in by hand, it is a clipboard in a spreadsheet. The better free version is a Google Form linked to that Sheet, opened on a phone or tablet at the counter.

  1. Create a Google Form with a dropdown for the employee, a dropdown for the item, a dropdown for the size and a number field for quantity.
  2. Link it to a Google Sheet. Each submission becomes a row with Google's own Timestamp column.
  3. Keep the form open on the counter device, and submit once per handover.
  4. Build the allowance and stock tabs described below over the response sheet. The formulas are the same whichever route fills the log.

For a team of ten that issues a few items a month, stop there. It costs nothing and it is better than paper. Where it breaks at a busy counter is specific:

Issued is not loaned

Before choosing a layout, sort the items into three kinds. They need different records, and putting all three into one log is how a tracker stops making sense.

This guide covers the first two. For returnables, use the two-link loan pattern in Chromebook and device loan checkout, which works the same for a radio as for a laptop, and the reconciliation formula in check in and check out with QR codes. A uniform that must be returned on leaving can sit in both: issued here, and checked back in at the exit interview.

With QR to Sheets, a scanner link is a web address that opens a camera scanner in the phone browser and writes each scan as a row in your Google Sheet. Nobody on the counter installs anything or signs in. The setup that answers who got what in one row is one link per item and size, with the employee's badge as the thing being scanned.

Scan once per unit. Three polos is three scans of the same badge on the same link. By default a repeat of the same code on a link within twelve hours is still saved and flagged with an amber already-scanned notice, which here is useful: if the issuer only meant to hand over one, the notice appears while the employee is still at the counter. Keep the link's Accept duplicate scans setting on. Switched off, a link records each code once, ever, which would refuse that employee's replacement polo next year.

If the store room has no signal, scans are kept on the phone and sent when the connection returns, keeping the time they were scanned. The person on the counter never needs access to the spreadsheet itself.

The trade-off: lots of links

Six items in five sizes is thirty links, and switching between them is the cost of this design. It is clearest for items with a handful of sizes. For an item with many sizes, such as safety boots, there are two workable options. Keep one link per size if boots are issued often. Or use one link per item, named Boots, and record each employee's boot size once in a staff register tab, then look the size up by employee code. The second option has a real weakness: the size column then shows the size on file today, not the size handed over, so a change of size quietly rewrites history unless you add a new register row instead of editing the old one.

Why not scan the badge and then the item on one link?

Because each scan is its own row, and nothing joins a badge scan to the item scan after it. You would be pairing rows by position with a formula, and one missed or doubled scan shifts every pair after it onto the wrong person. One scan per row is the only layout where each row can be trusted on its own.

Why not item codes on a single link?

You can label each shelf or bag with a code such as POLO|M and use one link called Counter. Column mapping splits that value into item and size columns, so the row says what left the store and when. What it cannot say is who received it, because the only other thing on the row is the link and the device. That makes it a good fit for consumables, where a stock-out log is all you want, and a poor fit for personal issue.

Google Form on the counter compared with QR to Sheets
CapabilityGoogle Form on the counterQR to Sheets
CostFreeFree to 300 scans, one link and one phone; then $7 per device per month
Recording the employeeDropdown or typed nameScan of the employee's badge code
Item and sizeDropdowns, picked each timeSet by which link is open
TimestampWhen the form was submittedWhen the badge was scanned, in the workspace timezone
No signal in the store roomCannot submitKept on the phone, sent later
Who handed it overOnly if a field asksNot recorded; the row shows the link and device
Allowances and stock on handFormulas you writeFormulas you write
Employee signatureNoNo
Where the data livesYour Google SheetYour Google Sheet

On price: the free plan is one scanner link, one Sheet, one registered device and 300 scans in total, not per month. That is enough to run one item line from one counter phone, or to trial the whole setup on a single item. A full set of item-and-size links needs the paid plan, at 7 USD per registered device per month with unlimited links and scans. One counter phone is one device, whatever the headcount, so nobody pays per employee.

Printing employee badge codes

The code on the badge should be the employee ID and nothing else. A name changes, gets spelt two ways, and puts personal data on a card that will be lost in a car park. An ID such as E1042 does none of that, and when a badge is lost you reprint the same ID rather than starting a new history.

A printed badge book kept at the counter is convenient for staff who forget their card, but it also lets anyone record an issue to anyone. If that matters, scan only cards the employee is holding.

Allowance per employee with COUNTIFS

Most places set an allowance: three polos and two aprons a year, one pair of boots every twelve months. Build an Allowance tab with item names across row 1 (Polo, Apron, Boots), each item's allowance in row 2, employee codes down column A from row 3, and the start of the allowance period in cell A1, for example =DATE(2026,1,1).

The VALUE() part is deliberate. QR to Sheets writes each timestamp as YYYY-MM-DD HH:MM:SS, and VALUE() turns that into a date-time whether the cell holds a date or text. A plain COUNTIFS with a date criterion counts nothing when the column is text, so check with =ISTEXT(Issues!A2) before swapping in a simpler formula.

Stock on hand: received minus issued

Nothing in this setup decrements stock when a scan arrives. Stock on hand is a formula: everything that came in, minus everything that went out. Keep what came in on its own Received tab, typed by hand, because deliveries arrive in bulk and are rare enough that typing them is quicker than scanning thirty identical bags.

Laundered uniforms that go back on the shelf belong on the Received tab too, as a returned quantity with a note. Otherwise the formula will show the size running out while the shelf is full.

Sign-off and audit trail

Each row carries the time of the scan, written in the timezone set for the workspace, so the log shows when the item left rather than when someone got round to writing it down. A scanner link only ever adds rows to your sheet; it never edits or deletes one. Make the log hold its shape on your side as well:

Be clear about what the log proves. It shows that a badge code was scanned at the counter at a given time. It is not the employee's signature, and it does not show that the person holding the badge was the person it belongs to. If your policy needs a signed acknowledgement, for example for a uniform deposit or anything deducted from pay, collect that signature separately and check your local rules. The scan log then sits beside it as the record of what was handed over and when.

Step by step

  1. 1

    Give every employee an opaque code

    Use an employee ID with a letter prefix, such as E1042, never a name. Print it on a badge or a laminated card, or use the barcode already on a staff ID card if it carries the same ID.

  2. 2

    Create one scanner link per item and size

    Name each link exactly as the item and size, such as Polo M or Apron, and point them all at the same tab. Save each link as a bookmark on the counter phone under the same name.

  3. 3

    Scan the badge once per unit handed over

    Open the link for the item on the counter, scan the employee's code, and hand the item over. Three polos is three scans; the amber repeat notice on the second and third is expected.

  4. 4

    Type deliveries into a Received tab

    Deliveries are rare and arrive in bulk, so type them: date, item and size spelt exactly like the link name, quantity, and a note. Laundered returns and count corrections go here too.

  5. 5

    Count allowances and stock with formulas

    COUNTIFS over the issue rows gives each employee's count per item since a start date. Received minus issued gives stock on hand. Neither is maintained for you; both are formulas you own.

  6. 6

    Protect the log tab

    Restrict editing of the issue tab to the owner and keep reporting on separate tabs, so the raw log stays exactly as it was written and version history can show any change.

Frequently asked questions

What should a uniform issue log record?+

Who received the item, which item and size, how many, and when. Who handed it over is worth adding if several people run the counter. Keep one row per handover in an append-only log, and keep names in a separate staff register keyed on an employee ID.

Can one scan record both the employee and the item?+

Not with two separate codes, because each scan is one row and nothing joins a badge scan to the item scan after it. Use one scanner link per item and size, so the link records the item and the scan records the employee.

Does scanning take items out of stock automatically?+

No. QR to Sheets writes one row per scan and does not hold stock levels. Stock on hand is a formula: received quantities on their own tab, minus a count of issue rows for each item and size.

Do staff need an app or an account?+

No. The person on the counter opens a scanner link in the phone browser and allows the camera once. The employee only needs their badge code. Nobody needs access to the spreadsheet.

Is a uniform and PPE issue log free to run?+

The Google Form route is free. QR to Sheets is free for one scanner link, one Sheet, one phone and 300 scans in total, which covers one item line or a trial. A full set of item-and-size links is 7 USD per registered device per month, not per employee.

Is a scan log a signed receipt for PPE?+

No. It records that a badge code was scanned at a time. If you need the employee's signature, for example for a deposit or a deduction from pay, collect it separately and check your local rules.

How do I track uniforms that must be returned when someone leaves?+

Treat them as loans, not issues: a check-out and a check-in scan, with a formula that lists what is still out. The issue log answers how many someone has had; a loan log answers what they still hold.

Try it on your own Google Sheet

Connect Google, create a scanner link, and share the URL with your team. The free tier covers 300 scans, and nobody you share it with has to install anything.

Start for free

No credit card required

Keep reading