Custom TemplatesBuilt-in Templates

Built-in Templates

UVerify ships with six built-in templates. You activate a template by setting the uverify_template_id field in your certificate metadata at notarization time.

default

The standard certificate view. Used when no uverify_template_id is specified.

Default template

What it shows:

  • Verification status (verified / not found / error)
  • Metadata viewer (all on-chain metadata fields)
  • Issuer identity card with Cardano address
  • Block explorer link to the transaction
  • Pagination if the same hash was notarized multiple times
  • First notarization timestamp

Metadata fields: any key-value pairs you include are shown in the metadata viewer.


monochrome

Identical to default in behaviour and layout, but with a monochrome colour scheme. Useful for document-focused contexts where a neutral look is preferred.

Activate:

{ "uverify_template_id": "monochrome" }

diploma

A formatted diploma certificate layout. Designed for academic credentials, awards, and formal certifications.

What it shows:

  • Institution name (from issuer)
  • Recipient name (revealed via ?name= URL parameter)
  • Degree or award title (from title)
  • Optional description (from description)
  • Optional decorative background pattern (from pattern)
  • Blockchain verification proof

Required metadata fields:

FieldDescription
uverify_template_idMust be "diploma"
issuerName of the issuing institution
uv_url_nameSHA-256 hash of the recipient’s name (plain value passed via ?name= URL parameter — never stored on-chain)
titleDegree, award, or certification title

Optional metadata fields:

FieldDescription
descriptionAdditional text or HTML displayed below the title
patternSVG pattern string for the certificate background
uverify_update_policyControls subsequent updates. Default: first (initial issuance is permanent)

Privacy note: the uv_url_* convention stores only a hash on-chain. The plain value is appended as a URL parameter when sharing the verification link and is never written to the blockchain.

Example:

{
  "uverify_template_id": "diploma",
  "uverify_update_policy": "first",
  "issuer": "University of Example",
  "uv_url_name": "<sha256('Jane Doe')>",
  "title": "Master of Science in Computer Science",
  "description": "Awarded with distinction, June 2024"
}

The easiest way to issue diplomas is via the SDK apps helper, which handles hashing and URL construction automatically — see TypeScript SDK → Application helpers.


digitalProductPassport

A full Digital Product Passport (DPP) layout for manufactured goods. Designed for EU-compliant product transparency, sustainability data, and end-of-life instructions.

What it shows:

  • Product name, manufacturer, model, and GTIN
  • Serial number (revealed via ?serial= URL parameter)
  • Origin, manufacture date, and brand colour
  • Carbon footprint, recycled content, and energy class
  • Warranty, spare parts availability, and repair information
  • Recycling instructions
  • Material composition (mat_* keys) and certifications (cert_* keys)
  • Blockchain verification proof

Required metadata fields:

FieldDescription
uverify_template_idMust be "digitalProductPassport"
nameProduct name
issuerManufacturer name
gtinGlobal Trade Item Number
uv_url_serialSHA-256 hash of the serial number (plain value passed via ?serial= URL parameter)

Optional metadata fields:

