Home How it works

How it works

From a product in your admin to a card in someone's hand

Five steps, and you can stop reading after the third if all you want is a code on a card. The last two are about what happens once the item has left you, which is where a register earns its keep.

Step one

Install, and the register is created

Nothing is asked of your theme, and no page has to be built.

What the app makes in your store

A metaobject definition called provenance_item, created in your own Shopify admin the first time you open the app. That is the register. It belongs to your store, not to us, and it stays there whatever happens to this app or this company.

The two things it asks for

Your storefront address, and a short prefix for your identifiers. Both are permanent, because both are printed onto cards. The address is pre-filled from Shopify's primary domain and never saved without you confirming it: a store whose real domain is not live yet reports its .myshopify.com fallback, and that would reach the printer.

Step two

Mint identifiers against a product

Browse to a product, pick a variant, say how many you are making. A run can hold several products at once.

What an identifier looks like

Your prefix, then three groups of four characters: MC-3QGV-R1YR-DG7A. Drawn from an alphabet with no I, L, O or U in it, so nothing can be misread off a card by a person or a scanner.

What it does not encode

Nothing. Not the model, not the colourway, not a sequence number. A structured identifier hands anybody holding two cards your production volume and your per-model counts, which is information you did not mean to print.

Editions, if you have them

Give a line an edition size and each identifier is numbered as it is minted. Numbering continues from what that variant has already been minted rather than restarting per run, and a run that would take an edition past its size is refused outright.

More on getting edition numbers right

Step three

Print the cards

Two routes out, depending on whether you have a designer.

01

The print sheet

A standalone HTML file, one card per identifier, with the code printed as text beneath each QR. Open it, print it, cut them out. Grouped by product when a run holds more than one, because cards stop being interchangeable the moment a run is mixed and a card in the wrong box makes a certificate that confidently describes the wrong object.

02

The print package

A zip of one vector QR file per item plus a merge-ready CSV, for an InDesign data merge against your own card design. The vectors stay crisp at any size, including the small ones a swing tag needs.

Marking a run printed is one-way

It freezes the run: no more edits to the identifiers in it, and no deleting them. That is deliberate. Once cards exist in the world, the register has to keep matching them, and an identifier that can be re-pointed at a different object is what makes a register worthless. Deleting an unprinted run and minting again is the supported way to change your mind.

It is also blocked if any item in the run failed to reach your register, because a card whose code is not in the register is a card that will not resolve.

Step four

Somebody scans it

The card lands on a page inside your own theme, with your header, your footer and your typography.

Where it lands

By default at /apps/provenance on your own storefront, a page the app serves through Shopify's app proxy. There is nothing to create and no block to place: it works from the moment you install. If you would rather cards landed on a page you have designed yourself, the app can create a real page in your store and point at that instead.

What comes back

The item's identity. Model, colourway, photograph, the date it was made, its edition number if it has one, and its status. Never a verdict, and never a green tick. If you want the argument for that, it is on the home page and in the FAQ.

A code that was never issued

Says so, plainly, in the same shape and at the same speed as one that resolves. Timing and response shape are identical on purpose: a fast "no" and a slow "yes" is an oracle somebody can use to work out which codes exist.

Why the code is after a # and not a ?

A URL fragment is never sent to a server. With a query string, every scan would deposit a valid identifier into web server logs, analytics, and the referrer header of every link clicked from that page. Codes printed on cards that travel with resold items are exactly the thing not to leak in bulk.

Step five

The record keeps changing after the item has gone

Which is the difference between a register and a batch of printed codes.

Status

In stock, sold, or lost or stolen. A lost-or-stolen report shows on the lookup and on the certificate, prominently. Clearing one requires a reason, so the reversal is on the record too.

History

Every item has its own page carrying its full event log: minted, mirrored into your register, printed, sold, reported, cleared. Each entry records who did it, whether that was a member of staff or a Shopify event.

Certificates

An A4 document per item, rendered from the register when it is asked for rather than stored, so it cannot describe an item as it was six months ago. Print it to PDF, or send the link.

Afterwards

What happens if you uninstall

Worth knowing before you start rather than after, because it is the part most apps are vague about.

  • Your register stays. It is a metaobject definition in your own admin. Uninstalling the app does not delete it, and the records in it remain readable and exportable from Shopify.
  • The lookup stops. Both the app-served page and the theme block do their lookup through the app proxy, so both stop answering. Cards already in the world will not resolve until you install again or build something else that reads the register.
  • Our copy is deleted. Our database is the system of record while the app is installed; on uninstall, what we hold about your store is removed on the schedule in the Privacy Policy. Yours is the copy that survives, which is the whole point of the arrangement.

Want a register for what you make?

Tell us what you make and how many of it. We will tell you honestly whether this helps, including if the answer is that a spreadsheet and a good photograph would do.