ArtFirma

For artists and their web developers · record format v1

How to prepare your artwork pages

To sign a work, you share the link to its page with the signing app. The app reads the page, shows you a draft record, and after you confirm, freezes it: the tag carries a fingerprint of that exact record. This page says what the app looks for, so your pages produce complete records without retyping.

Confirm your key with your website

The app creates your signing key from 12 words that never leave your phone. To show visitors that the key is really yours, put one line on your own website. In the app: Settings → Register as artist shows it:

artfirma-key=9974b7731089acdc5569…
  • Either a DNS TXT record named _artfirma.example.com with that line as its value,
  • or a page example.com/pages/artfirma containing it (Shopify: Online Store → Pages → Add page, title “artfirma”). /.well-known/artfirma.txt and /artfirma.txt work too.

Then tap Check & register. Verification pages show “key confirmed by example.com” next to your name. The site is checked once, at registration: after that you can delete the page or the DNS record — the registration, and every tag you sign, stay valid.

One page per artwork, with a stable address

  • Each work needs its own public page, readable without logging in.
  • The last part of the address becomes the work id on the tag: …/products/contact-states-xii-film-009-020 → contact-states-xii-film-009-020. Allowed: lowercase letters, digits and hyphens, up to 64 characters (other characters are converted).
  • Do not rename the address of a work after its tag is signed. The tag keeps the old id; the record keeps the old link.

Describe the work with schema.org VisualArtwork (preferred)

Add a JSON-LD block to the page. Search engines read it too, so it is worth having anyway.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VisualArtwork",
  "name": "Night Field",
  "creator": { "@type": "Person", "name": "Ana Ruiz" },
  "dateCreated": "2025",
  "artform": "Painting",
  "artMedium": "oil on linen",
  "size": "100 × 80 cm",
  "image": "https://example.com/images/night-field.jpg"
}
</script>

The block may also sit inside an @graph array. image may be a URL, an ImageObject with url or contentUrl, or a list (the first is used).

What goes into the record

Record fieldTaken from, in this orderExample
id requiredlast part of the page addressnight-field
title requiredVisualArtwork.name → og:title → Shopify titleNight Field
artist requiredcreator.name → og:site_name → Shopify vendorAna Ruiz
photo requiredVisualArtwork.image → og:image → first Shopify imageJPEG, PNG or WebP, ≥ 1200 px long side
yeardateCreated → a line holding only the year in the description2025
artformartformPainting
mediumartMedium → a description line starting with the mediumoil on linen
sizesize → a description line with dimensions in cm / mm / in100 × 80 cm
seriesShopify description line starting with “from the …”from the 'Fields' series
notesShopify description line containing “signed”signed and dated verso
statementremaining description lines → og:descriptionshort text about the work
sourcepage address, Shopify product id, date of importfor people; never used for checking

Every field can be corrected in the draft before you confirm. Missing optional fields are simply left out.

Pages without schema.org

Open Graph tags are enough for a minimal record (title, artist, photo, statement):

<meta property="og:title" content="Night Field">
<meta property="og:site_name" content="Ana Ruiz">
<meta property="og:image" content="https://example.com/images/night-field.jpg">
<meta property="og:description" content="Oil on linen, 2025.">

Shopify stores need nothing extra: the app also reads the product's public /products/<handle>.json.

After signing, the record is frozen

  • The record and its photo are copied into the public registry and its archives. Changing your website later does not change them.
  • To correct a record, create a new one and sign the tag again. The tag moves to a new key version, and links read before that stop passing the online check.
  • The photo is stored at up to 1600 px on the long side: enough to compare with the work, not for print.

Check your page

Share the page link with the signing app. The draft shows which fields were found; empty ones mean the page does not provide them in a form listed above.