Skip to content

F13 — Event badges

The registration system exports the participants; the event has its colour and its logo. Madoo prints every badge in one PDF, ready for the printer: the name large enough to read from two metres, the company, the track, a band that says who the person is, a ribbon for VIP guests and a QR code to scan at the door — and the next event uses the same template with its own colour and logo.

Four A6 badges from the run: a navy header with the event logo, name and dates; the first name large, the surname, the company and the track; a gold VIP ribbon on two of them; a check-in QR code with the event logo at its centre and the badge ID beside it; and a band at the bottom — orange SPEAKER, grey ATTENDEE twice, dark STAFF

A reference run: 0 credits, four A6 pages in one PDF. The same template for another event, only the colour, the name and the participant changed: variant.

Northwind Summit (fictional), a two-day conference in Bergen, prints the badges the night before.

Input Who provides it Example
Participants the registration system first name, last name, company, role (speaker, staff, attendee), VIP yes/no, track, badge ID, check-in link
Event name, place and dates the organisers NORTHWIND SUMMIT, Bergen · 14–15 October 2026
Event colour the event’s brand #1b4965
Event logo the event’s brand, as SVG a white mountain mark
  • One template for every event. The header band takes its colour from a colour field and the logo is an SVG image field: a new event changes two values, not the design. See Colour fields and An SVG as an image.
  • A QR code per person, proven to scan. The QR Code node (image/code) runs once per participant, after the enumerator, and draws the check-in link as a vector SVG with the event logo at its centre; it decodes every code it draws, so a code that does not scan stops the run instead of reaching the printer. The badge ID printed beside it is the fallback for manual check-in. See QR codes.
  • A band per role, chosen by conditions. Three bands sit at the bottom of the page, each shown only when role equals its value. The role has its own field — a hidden text — because a condition reads the template’s fields.
  • A yes/no field that shows a whole group. The VIP ribbon is a group (a gold shape and its label) carrying a yes/no field in visibility mode: it prints only for VIP guests. See Yes/no fields.
  • Names of any length. First name and surname each take one line and shrink beyond it; a long company takes two lines and an ellipsis; an empty company or track leaves no gap, because the name block is a flowing Layout.
  • One PDF for the printer. Multi-page PDF runs the template once per participant after the list is split — see One PDF for the whole list.

A6 portrait (298 × 420 points), white; Playfair Display for the name, Montserrat for labels, Inter for text.

Area Content How it is built
Header the event colour, a lanyard hole, the logo, the event name and dates a rectangle with the colour field event_color; image field event_logo (fit, aligned left); fields event_name (one line, shrinks) and event_dates
VIP ribbon VIP ACCESS in a gold chip under the header a group with the yes/no field vip, booleanMode: visibility, default false
Person first name, surname, company, track a flowing Layout: first_name (34 pt, one line, shrinks), last_name, company (up to 2 lines) and track, the last two shown only when not empty
Check-in the QR code, the badge ID image field checkin_qr (104 points square, fit, above the band on the right); field badge_id beside it
Role band SPEAKER, STAFF or ATTENDEE three groups at the bottom, each with the condition role equals its value
Field Type Required Comes from
first_name, last_name text yes each participant
company, track text no each participant
role text: speaker, staff or attendee yes each participant
vip yes/no (visibility) no each participant
badge_id text yes each participant
checkin_qr image (SVG) yes the QR Code node, from the participant’s check-in link
event_name, event_dates text yes the event inputs
event_color colour yes the event input
event_logo image (SVG) yes the event input

Design choices worth copying:

  • Readable from a distance: the first name at 34 points, the surname smaller, the company muted.
  • Colour means role: orange for speakers, dark for staff, light grey for attendees — the band is the first thing seen at a door.
  • White text on the event colour: whatever colour the event brings must keep white readable; say so in the field’s description.
  • A QR code of at least 3 cm, in white space, with the quiet zone the node draws around it: scanned at a door from a lanyard, a smaller code fails.
  • Four sample sets cover a speaker with VIP, an attendee, the longest name and company with VIP, and a staff member without company.
Participants (JSON value) ──► One badge per participant (enumerate/json) ──first_name, last_name, company, role, vip, track, badge_id──┐
└──checkin_url──► Check-in QR code (image/code) ──svg──────────────────────────────────────┤
Event logo (SVG) ──────────────────────────────────────────────► (logo) ├──► All badges in one PDF ──► PDF
Event name, Place and dates, Event colour, Event logo ────────────────────────────────────────────────────────────────────────────────┘
Node Type Why
Participants input/json_value The whole list as one JSON value
One badge per participant enumerate/json Splits the list: one iteration per participant, with typed values (vip as a yes/no)
Event name, Place and dates, Event colour input/text The same on every badge; the colour as #RRGGBB text into the colour field
Event logo (SVG) input/image An SVG file uploaded to the workspace
Check-in QR code image/code One code per participant from checkin_url: rounded modules, the event logo on a dark circle (Logo Background circle) so a white logo stays visible; error correction rises to H with a logo
All badges in one PDF aggregate/pdf, fixed revision Runs the template once per participant and joins the pages in order; every field of the template is an input port
Badges — PDF output/pdf One file for the printer

Cost: 0 credits — no AI; composition is free.

Terminal window
node madoo-install-example.mjs f13 --api <your Madoo API URL> --key <key.json>

The installer uploads the SVG logo and publishes the template and the workflow. To run it, paste the participants from run-inputs.json, or add --run (0 credits). See Installing an example.

  • Another event: change the name, the dates, the colour and the logo — the template stays.
  • Other roles: add a band group per role, each with its condition; describe the values in the role field.
  • Another code content: connect the badge ID instead of the link, or a contact card, to the QR node’s content; its style (shapes, colours, logo) is in the node’s parameters — see QR codes.
  • Another size: badges for 90 × 120 mm holders need a page of 255 × 340 points; move the elements accordingly.

manifest · template · workflow · run inputs