Concorbit HelpAll guides →

Templates

Building DOCX templates

A few practical tips on writing DOCX files that parse well into concorbit's contract renderer.

Merge field syntax

{{ field_name }}
  • Double curly braces, optional whitespace inside

  • Field names are letters, numbers, and underscores only (company_name ✓, Company Name becomes company_name automatically, co-name becomes co_name)

  • Case-insensitive: {{ COMPANY_NAME }} and {{ company_name }} reach the same field

  • Same field can appear multiple times in the document, and every occurrence gets the same value

What renders cleanly

  • Headings (Heading 1, 2, 3 styles): render as h1 / h2 / h3

  • Paragraphs: preserved with line breaks

  • Bold, italic, underline: preserved

  • Bullet lists and numbered lists: render as <ul> list items

  • Tables: basic tables with rows and columns render as HTML tables

  • Hyperlinks: preserved as clickable accent-coloured links

What gets stripped

  • Headers and footers (page-level chrome, not relevant in browser rendering)

  • Footnotes and endnotes

  • Embedded images (won't break the contract; they just don't appear)

  • Text boxes, shapes, and SmartArt

  • Complex multi-column layouts

  • Track-changes annotations (accept changes before uploading)

  1. Draft in Word/Pages with normal formatting

  2. Upload to concorbit to see how it renders in the browser

  3. Open a test contract (with yourself as recipient) to preview

  4. Iterate: re-upload the DOCX whenever you tweak the source

The DOCX is the master copy. concorbit caches the rendered HTML for performance, but re-uploading always regenerates from source.

Common merge fields

There's no fixed schema: you can name fields whatever you like. But a few conventional names play well with concorbit's auto-fill (planned for a future release):

  • company_name: the recipient's company

  • contact_name: the recipient's full name (first + last)

  • contact_email: the recipient's email

  • effective_date: when the contract takes effect

  • termination_date: when the contract ends

  • tenant_name: your business name

  • signer_name: name to print under the signature line

  • signer_title: job title

These don't auto-populate today (you fill them in per-contract), but using these names means future auto-fill features will Just Work for you.

Testing your template

Always test new templates by sending one to yourself before sending to a real customer. Common things to catch:

  • A field name typo means that occurrence won't substitute (will appear as-is in the rendered contract)

  • An unfilled field shows as an empty string, defence in depth, but you usually want to fill them all

  • Merge fields inside tables or list items work the same as in paragraphs