Naming Conventions for Managing Thousands of QR Codes — featured illustration
Best Practices

Naming Conventions for Managing Thousands of QR Codes

6 min read
Create a QR code

Someone in operations opens the account, filters to one restaurant group, and gets sixty-three results. Among them: "menu", "menu (1)", "menu final", "Menu FINAL v2", "Copy of menu", and nine entries called "Untitled QR Code". A franchisee has emailed a photo of a window decal asking why it opens last spring's promotion. Nobody can say which record produced that decal.

The generation step worked perfectly. Generation is the part that always works. What breaks is everything after: finding a code again, knowing what it is attached to, and being sure you are editing the right one.

Decide what a name has to answer

Before inventing a format, write down the questions a name must answer without opening anything.

Which program or campaign does this belong to? Where is it, physically? What kind of placement is it, since a window decal and a table tent at the same address live different lives? Which version is it, since codes get replaced and old ones stay on walls for months?

A name that answers those four is readable a year later by someone who was not there when it was made. A name that answers none of them is a row number with extra steps.

A schema that survives a year

Fixed segments, fixed order, one separator. Something like CAMPAIGN-LOCATION-PLACEMENT-VERSION, which produces names like SPRING26-ST0114-WINDOW-V2 or ONBOARD-HQ-BADGE-V1.

Rules that make it hold up:

  • Order never varies. The whole value of a fixed order is that sorting and prefix search start working.
  • One separator between segments, never inside them. If hyphens divide segments, no segment contains a hyphen.
  • No spaces, slashes, or apostrophes. These names end up in file names, export columns, and sometimes URLs.
  • Pad numbers. ST0114 sorts correctly. ST114 sorts next to ST11 and ruins every list.
  • Keep controlled vocabularies. A short shared sheet of allowed location codes and placement types. Free text in a segment defeats the schema inside a month.
  • Ban words that will mean nothing later: new, final, test, temp, copy.
  • Decide letter case once and enforce it, since some tools search literally.

Dates are tempting as a segment. Include one only when the date is part of the code's identity, such as an event. A creation date belongs in a metadata field.

Names matter most for dynamic codes, because those are the ones somebody will open and edit later, under time pressure, possibly at the wrong record.

Folders and tags beat one flat list

Folders carry the thing that never changes: the property, the client, the region, the program. A code lives in exactly one folder, so that hierarchy has to be the stable dimension.

Tags carry everything that cuts across: medium, quarter, owner, print vendor, status. A code can hold several, and tags answer the questions your folder tree was not designed for, like every code that went to the outdoor printer in the first quarter.

A flat list stays workable up to a few hundred codes if naming is disciplined, because search does the work. Past that, people stop finding the original and start creating duplicates. Duplicates are how one placement ends up with two live codes and its scan data split across both, which nobody notices until a number looks wrong.

When you generate in bulk, build names from the source spreadsheet with a formula instead of typing them. Hand-typed names drift immediately, and bulk generation is exactly where a schema pays for itself.

Put a human-readable reference on the artwork

Print a short reference near the code itself. Small, in the margin, in the same ink: SP26-ST0114-W2, or an internal ticket number if that is shorter.

It earns its space in three situations. A franchisee photographs a broken code and sends it with no other context, and the reference tells you which record to open. The print vendor can confirm the right file went to the right placement before the run. Someone walking the site during an inventory can log placements without decoding every code one at a time.

Keep it visually quiet: five or six point type, positioned so it never encroaches on the code's blank margin. The placement and sizing rules for the code itself do not change to accommodate it.

Version suffixes when a code is replaced

When printed artwork is replaced, the version increments and the old record stays.

  • Never repurpose an existing record for a new placement. That name is printed on material still in the world and attached to historical scan data.
  • Increment the version when the physical print changes, not when the destination changes. Editing a routed destination is a change to the same code. A new decal is a new version.
  • Record which version supersedes which, and the date the old one was pulled.
  • Expect overlap. V1 and V2 will both be on walls somewhere for a while, and the data will show it. That overlap is information, not an error.

Design changes count. If the artwork picks up a new color scheme or a logo through a custom generator and the physical print gets replaced, that is a new version even though the destination never moved.

Decide who is allowed to create a name

Naming discipline fails one person at a time.

Keep the vocabulary with one or two owners, so adding a location code or a placement type is a request rather than a self-serve action. For bulk runs, generate names from the source sheet and let no human type them. For one-off codes, hand people a template and a single worked example, because most people will copy a pattern they can see.

Audit the list quarterly for names that do not match the schema and fix them while whoever created them is still around to explain what they meant. And do not let agencies or event staff name codes inside your account. Give them a folder and a naming instruction, or generate the codes on their behalf.

Archive retired codes and never reuse a name

When a placement comes down, the record does not get deleted.

Move it to an archive folder with the retirement date and reason, and keep it out of the working list. Deletion is a different action with a different consequence: for a routed code, deleting the record breaks every printed copy still in circulation, and there are always more copies out there than anyone estimates.

Names are never reused, ever. A reused name silently merges two histories, last year's placement and this year's, into one reporting row. Nobody catches it until they are halfway through explaining a chart to someone who is asking good questions.

Pick your four segments this afternoon, write the allowed values for each into a shared sheet, and rename your twenty highest-traffic codes to match before the next print job goes out.

Share this article