FieldDescription
modelModel identifier
originCountry of origin
manufacturedProduction date (ISO 8601)
contactContact email or URL
brand_colorBrand hex colour for UI theming (e.g. #1a56db)
carbon_footprintCarbon footprint value and unit
recycled_contentPercentage of recycled content
energy_classEnergy efficiency class
warrantyWarranty period description
spare_partsSpare parts availability note
repair_infoURL or description of repair instructions
recyclingEnd-of-life recycling instructions
mat_<key>Material composition entry (e.g. mat_aluminum: "45%")
cert_<key>Certification entry (e.g. cert_ce: "CE Marking")
uverify_update_policyControls subsequent updates. Default: restricted (issuer-only updates)

Hash convention: the on-chain hash should be sha256(gtin + serialNumber) to uniquely identify this product instance.

Example:

{
  "uverify_template_id": "digitalProductPassport",
  "uverify_update_policy": "restricted",
  "name": "EcoCharge Powerbank Pro 200",
  "issuer": "GreenTech AG",
  "gtin": "04012345678901",
  "uv_url_serial": "<sha256('EC200-SN-20240815-00847')>",
  "model": "EC-200-2024",
  "origin": "Germany",
  "carbon_footprint": "1.2 kg CO₂e",
  "recycled_content": "38%",
  "energy_class": "A++",
  "warranty": "3 years",
  "mat_aluminum": "45%",
  "mat_recycled_plastic": "38%",
  "cert_ce": "CE Marking",
  "cert_rohs": "RoHS Compliant"
}

The easiest way to issue Digital Product Passports is via the SDK apps helper — see TypeScript SDK → Application helpers.


laboratoryReport

A laboratory report certificate layout. Designed for clinical and research labs issuing verifiable test results to patients or auditors.

What it shows:

  • Laboratory name (from issuer) and contact
  • Patient name (revealed via ?name= URL parameter)
  • Report ID (revealed via ?report_id= URL parameter)
  • Measured values (all a_* keys displayed as a results table)
  • Auditable flag — when true, all values are visible on the certificate
  • Blockchain verification proof

Required metadata fields:

FieldDescription
uverify_template_idMust be "laboratoryReport"
issuerName of the issuing laboratory
uv_url_nameSHA-256 hash of the patient’s name (plain value passed via ?name= URL parameter)
uv_url_report_idSHA-256 hash of the report ID (plain value passed via ?report_id= URL parameter)

Optional metadata fields:

FieldDescription
contactLab contact email or URL
auditable"true" or "false" — whether measured values are displayed on the certificate (default: "false")
a_<key>A measured value entry (e.g. a_glucose: "5.4 mmol/L")
uverify_update_policyControls subsequent updates. Default: first (initial issuance is permanent)

Hash convention: the on-chain hash should be sha256(reportId).

Example:

{
  "uverify_template_id": "laboratoryReport",
  "uverify_update_policy": "first",
  "issuer": "Berlin Medical Diagnostics GmbH",
  "contact": "results@bmd-lab.example",
  "uv_url_name": "<sha256('Sophie Wagner')>",
  "uv_url_report_id": "<sha256('BMD-2024-10-00123')>",
  "auditable": "true",
  "a_glucose": "5.4 mmol/L",
  "a_hba1c": "5.7%",
  "a_cholesterol": "4.9 mmol/L"
}

The easiest way to issue laboratory reports is via the SDK apps helper — see TypeScript SDK → Application helpers.


petNecklace

A lost-pet necklace certificate. When an NFC chip and the on-chain hash are combined, the owner’s contact information is revealed. No database, no server — GDPR-safe by design.

What it shows:

  • Pet name and species/breed
  • Owner name (revealed via ?owner_name= URL parameter)
  • Owner phone number (revealed via ?phone= URL parameter)
  • Optional note for the finder
  • Blockchain verification proof

Required metadata fields:

FieldDescription
uverify_template_idMust be "petNecklace"
pet_nameName of the pet
uv_url_owner_nameSHA-256 hash of the owner’s name (plain value passed via ?owner_name= URL parameter)
uv_url_phoneSHA-256 hash of the owner’s phone number (plain value passed via ?phone= URL parameter)

Optional metadata fields:

FieldDescription
speciesPet species (e.g. "dog", "cat")
breedBreed description
noteA short message for the finder
uverify_update_policyControls subsequent updates. Default: restricted (only the issuer wallet can push updates, e.g. when the phone number changes)

Example:

{
  "uverify_template_id": "petNecklace",
  "uverify_update_policy": "restricted",
  "pet_name": "Luna",
  "species": "dog",
  "breed": "Golden Retriever",
  "uv_url_owner_name": "<sha256('Max Mustermann')>",
  "uv_url_phone": "<sha256('+49 151 23456789')>",
  "note": "Luna is friendly and microchipped. Please call immediately!"
}

See the Pet Necklace use case for a full walkthrough.


socialHub

A social profile hub for physical items. Used in the Connected Goods use case.

Social Hub template

What it shows:

  • Product information
  • A link tree that the item owner can update
  • Wallet connect for claiming the item and minting an NFT
  • Secret validation (checks ?secret= URL parameter against the on-chain hashed_secret)

Whitelist: this template is restricted to specific issuer addresses. Contact the UVerify team to set up a Connected Goods deployment.

Alias: linktree maps to this template for backwards compatibility.


productVerification

Product authentication with support for asymmetric NFC chip verification.

Product Verification template

What it shows:

  • Product image, name, manufacturer, production date
  • Material information and serial number
  • NFC chip verification status (if an NFC chip is present and tapped)

Required metadata fields:

FieldDescription
uverify_template_idMust be "productVerification"
productNameName of the product
manufacturerManufacturer name

Optional metadata fields:

FieldDescription
productionDateDate of production
materialInfoMaterial and care information
serialNumberUnique serial number
imageUrlURL to the product image

Example:

{
  "uverify_template_id": "productVerification",
  "productName": "Titanium Road Frame Pro",
  "manufacturer": "ExampleBikes GmbH",
  "productionDate": "2024-11-15",
  "serialNumber": "TRF-2024-00842",
  "imageUrl": "https://cdn.example.com/products/trf-pro.jpg"
}

Whitelist: this template is restricted to specific issuer addresses. Contact the UVerify team to enable it for your account.

Asymmetric NFC: this template uses the @uverify/asymmetric-nfc library. The NFC chip holds a private key and signs a server challenge; the certificate page verifies the signature against the public key stored on-chain. This proves physical possession of the genuine chip, not just knowledge of the URL.


tadamon

A branded certificate template built as a proof of concept with the Tadamon UNDP program.

Whitelist: restricted to authorized Tadamon issuer addresses. Not available for general use.