Skip to content

Building a Reusable Contract Template

If you send the same type of contract repeatedly - recurring service agreements, NDAs per new client, SOWs per new project - a template pays for itself on every use. Templates capture the standard HTML body, parties, clauses, and obligation schedule. New contracts from the template inherit everything.

This tutorial walks through creating a template for a Standard Service Agreement. Takes about 6 minutes.

1. Open Contract Templates

Click Templates (under Contracts) in the sidebar.

Contract Templates

The seeded set has NDAs, MSA, SOW, and Lease. Click New Template.

2. Basic template setup

The creation modal asks for:

  • Name (required) - "Standard Service Agreement"
  • Type - Service Agreement
  • Is Default - on (so it's pre-selected when creating any Service Agreement contract)

Click Create. The template appears in the list.

3. Open the designer

On the new template's row, click Designer. The designer opens with an empty canvas. Same UI as the invoice designer, same drag-and-drop mechanics - see Invoice Designer tutorial for details.

Key contract-specific fields in the left panel:

  • CONTRACT group: Contract Title, Contract Number, Contract Type, Effective Date, End Date, Renewal Date, Signed Date, Status, Contract Value
  • PARTIES group: Counterparty (renders the client/external party name)
  • CONTENT group: Notes (body text block for the contract content)

4. Build the layout

Drag these to the canvas in a typical contract order:

Header zone (repeats on every page):

  • Company Name (top-center, large)
  • Title / Number (below the name)

Content zone (body):

  • Horizontal divider
  • "Parties" heading (text label)
  • Counterparty block (drop from PARTIES)
  • Contract Value (inline)
  • Effective Date and End Date (as a row)
  • Horizontal divider
  • Notes block (this is where clauses go)

5. Add clauses

In the designer, add a Text / Clause block from the left palette for each clause (or edit an existing block inline). The designer toggles between Design and Preview only - there is no raw-HTML editor. Pull the wording from the Clause Library:

Common clauses for a service agreement:

  • Scope of Services
  • Fees and Payment Terms
  • Term and Termination
  • Confidentiality (pick Mutual Confidentiality from the library)
  • Limitation of Liability
  • Governing Law (Governing Law (New York) from the library)
  • Indemnification (Indemnification (Mutual))

For each: open the Clause Library in a second tab, copy the clause body, and paste it into a Text / Clause block at the right position.

6. Save the template

Click Save in the designer. The HTML is stored on the template. Back to return to the template list.

7. Add a default obligation schedule

Click Edit on your template. In the modal, use the Default Obligations section - click + Add obligation to add a row (Days, Label, Description). Days count from the contract's start date. The rows are stored as JSON of this shape:

json
[
  {
    "days_from_start": 7,
    "label": "Counterparty COI",
    "description": "Collect certificate of insurance from counterparty"
  },
  {
    "days_from_start": 14,
    "label": "Kickoff meeting",
    "description": "Schedule and hold project kickoff"
  },
  {
    "days_from_start": 30,
    "label": "First invoice cycle",
    "description": "Issue invoice for initial month"
  },
  {
    "days_from_start": 90,
    "label": "Quarterly review",
    "description": "Review deliverables and client satisfaction"
  },
  {
    "days_from_start": 335,
    "label": "Renewal decision deadline",
    "description": "Notify client 30 days before end of term"
  }
]

Save.

8. Test the template

Go to Contracts -> New Contract.

In the creation modal:

  • Type: Service Agreement
  • Your template is pre-selected (because Is Default is on)
  • Fill in title and dates
  • Click Create

The new contract opens with:

  • Your template's HTML rendered in the designer
  • Empty parties (add them now)
  • Status: Draft

When you eventually move this contract to Active, the five obligations auto-generate:

  • Counterparty COI due in 7 days
  • Kickoff meeting due in 14 days
  • First invoice cycle due in 30 days
  • Quarterly review due in 90 days
  • Renewal decision deadline due in 335 days

9. Maintain the template

As you learn from real contracts, update the template:

  • Missing a clause you keep typing in manually? Add it to the template.
  • Obligation never happens on day X? Adjust the days_from_start.
  • Template too generic? Create a separate one for each sub-type (e.g. "Fixed-fee Service Agreement", "Hourly Service Agreement").

Changes to a template don't retroactively update contracts already created from it. This is intentional - existing contracts lock in their content at creation time.

Tips

  • Mark one template as Default per type. Users shouldn't have to pick a template for the common case.
  • Start with a seeded template and customise. Don't build from scratch - clone the closest seeded one and edit.
  • Test with a real contract before rolling out. Create a test contract, send it to yourself as the counterparty, sign it, and verify obligations fire correctly.
  • Version templates by name. Add " (v2 - 2026-Q3)" suffix to the name when you make breaking changes. Keeps history clear.

What's next

FoxCLM Documentation