Creating Templates
Build Word DOCX templates for Vulnsy report export — tag placement, testing, and uploading.
Vulnsy templates are .docx files with placeholder tags. Design your layout in Word, add tags where dynamic data should appear, then upload.
Familiarise yourself with the Template Tags reference first.
Creating Your Template
Create a New Word Document and Disable Spell Check
Open Word and create a blank .docx document. Before adding any tags, disable spell check — it silently splits tags across XML nodes, breaking them.
File → Options → Proofing — uncheck "Check spelling as you type" and "Mark grammar errors as you type".
This is the most common cause of broken templates. With spell check enabled, Word may split {client.name} into {client + .name} in the underlying XML.
Add Static Content
Add your report structure: cover page, logo, section headings, headers/footers, page numbers, table styles, and branding.
Add Template Tags
Type each tag in one continuous motion — opening { to closing } without stopping. Do not copy/paste tags or edit them after typing.
{report.title}
Version {report.version} | Status: {report.status}
Generated: {metadata.generatedDate} by {metadata.generatedBy}
Prepared by {organization.name} for {client.name}
Contact: {client.contactName} ({client.contactEmail})
Project: {project.name}
Testing Period: {project.startDate} — {project.endDate}
EXECUTIVE SUMMARY
{~report.executiveSummary}
METHODOLOGY
{~report.methodology}Add Findings Loop
Loop opening/closing tags must each be in their own paragraph.
{#findings}
{findingId} - {title}
Severity: {severity} | CVSS: {cvssScore}
{~description}
Remediation:
{~remediation}
{#evidence}
{%image}
{caption}
{/evidence}
{/findings}{#findings}, {/findings}, {#evidence}, {/evidence}, and {%image} must each be alone in their own paragraph.
Add Consultants and Tabs (Optional)
{#consultants}
{name} — {email} — {jobTitle}
{/consultants}{#tabs}
{name} ({exportTagPrefix})
{/tabs}Save and Upload
Save as .docx (not .doc or .dotx). Navigate to Admin → Report Templates, upload the file, give it a name, and save.
Test with a Real Report
Export a report using your template and verify:
- All tags replaced with real values (no raw
{tag}text remaining) - Findings loop generates entries for each finding
- Evidence images appear within findings
- Consultants list renders correctly
- Formatting, headers/footers, and page breaks look correct
- Conditional sections show/hide as expected
Tag Placement Rules
| Tag Type | Placement |
|---|---|
Inline tags ({report.title}) | Can be mixed with text |
Loop tags ({#findings}, {/findings}) | Own paragraph |
Image tags ({%image}) | Own paragraph |
Conditional tags ({#field}, {/field}) | Own paragraph |
Troubleshooting
| Problem | Fix |
|---|---|
Tag shows raw {tag} text | Delete and retype in one motion — XML is likely split |
| Loop produces no output | Ensure loop tags are in their own paragraphs. Verify data exists. |
| Image not appearing | Put {%image} on its own line. Check evidence has uploaded images. |
| Export fails | Check every {#loop} has a matching {/loop}. Check for typos. |
Next Steps
- Template Tags — full tag reference
- Export Tag Prefixes — scope data in multi-tab reports
- Search & Replace — replace variables before export