Contracts
The Contracts module turns Word documents into e-signable contracts. Upload a DOCX template once, fill in the variable fields per recipient, send for signature. The customer signs in the browser, you get a notification, the audit trail is automatic.
This is for general legal contracting: NDAs, MSAs, SOWs, partnership agreements, consent forms, parental permissions, anything you'd otherwise email as a Word doc with "please sign and send back".
For recurring-services commitment contracts (the ones generated when a customer accepts an annual quote), see the Service catalogue → Renewals docs. Those use a separate, automated flow.
Who sees this
The Contracts module is gated by these permissions:
contracts.view: see the list and details of contractscontracts.create: start new contracts from existing templatescontracts.send: send for signature, void, resendcontracts.manage_templates: upload, edit, archive DOCX templates
Tier: Pro and above. Tick the permissions on the roles you want in Settings → Roles and permissions.
How it works
1. Build a template in Word
Open a fresh Word/Pages doc. Write your contract as you'd normally write it: headings, paragraphs, bullet lists, tables, the lot. Wherever you'd want to substitute a value per-recipient, write a placeholder like:
{{ company_name }}
{{ contact_name }}
{{ effective_date }}
{{ price_per_month }}
The placeholder syntax is double curly braces with the field name inside. Field names are snake_case and can include letters, numbers and underscores. Spaces around the name are optional.
Save as .docx (not .doc).
2. Upload the template
Go to E-Sign → Manage templates → Upload template. Give it a name, pick a category (NDA / MSA / SOW / Partnership / Consent / Other), drop the DOCX in. The system parses the file, extracts every {{ merge_field }} it finds, and lists them on the template card so you can confirm everything's accounted for.
The DOCX is stored as the source of truth. Re-upload to update: concorbit re-parses and replaces the cached HTML automatically.
3. Send a contract
E-Sign → New contract opens a three-pane form:
Pick a template
Pick a recipient (search by name or email)
Fill in each merge field. Values appear live in the preview on the right, with substitutions highlighted in accent colour and any unfilled fields flagged in warning yellow
Tick Send immediately for signing to email the recipient straight away, or untick to save as a draft you can review and send later.
4. The customer signs
The recipient gets an email with a secure signing link (no login required, token-based). They open the link, see the rendered contract with all merge fields substituted, type their name or draw their signature, and submit. The system records:
The signature (typed name or drawn image)
IP address
Timestamp
Status updates flow back automatically: sent → viewed (when they open the link) → signed.
5. Audit and recall
The contract detail page shows the full lifecycle: when sent, when viewed, when signed, plus the rendered contract body that was actually shown to the customer. The signing link can be copied for a quick re-send via Slack/SMS if the email got lost.
If the customer changes their mind before signing, click Void on the contract. The signing link stops working and the contract status becomes voided.
Limitations
One signer per contract: multi-party signing (countersign, witness, sequential) isn't in this release
No conditional fields: every field gets the same input box; conditional logic must be hand-managed in the merge data
DOCX-only: Pages exports to DOCX cleanly; LibreOffice DOCX export works too
Plain formatting: bold, italic, underline, headings, paragraphs, lists, tables all render. Anything fancier (text boxes, embedded images, complex layouts) may not survive the conversion
Coming soon
Multi-party / sequential signing
Conditional merge fields with show/hide rules
WeasyPrint-rendered signed PDFs delivered to both parties as email attachments