Skip to main content
Grow CRM fires four distinct event keys for proposal records: proposal.created, proposal.updated, proposal.deleted, and proposal.sundry. Use these events to trigger contract workflows on acceptance, notify sales teams when a proposal is signed, and keep external document management systems in sync. There is no proposal.activity event — proposals 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 proposal object

Every event key except proposal.deleted carries the full proposal object. For proposal.created it appears flat directly inside data; for proposal.updated and proposal.sundry it is nested under data.proposal.
integer
The proposal’s primary key (doc_id).
string
The proposal title.
string
One of draft, new, accepted, declined, revised, or expired — the raw status value. There is no { title, color } wrapper object around this value.
object
{ id, name } — both fields are null when the proposal belongs to a lead rather than a client (see lead_id).
integer | null
Set when the proposal belongs to a lead rather than a client. A proposal belongs to either a client or a lead — never both simultaneously.
object
{ id, name } — the proposal category.
integer | null
Set when the proposal 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
date, first_name, last_name — all null until the proposal is signed.
array of strings
Tag titles attached to the proposal.

proposal.created

Grow CRM fires proposal.created immediately after a new proposal is saved, including when a proposal is cloned. data is the full proposal object shown above.

proposal.updated

Grow CRM fires proposal.updated whenever a significant lifecycle change occurs on the proposal. Inspect data.change to determine what changed; data.proposal always carries the complete, up-to-date proposal object.
There is no edited change value for proposals. Grow CRM has no ProposalUpdated event for general edits because proposals are modified through the builder interface, not a standard form.

proposal.sundry

Grow CRM fires proposal.sundry for minor field edits that don’t warrant a full proposal.updated signal. Inspect data.field to identify which field changed; data.proposal carries the full proposal object — it is not a partial diff.

proposal.deleted

Grow CRM fires proposal.deleted after the proposal record is permanently removed. Because the record no longer exists, data contains only the proposal’s id.