Skip to main content

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).

Go to Billing → Contracts (/contracts) to see all contracts in your organization.

Contract list

The list table shows the following columns:

ColumnDescription
ContractContract name, plus a line-item count when items exist
ClientThe client the contract belongs to
StatusDraft, Pending, Active, Expired, or Cancelled
ValueContract value, if set
DatesStart date and end date (flags "expiring soon" within 30 days)
SLAResponse 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

StatusMeaning
DraftBeing prepared; not yet in effect
PendingSent to the client and awaiting signature in the portal
ActiveIn effect (set by activating, or automatically when the client signs)
ExpiredPast its end date (set automatically by a background job)
CancelledTerminated 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

  1. From the Contracts list, click Create Contract.
  2. Under Contract Details, fill in:
    • Contract Name (required)
    • Description (optional)
    • Client (required)
    • Estimated Value (USD) (optional) — recurring invoices are linked separately
  3. Under Contract Period, set the Start Date and End Date (both required; they default to today and one year out).
  4. 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
  5. Under Contract Terms, write the rich-text terms and conditions the client will see and sign in the portal.
  6. Under Internal Notes, add notes that are not visible to clients.
  7. 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:

ActionWhen availableEffect
Activate ContractDraft or Pending contractsSets the status to Active
Cancel ContractAny contract not already Expired or CancelledSets the status to Cancelled and deactivates any linked recurring invoices
Create TicketAlwaysOpens the new-ticket form pre-filled with this contract's client
Delete ContractAlwaysPermanently 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

  1. Set SLA terms on agreements that carry them so the right response and resolution targets flow onto the client's tickets.
  2. Use Pending + portal signing when you need a recorded client signature, rather than activating manually.
  3. Watch the Expiring Soon filter so active contracts don't lapse unnoticed.
  4. Link recurring invoices to the contract so billing is cancelled together with the agreement.
  5. Keep client-facing terms in Contract Terms and private context in Internal Notes — only the terms are shown in the portal.