A template is the email content you send. It’s HTML + a subject line + sender details, scoped to a single event. You create a template once, then reference it by id when sending to attendees.Documentation Index
Fetch the complete documentation index at: https://docs.qflowhub.io/llms.txt
Use this file to discover all available pages before exploring further.
Create a template
Capture the
id — you’ll reference it when sending. If you supply your own id in the create request, the call is idempotent: posting the same id twice with different content is treated as an update.Merge tokens
The following are replaced insubject and html per recipient:
| Token | Replaced with |
|---|---|
{{firstname}} | Attendee’s first name |
{{lastname}} | Attendee’s last name |
{{fullname}} | First + last name |
{{othernames}} | Middle/other names |
{{email}} | Attendee’s email |
{{barcode}} | Attendee’s barcode (auto-generated if missing) — raw string, e.g. 4GA6965Q1G5EZ0FB |
{{barcode_qr}} | Fully-qualified QR-code image URL — drop into <img src="{{barcode_qr}}" /> |
{{plusones}} | Number of plus-ones (or empty if 0) |
{{guestnotes}} | Attendee’s additionalInfo |
{{tags}} / {{tickets}} / {{sessions}} | Tag groups (one per line if multiple) |
{{event}} | Event title |
{{date}} | Event start date in event timezone (dd MMMM yyyy) |
{{starttime}}, {{endtime}} | Event times in event timezone (HH:mm) |
{{companyname}} | Sender’s company name |
{{rsvplink_yes}}, {{rsvplink_no}} | RSVP confirmation links |
{{V_1}}, {{V_2}}, … | Custom field values from the attendee’s CustomFields JSON |
PDF attachment
SettingattachPdf: true on the template makes every send from that template attach a PDF rendered from the same merge-resolved HTML the email body uses. Filename is {template-name}.pdf.
- Same HTML for body + PDF — the PDF is what’s in the email, not a separate document.
- Field is
bool?.null(or omitted) leaves the existing flag alone on upserts — partial template updates won’t accidentally turn PDF off. - Toggle off any time by reposting the template with
attachPdf: false. - PDF rendering is synchronous — adds ~1–2s per send. Pace bulk flushes accordingly.
Other template endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /api/comms/template/{id} | Fetch a single template |
GET | /api/comms/templates?eventId=<guid> | List templates for an event |
POST | /api/comms/template/delete | Delete a template (body: {"id": "<guid>"}) |
URL safety scanning
Template HTML is automatically scanned by Google Web Risk on creation. Templates containing URLs flagged for malware, phishing, or unwanted software are rejected with422:
