Contracts
Contracts capture client service agreements: their term, value, line items, and service-level commitments. An active contract can drive SLA targets on the client's tickets and can be linked to recurring invoices for billing.
Overview
The Contracts module lets you:
- Create contracts for a client with a start and end date, value, and terms
- Define SLA terms (response time, resolution time, support hours, support days)
- Add line items by choosing a product and a quantity
- Write rich-text contract terms that the client can review and sign in the portal
- Capture a client signature to activate a contract
- Move contracts through their lifecycle (draft, pending, active, expired, cancelled)
- Link recurring invoices to a contract for billing
- Track tickets associated with the contract
Contracts live under the Billing section of the sidebar, which requires the usage-based-billing license feature. Access is gated by the contracts RBAC resource (read, create, update, delete).
Navigate to Contracts
Go to Billing → Contracts (/contracts) to see all contracts in your organization.
Contract list
The list table shows the following columns:
| Column | Description |
|---|---|
| Contract | Contract name, plus a line-item count when items exist |
| Client | The client the contract belongs to |
| Status | Draft, Pending, Active, Expired, or Cancelled |
| Value | Contract value, if set |
| Dates | Start date and end date (flags "expiring soon" within 30 days) |
| SLA | Response and resolution targets, or "No SLA" |
You can filter the list by Status and toggle an Expiring Soon filter (contracts ending within the next 30 days). The list is paginated at 25 rows per page. If a global client filter is active, the list is scoped to that client.
Statuses
| Status | Meaning |
|---|---|
| Draft | Being prepared; not yet in effect |
| Pending | Sent to the client and awaiting signature in the portal |
| Active | In effect (set by activating, or automatically when the client signs) |
| Expired | Past its end date (set automatically by a background job) |
| Cancelled | Terminated manually |
The list and detail pages also show an "Expiring soon" indicator when an active contract is within 30 days of its end date — this is a visual flag, not a separate status.
Creating a contract
- From the Contracts list, click Create Contract.
- Under Contract Details, fill in:
- Contract Name (required)
- Description (optional)
- Client (required)
- Estimated Value (USD) (optional) — recurring invoices are linked separately
- Under Contract Period, set the Start Date and End Date (both required; they default to today and one year out).
- Under SLA Settings (all optional), set:
- Response Time and Resolution Time, each with a unit of minutes, hours, or days
- Support Hours Start and Support Hours End
- Support Days — toggle the days of the week support applies
- Under Contract Terms, write the rich-text terms and conditions the client will see and sign in the portal.
- Under Internal Notes, add notes that are not visible to clients.
- Click Create Contract.
New contracts start in Draft status. SLA times are stored in minutes regardless of the unit you choose.
Contract detail page
Open a contract to see its full record. The page is organized into a main column and a sidebar.
Main column (sections appear only when they have data):
- Description
- Service Level Agreement — response time, resolution time, support hours, and support days
- Contract Items — a table of line items showing the product, quantity, unit price (from the product), and total
- Contract Terms — the rendered rich-text terms shown to the client
- Signature — the captured signature image, signer name, and email once signed
- Awaiting Signature — a notice shown for pending contracts that have not been signed
- Internal Notes
- Audit log — a history of changes to the contract
Sidebar:
- Contract Value (when set)
- Details — client, start date, end date, ticket count, recurring-invoice count, and created date
- Actions — see below
Editing and line items
Click Edit on the detail page to change contract fields and manage line items. To add a line item, click Add Item, select a Product, and set a Quantity. The unit price comes from the selected product, and the item total is quantity multiplied by that unit price.
Contract actions
From the Actions card on the detail page:
| Action | When available | Effect |
|---|---|---|
| Activate Contract | Draft or Pending contracts | Sets the status to Active |
| Cancel Contract | Any contract not already Expired or Cancelled | Sets the status to Cancelled and deactivates any linked recurring invoices |
| Create Ticket | Always | Opens the new-ticket form pre-filled with this contract's client |
| Delete Contract | Always | Permanently removes the contract and its associated data |
Activate and Cancel both require the contracts update permission; both prompt for confirmation before they run.
Client signing (portal)
If a contract is in Pending status with contract terms, the client can review and sign it from the client portal. Only portal users with Primary or Billing access can see contracts, and the portal only shows Pending, Active, and Expired contracts (never Draft or Cancelled).
When the client signs, the contract is set to Active and the signature image, signer name, signer email, timestamp, and audit details (IP and browser) are recorded on the contract.
SLA and ticketing
When a client has an Active contract whose term covers today, its SLA terms (response time, resolution time, support hours, support days) can be applied to that client's tickets. Only one active, in-term contract per client is used for this purpose.
Linking to recurring billing
A contract can be tied to recurring billing so the agreement and the invoices stay in sync:
- A recurring invoice can reference a contract when it is created.
- The contract detail page shows how many recurring invoices are linked.
- Cancelling a contract deactivates its linked recurring invoices.
The contract value is a standalone estimate — it is not calculated from linked recurring invoices. See the recurring billing documentation under Billing → Recurring for how to set up the invoices themselves.
Lifecycle and renewals
- Contracts move from Draft to Active by activation or by client signature.
- A background job automatically marks Active contracts Expired once their end date has passed, and sends an expiration notification.
- The Expiring Soon filter and the 30-day "expiring soon" flag help you spot contracts that need attention before they lapse.
Templates
Contract templates let you reuse common SLA defaults and default line items across contracts. Templates store a name, description, SLA defaults (response/resolution time, support hours, support days), and default items, and a new contract can be created from a template.
Best Practices
- Set SLA terms on agreements that carry them so the right response and resolution targets flow onto the client's tickets.
- Use Pending + portal signing when you need a recorded client signature, rather than activating manually.
- Watch the Expiring Soon filter so active contracts don't lapse unnoticed.
- Link recurring invoices to the contract so billing is cancelled together with the agreement.
- Keep client-facing terms in Contract Terms and private context in Internal Notes — only the terms are shown in the portal.