contract.created, contract.updated, contract.deleted, and contract.sundry. Use these events to trigger onboarding workflows when a contract is signed, enforce expiry policies when status changes, and keep external document management systems in sync. There is no contract.activity event — contracts have no comments, attachments, or logs.
The webhook envelope structure, delivery semantics, retry behaviour, and signature verification conventions are documented in Introduction and Verification. Those rules apply to every event on this page and are not repeated here.
The contract object
Every event key exceptcontract.deleted carries the full contract object. For contract.created it appears flat directly inside data; for contract.updated and contract.sundry it is nested under data.contract.
integer
The contract’s primary key (
doc_id).string
The contract title.
string
One of
draft, awaiting_signatures, active, or expired — the raw status value. There is no { title, color } wrapper object around this value.string
The monetary value of the contract, expressed as a decimal string.
object
{ id, name } — the client this contract belongs to.object
{ id, name } — the contract category.integer | null
Set when the contract is attached to a project; otherwise
null.object
start, end, and published are date-only strings (or null); created is an ISO 8601 timestamp with microseconds.object
client_status and provider_status — each holds the raw signature status string for that party.array of strings
Tag titles attached to the contract.
contract.created
Grow CRM fires contract.created immediately after a new contract is saved, including when a contract is cloned. data is the full contract object shown above.
contract.updated
Grow CRM fires contract.updated whenever a significant lifecycle change occurs on the contract. Inspect data.change to determine what changed; data.contract always carries the complete, up-to-date contract object.
There is no
edited change value for contracts. Grow CRM has no ContractUpdated event for general edits because contracts are modified through the builder interface, not a standard form.contract.sundry
Grow CRM fires contract.sundry for minor field edits that don’t warrant a full contract.updated signal. Inspect data.field to identify which field changed; data.contract carries the full contract object — it is not a partial diff.
contract.deleted
Grow CRM fires contract.deleted after the contract record is permanently removed. Because the record no longer exists, data contains only the contract’s id.
