On this page
An art inventory template works best when each artwork has a stable ID and every move is recorded separately from its ownership and sale status. The original CSV below is ready to copy into a spreadsheet: it tracks the work, its current location, and a dated movement log without treating a gallery loan as a sale.
Copy the artwork inventory template
Create one row per unique physical work. For editions, use one artwork record for the edition and a separate record for each numbered copy; do not reuse an ID across originals, proofs, or edition copies. Keep IDs stable even when a title, location, or status changes.
These rows are synthetic examples, not an artist's real inventory. Store measurements with units, distinguish a one-of-a-kind work from an edition, and record the asking price separately from the final sale price. If you have many works, avoid putting several IDs in one cell: a row per work makes filtering and later imports easier.
Keep location, custody, and ownership distinct

AI-generated editorial concept; not a screenshot of a deployed app.
“At North Gallery” describes location or custody. It does not by itself mean the gallery owns the work. Keep owner, location, and commercial status in separate fields. A useful status set might include In studio, Available, On loan, On consignment, Reserved, and Sold; decide whether status describes availability or physical state, and avoid using one value to mean both.
For loans and consignments, add a movement table instead of overwriting the previous location:
The second line illustrates a planned return for the same sample work. When the return actually occurs, enter the actual date and set the current location back to the studio. Keep the original loan row and agreement reference. This history answers who had the work and when without implying a transfer of title.
The Joan Mitchell Foundation describes paper records, spreadsheets, artist-specific inventory databases, and custom systems as options with different resource needs. It notes that databases can support repeated data reuse, document attachments, tailored reports, and searches across descriptive fields. Use a spreadsheet when a simple searchable list is enough; consider a relational app when loan history, documents, images, and reporting need linked records. (Joan Mitchell Foundation, “Choosing an Artwork Inventory System”)
Add related records only when they solve a real task
Use the artwork table with related records for the tasks you actually manage:
artworks: stable ID, title, year, medium, dimensions, edition, owner, and status.editions: edition name, total run, and format; each copy still receives its own artwork ID.locations: studio, storage facility, gallery, or institution, with contact and address kept private.movements: artwork, origin, destination, planned date, confirmed date, and loan agreement. A planned move does not change the current location.consignments: artwork, gallery, agreement dates, commission terms, and return deadline.sales: artwork, buyer, gross price, currency, sale date, and payment reference.
The same artwork ID should join its movements, consignment, and sale records. A gallery user should see only works explicitly shared with that gallery. The artist account manages the inventory; a gallery account can update an agreed loan or consignment workflow only if the artist has granted that access. Do not expose buyer details or private storage addresses on public artwork pages.
Turn the template into a working app
For a single project, choose Atoms Cloud or connect one Supabase project; Atoms documents them as alternative backend options for a project. A connection alone does not create working persistence: the app needs to save, reload, edit, and read back records against the chosen backend. (Atoms Help Center, “Connect Supabase”)
Start with internal inventory and permission checks. After saving a sample artwork, refresh the app and confirm its row appears in the intended table. Sign in as a second, unauthorized gallery account and confirm it cannot retrieve the artist's records. Atoms connector actions and permissions vary, so review the current connector details before enabling any external action. (Atoms Help Center, “Integrations”)
Stripe is unnecessary for an inventory-only tool. If you add direct-sale checkout, link each payment to one sale record and update it only after the server confirms the payment. Handle retries without recording the same sale twice. Stripe's fulfillment guide explains payment-status checks and repeated Checkout Session handling.
For a public catalogue, publish only fields intended for visitors, such as title, medium, dimensions, and availability. Keep addresses, agreement files, buyer identity, and movement notes private. See how to turn a spreadsheet into a web app for the broader migration path, and how to build a client portal for role-based access patterns.
A practical first pass
Import a small sample with one studio work, one loan, and one sold work. Check that the ID is unique, the loan appears in movement history, and returning the loan changes location without changing owner or erasing the outbound record. Then repeat the readback as the artist and try the same query as a gallery account without permission.
As the inventory grows, add only the fields you use for a decision or report. Missing dimensions, an overdue loan, and a work available from a particular series are useful search questions. A long list of rarely completed fields adds entry work without improving the record.
Build the inventory app with Atoms
Use this brief to request an app with the template and loan history above.
Copy the build brief and use it to create your version in Atoms.
Copy the brief, open Atoms, and start with the three sample works. Add billing only after the inventory and gallery-access checks pass.