The Contracts module is often left as a digital filing cabinet. Stored, never queried. Configured well, it is your single source of truth for what you owe, what you own, and when it renews.
Contract types
Out of the box, Freshservice supports lease, maintenance, software, and warranty. Add custom types for what you actually buy: SaaS subscription, professional services, MSP retainer, telco. Different types have different renewal behaviors and different stakeholders.
The type drives the field set. SaaS contracts need license count and usage; telco contracts need circuit ID and carrier. Build separate field layouts per type.
Required fields
Every contract has:
- Contract number (vendor’s, not yours).
- Internal contract ID (yours, sequential).
- Start date, end date, auto-renew flag.
- Notice period in days.
- Cost per period and billing cycle.
- Owner (internal accountable person).
- Primary vendor contact.
Add three custom: business owner (the team relying on this), technical owner (the team integrating with this), and risk tier (high/medium/low based on dependency).
Linking to assets
The Asset Management module ships with a contract field per asset. Link assets to their support contract. This unlocks “all assets out of warranty” and “all assets covered by vendor X” reports.
For software, link the contract to the software entitlement, not to individual installations. Otherwise you are maintaining 500 links instead of one.
Renewal automation
Build a workflow on the contract object that watches end_date - notice_period. When that date arrives, create a ticket assigned to the owner with the renewal task. The ticket SLA is tied to the notice period.
Stack three alerts: 90 days, 60 days, 30 days. 90 day alert is “decide whether to renew.” 60 day is “notify vendor.” 30 day is “execute renewal documents.” Without staged alerts, renewals get rushed at the deadline.
Spend reporting
Sum contract value by department, by quarter, by vendor. Build all three as scheduled reports. CFO wants vendor spend by department; CIO wants by category; procurement wants by vendor.
Auto-renewing contracts inflate spend silently. Tag any auto-renew with auto_renew = true and report on the auto-renew dollar value annually. This is the number that surprises CFOs.
Termination workflow
Canceling a contract is more than marking it ended. The workflow needs to: revoke vendor portal access, return loaned assets, decommission integrations, archive credentials. Build a termination checklist as a parent-child ticket triggered by setting status to “Terminating.”
Document management
Attach the signed PDF to the contract record. Use the version field for amendments; do not overwrite. Most modules support multiple file attachments; use the description to label each (“Original,” “Amendment 1,” “Renewal 2024”).
For long contracts, also attach a one-page internal summary highlighting unusual terms (auto-renew, exclusivity, IP ownership, data residency). The summary is what people read; the full contract is for legal disputes.
Audit-ready exports
For SOC 2 and ISO audits, export all active contracts with vendor, value, owner, and end date as a single CSV. Schedule monthly. Auditors love consistent monthly snapshots; they hate ad-hoc pulls.
What to do this week
Run a query of contracts where end date is null or owner is null. Both should be zero. Fix the orphans, assign owners, set end dates. This single hour prevents the next renewal surprise.