Certificates
Certificates are immutable PDFs generated from a Thread’s data. You design a reusable Certificate Form once — a PDF or image background with placed data zones — and then generate certificates from it for any Thread whose data satisfies the form. Once issued, a certificate is a permanent copy: editing the Thread or the form afterwards never changes an already-issued PDF.
Who can do what
Section titled “Who can do what”Access follows your role in the active Team:
- Team admins manage forms: creating, editing the design and field bindings, importing, and archiving them.
- All team members can browse forms and use active ones to generate certificate PDFs from Thread data.
Certificate Forms
Section titled “Certificate Forms”Open Certificate Forms from the sidebar (/app/certificates/forms). Forms are “reusable designs that bind Thread data into generated Certificate PDFs.” The list shows each form’s name, status, binding count, and last update; use Show archived to include archived forms.
From the list you can create a form (New Form — give it a name; you’ll add the design next), Copy form, Import a previously exported form definition, and Archive or Restore a form. A form’s status is either Active or Archived — only active forms are offered when generating.
The form designer
Section titled “The form designer”Opening a form launches the Certificate Form Designer. A form has two ingredients:
- A design — upload a PDF or image (Upload design (PDF or image)) to use as the certificate background. A design is required before you can place fields. Replacing the design later removes all placed fields and their positions; already-issued certificates are unaffected.
- Placed fields — zones you click onto the design, each bound to a data source.
To see realistic values while designing, pick a Design Context (“Designing against”): either one Thread (real preview data) or one Thread Template (field names only) to seed bindings from. Switching context never changes fields you’ve already placed.
Field sources
Section titled “Field sources”Each placed zone pulls its value from one of four sources:
- Thread fields — chips listing the fields of the Thread or Template you’re designing against. Fields already covered by the form are marked, and you can add a field name as an alias to an existing zone instead of placing it again.
- System sources — values DICE fills in at generation time: Thread name, Thread description, Thread thumbnail, Thread UUID, Thread identifiers, Issue date, Issuer team name, and the issuer’s first, family, and full name. System sources can also be attached as fallbacks to a field zone, “used in order when no Thread field matches.”
- Custom field — type a field name (plus optional aliases and a kind) for data the design context doesn’t show yet.
- Static text — literal text, “printed exactly as written — not pulled from the thread.”
Field kinds are Text, Number, Date, Boolean, and Image, and a zone can render as plain Text or as a code: QR, Code 128, Code 39, or PDF417. Zones have position/size in millimetres, font, size, color, alignment, rotation, opacity, and (for dates) a date format.
Stable Vlink QR zones
Section titled “Stable Vlink QR zones”Add the Vlink URL system source when a Certificate needs a permanent QR code. You may place it more than once. Each placement receives its own Vlink when the Certificate is generated, so two QR zones can lead to different destinations and be managed independently afterward.
During generation, DICE shows one configuration card for every Vlink placement. Each card can point to the Thread’s Public Page, use a custom HTTP(S) URL, or stay unconfigured as a draft. The Public Page is selected by default when one exists, but it is not required for the other placements. Preview QR codes are representative and distinct; their permanent Vlink URLs are created only when you click Generate.
How fields resolve — by name, not by template
Section titled “How fields resolve — by name, not by template”A form is not tied to a Thread Template. At generation time, each zone’s field name and aliases are matched against the Thread’s field names case-insensitively — “Name”, “name”, and “NAME” all resolve to the same field. Any Thread whose field names match can use the form, regardless of which template (if any) created it.
Marking a zone Required “blocks generation when this value cannot resolve.” Non-required zones simply render empty when nothing matches.
While a Thread is selected as the design context, the preview flags zones that won’t resolve, with reasons such as no value, type mismatch, ambiguous, won’t resolve, or won’t encode (for code formats), and a banner listing required fields that “won’t resolve against this Thread.”
Preflight
Section titled “Preflight”Whenever you pick a form for a Thread, DICE runs a preflight: it reports how many required fields resolve (“Resolves 3/4 required fields”) and an overall verdict of Compatible or Not compatible. Fields satisfied through an alias are marked with the alias that matched. Generation is only allowed when the preflight passes.
Generate a certificate for a Thread
Section titled “Generate a certificate for a Thread”-
Open the Thread and find its Certificates card (“Immutable PDFs generated from this thread’s data.”).
-
Click Generate Certificate. In the dialog, pick a Certificate Form — or choose + New form from this thread… to create a form seeded with this Thread’s fields.
-
Review the preflight result for the selected form against this Thread.
-
Optionally set a Certificate name — it is “shown in the certificates list and used as the download filename” and defaults to the form name. If the form contains Vlink QR zones, configure each destination independently. Click Preview certificate to inspect the rendered PDF first.
-
Click Generate. On success you’ll see Certificate issued, and the certificate appears on the card with its issue date.
From the card, each certificate offers Download (the PDF) and Void.
Batch generation
Section titled “Batch generation”To issue the same certificate for many Threads at once:
-
In the Threads list, multi-select the Threads and choose Generate Certificates. This opens Batch Generate Certificates (
/app/certificates/batch) with your selection queued. A batch is limited to 100 threads. -
Select a Certificate Form. DICE preflights every queued Thread and labels each one Compliant, Not compliant (with the missing fields listed), or Not viewable (you can’t view that Thread in this context). Use the re-check action after fixing Thread data.
-
Click Issue N compliant. Certificates are “issued one at a time”; each row moves through Issuing… → Issued or Failed.
-
Afterwards, use Retry N failed for failures, remove rows with Remove from batch, and Export CSV for a record of the run.
Voiding a certificate
Section titled “Voiding a certificate”Issued certificates cannot be edited or deleted — they can be voided. “Voiding marks the certificate as no longer valid to rely on. The PDF and its hash are unchanged.”
-
On the Thread’s Certificates card, click Void next to the certificate.
-
Pick a Reason: Issued in error, Incorrect thread data, Wrong form, Duplicate certificate, or Other.
-
Optionally add an Internal note (private), then confirm with Void.
Voided certificates stay in the list marked Voided, and remain downloadable for your records.
Form lifecycle tips
Section titled “Form lifecycle tips”- Archive retires a form without touching certificates already issued from it; Restore brings it back. Archived forms don’t appear in the generate dialog.
- Copy form duplicates a form (including its design and bindings) so you can iterate without disturbing the original.
- Export a form from the designer and Import it from the forms list to move a design between Teams — a form needs a design and a name before it can be exported.
Related pages
Section titled “Related pages”- Threads — the data certificates are generated from
- Getting started — orientation for new users
- FAQ — module availability and troubleshooting
