Starting a Contract
Part of the MountDev Ops Contracts documentation. Updated October 8, 2026
MountDev Ops Contracts documentation | Updated October 8, 2026
Our Commitment
MountDev Ops is built security first. Your business data belongs to you, and you can export all of it at any time. We never use analytics or tracking of any kind inside MountDev Ops.
From the Overview Page
On the Contracts Overview page, select Start a Contract, then:
- Choose a template, or choose No template and write the wording.
- Choose the CRM company and contact it is for. The contact becomes the first signer.
- Fill in the template's fields, and the start and end dates. Leave the end date empty to use the template's term, or for no end date.
- Check the signers. There is one for each of the template's signer roles; add or remove signers as you need.
- Tick Send for signature now to send it straight away, or leave it as a draft to look over first.
The contract gets the next number (C-1, C-2, and so on; the start can be changed in Contracts Settings).
The Action Other Apps Use
Action contracts.start starts a contract. People use it from the Start a Contract window, and other apps use it to start their own contracts. It takes:
- template (the template record) or body (the wording), and an optional title.
- company, contact, and deal: CRM records. A contact without a company uses the contact's company.
- values: the template's fields, by name, such as
{ "Fee": "$249" }. - signers: in order, each
{ name, email, title, role }. Without signers, the contact signs. - start_date, end_date, renewal_date (like 2026-11-01), renewal, term_months, and reminder_days.
- source: where it was started from, such as the proposal it came from. It shows on the contract and in its audit trail.
- send: true to send it for signature straight away.
It returns the contract's id, number, and status, the fields still to fill, and the signers.
From inside another app's own work (such as a client accepting something on a public page), the app calls the same thing directly: startContract( ctx, input ) from src/apps/contracts/engine.js, with the same input. The person in ctx needs permission contracts.work, or it runs as the system for work no person started.
AI agents cannot start contracts, because sending emails the signers.
From Proposals
When the Proposals app is added too, an accepted proposal starts its contract here:
- In Contracts Settings, choose the Template for accepted proposals.
- When a client accepts a proposal, a draft contract starts from that template. It is for the proposal's company, contact, and deal, the person who accepted it is the first signer, and Started from names the proposal (like
Proposal P-1001: Website Care). - The template's fields Proposal, Proposal Title, One-Time Total, Monthly Total, Accepted By, and Accepted On are filled in from the proposal, so a template can name them like
{{Monthly Total}}. - What happens next is your choice, in Contracts Settings, When a proposal is accepted:
- Create a draft for us to review (the starting setting): the contract stays a draft, and nothing is emailed until a person looks it over and selects Send for Signature.
- Send it for signature right away: the contract goes to the person who accepted the proposal, exactly as if someone selected Send for Signature: the same email and the same audit trail. Its audit trail says it was sent automatically by this setting, with who turned the setting on and when. If it cannot go (for example, no From address is set, or a field in the template is left to fill), it stays a draft and its audit trail says why.
A proposal that already has a contract that is not voided gets that same contract back, never a second one. When no template is chosen, or the chosen one is retired, the acceptance still goes through, and the proposal's history shows why no contract started. A person can then start it from the proposal with Start Contract (action proposals.contract.start) once a template is chosen.
From an Automation
Your own automations can send contracts too (Automations). Add the step Send a contract for signature and choose a template. For example: when a deal's stage changes to Won, send the service agreement.
- Start the automation from a deal or a contact. From a deal, the contract is for the deal's company and contact; from a contact, for that contact. The contact signs.
- It is sent exactly as if someone selected Send for Signature, and its audit trail says it was sent automatically by that automation.
- The same automation never sends a second contract for the same deal or contact, unless the first one was voided.
- If it cannot be sent, the automation's run fails, nothing it did is kept, and Runs shows why.
Only owners and admins write and turn on automations. An AI agent can draft one, but it is saved turned off, and only a person turns it on, so a contract is never sent by an AI agent's own decision.
