The package defines 21 event names across three wiring states
The current package defines 21 deal-event identifiers. Fourteen are registered in Mautic's webhook builder and subscribed by the outbound webhook subscriber. Four additional identifiers are subscriber-only, and three are defined but not wired by that subscriber. Use the literals exactly as shown below; the stage-change identifier is deal.stage_changed.
How this event reference was verified
The inventory was read from the event constants in the shipped package, then checked against the outbound webhook subscriber and its webhook-builder registration. The payload builder was checked separately to confirm that the resolved identifier is serialized under the event field.
Technical details verified 2026-09-14 against the shipped Deal Flow package, SHA-256 prefix 50c7c589d059.
All 21 Deal Flow event names
The builder column shows whether an administrator can select the event in Mautic's webhook builder. The wiring column reports what the verified outbound webhook subscriber does with that constant.
| Constant | Literal event name | In builder | Outbound wiring |
|---|---|---|---|
DEAL_CREATED | deal.created | Yes | Subscriber and builder |
DEAL_UPDATED | deal.updated | Yes | Subscriber and builder |
DEAL_STAGE_CHANGED | deal.stage_changed | Yes | Subscriber and builder |
DEAL_CLOSED_WON | deal.closed_won | Yes | Subscriber and builder |
DEAL_CLOSED_LOST | deal.closed_lost | Yes | Subscriber and builder |
DEAL_CONTACT_ATTACHED | deal.contact_attached | No | Subscriber only |
DEAL_COMPANY_CHANGED | deal.company_changed | No | Subscriber only |
DEAL_OWNER_ASSIGNED | deal.owner_assigned | No | Subscriber only |
DEAL_OWNER_REASSIGNED | deal.owner_reassigned | No | Subscriber only |
DEAL_NOTE_ADDED | deal.note_added | Yes | Subscriber and builder |
DEAL_NOTE_UPDATED | deal.note_updated | No | Not wired in this subscriber |
DEAL_NOTE_DELETED | deal.note_deleted | No | Not wired in this subscriber |
DEAL_TASK_ADDED | deal.task_added | Yes | Subscriber and builder |
DEAL_TASK_COMPLETED | deal.task_completed | Yes | Subscriber and builder |
DEAL_TASK_UNCOMPLETED | deal.task_uncompleted | No | Not wired in this subscriber |
DEAL_TASK_UPDATED | deal.task_updated | Yes | Subscriber and builder |
DEAL_TASK_DELETED | deal.task_deleted | Yes | Subscriber and builder |
DEAL_ATTACHMENT_ADDED | deal.attachment_added | Yes | Subscriber and builder |
DEAL_CONTACT_DETACHED | deal.contact_detached | Yes | Subscriber and builder |
DEAL_FIELD_UPDATED | deal.field_updated | Yes | Subscriber and builder |
DEAL_ATTACHMENT_DELETED | deal.attachment_deleted | Yes | Subscriber and builder |
Read builder availability and subscriber wiring separately
An event registered in the webhook builder is available as a selection when a Mautic administrator configures a webhook. Four constants are subscribed without being registered as builder choices: deal.contact_attached, deal.company_changed, deal.owner_assigned, and deal.owner_reassigned.
Three constants are defined but are not wired in the verified subscriber: deal.note_updated, deal.note_deleted, and deal.task_uncompleted. Their presence in the constants inventory does not make them builder choices or subscriber-queued events.
Implementation rule: match the literal event name in a received payload. Constant names are PHP identifiers; the dot-separated literals are the values carried through webhook wiring.
The event field carries the exact identifier
The verified payload builder serializes the resolved event name under the root event key. Route or filter on that value when processing a received webhook. A stage-change payload has this shape:
{
"event": "deal.stage_changed",
"occurred_at": "2026-09-14T15:30:00+00:00",
"origin": "ui",
"actor": {
"type": "user",
"id": 42
},
"deal": {
"id": 123,
"title": "Example renewal",
"status": "open",
"stage": "Proposal"
},
"company": {
"id": 18,
"name": "Example Company"
},
"contacts": [
{
"id": 77,
"label": "Economic buyer"
}
],
"previousStage": "Discovery",
"currentStage": "Proposal"
}
The common payload also carries occurred_at, origin, actor, deal, company, and contacts. Event-specific fields are added at the root; stage changes add previousStage and currentStage. Actor, company, stage, contact label, and contact email values can be null, so receivers should handle them accordingly.
Use the webhook documentation for broader inbound and outbound setup guidance.
Frequently asked questions
How many Deal Flow event names are defined?
The package defines 21 Deal Flow event names. Fourteen are registered in the Mautic webhook builder, four more are subscribed by the outbound webhook subscriber without builder registration, and three are not wired by that subscriber.
Which Deal Flow events appear in the webhook builder?
The 14 builder events are deal.created, deal.updated, deal.stage_changed, deal.closed_won, deal.closed_lost, deal.note_added, deal.task_added, deal.task_completed, deal.task_updated, deal.task_deleted, deal.attachment_added, deal.contact_detached, deal.field_updated, and deal.attachment_deleted.
What is the correct stage-change event name?
The shipped stage-change identifier is deal.stage_changed. Use that exact literal in the event field and when matching received webhook payloads.
Does every defined event produce an outbound webhook?
No. Four subscriber-only events can still be queued by the subscriber even though they are not builder choices. Three defined events—deal.note_updated, deal.note_deleted, and deal.task_uncompleted—are not wired in the verified subscriber.
Put deal events to work inside Mautic
Deal Flow adds deal records, pipeline stages, and webhook event wiring to the Mautic instance you already run.
See Deal Flow Pricing