Skip to main content

Webhook Events

Subscribe to these events to receive real-time notifications. All payloads are wrapped in the standard webhook format.

CRM Events

lead.created

Fired when a new lead is created.
{
  "event": "lead.created",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "payload": {
    "id": "ld_abc123",
    "name": "Jane Smith",
    "mobile": "+1234567890",
    "email": "[email protected]",
    "secondaryMobile": null,
    "title": "Product Demo Request",
    "value": 5000,
    "source": "Website",
    "createdAt": "2025-01-15T10:30:00.000Z",
    "website": null,
    "archived": false,
    "stage": "New",
    "stageId": 1,
    "customFields": {},
    "ownerId": 42,
    "ownerName": "John Doe"
  }
}

lead.updated

Fired when a lead is updated (any field change). Payload structure is the same as lead.created with the updated values.

lead.deleted

Fired when a lead is deleted. Payload contains the lead data as it was before deletion.

lead.stageChanged

Fired when a lead moves to a different stage. This event fires in addition to lead.updated. Payload structure is the same as lead.created with the new stage values.

deal.created

Fired when a new deal is created.
{
  "event": "deal.created",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "payload": {
    "id": "dl_def456",
    "title": "Enterprise License",
    "number": "DL-0001",
    "price": 25000,
    "status": "ACTIVE",
    "priority": "HIGH",
    "expectedCloseDate": "2025-03-15T00:00:00.000Z",
    "createdAt": "2025-01-15T10:30:00.000Z",
    "clientId": "cl_xyz789",
    "clientName": "Acme Inc.",
    "stage": "Proposal",
    "stageId": 11,
    "pipelineId": 1,
    "source": "Referral",
    "leadId": "ld_abc123",
    "leadName": "Jane Smith",
    "ownerId": 42,
    "ownerName": "John Doe",
    "customFields": {}
  }
}

deal.updated

Fired when a deal is updated. Payload structure is the same as deal.created.

deal.deleted

Fired when a deal is deleted. Payload contains the deal data before deletion.

deal.stageChanged

Fired when a deal moves to a different pipeline stage. Fires in addition to deal.updated.

client.created

Fired when a new client is created.
{
  "event": "client.created",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "payload": {
    "id": "cl_xyz789",
    "name": "Acme Inc.",
    "number": "CL-0001",
    "type": "company",
    "firstName": null,
    "lastName": null,
    "email": "[email protected]",
    "phone": "+1234567890",
    "createdAt": "2025-01-15T10:30:00.000Z"
  }
}

client.updated

Fired when a client is updated. Payload structure is the same as client.created.

client.deleted

Fired when a client is deleted. Payload contains the client data before deletion.

contact.created

Fired when a new contact is created.
{
  "event": "contact.created",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "payload": {
    "id": "ct_qrs567",
    "firstName": "Jane",
    "lastName": "Smith",
    "email": "[email protected]",
    "mobile": "+1234567890",
    "designation": "CTO",
    "clientId": "cl_xyz789",
    "createdAt": "2025-01-15T10:30:00.000Z"
  }
}

contact.updated

Fired when a contact is updated.

contact.deleted

Fired when a contact is deleted.

Sales Events

invoice.created

Fired when a new invoice is created.
{
  "event": "invoice.created",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "payload": {
    "id": "inv_ghi012",
    "number": "INV-0001",
    "clientId": "cl_xyz789",
    "clientName": "Acme Inc.",
    "status": "SENT",
    "total": 25000,
    "dueDate": "2025-02-15T00:00:00.000Z",
    "salesPersonId": 42,
    "createdAt": "2025-01-15T10:30:00.000Z"
  }
}

invoice.updated

Fired when an invoice is updated.

invoice.paid

Fired when an invoice is marked as paid.

invoice.deleted

Fired when an invoice is deleted.

quotation.created

Fired when a new quotation is created.
{
  "event": "quotation.created",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "payload": {
    "id": "qt_jkl345",
    "number": "QT-0001",
    "clientId": "cl_xyz789",
    "clientName": "Acme Inc.",
    "status": "DRAFT",
    "total": 25000,
    "dealId": "dl_def456",
    "createdAt": "2025-01-15T10:30:00.000Z"
  }
}

quotation.updated

Fired when a quotation is updated.

quotation.deleted

Fired when a quotation is deleted.

form.response.created

Fired when a new form response is submitted.
{
  "event": "form.response.created",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "payload": {
    "id": "rec_mno678",
    "formId": "frm_pqr901",
    "data": {
      "name": "Jane Smith",
      "email": "[email protected]",
      "message": "I'd like to learn more about your services."
    },
    "createdAt": "2025-01-15T10:30:00.000Z"
  }
}

Event summary

EventCategoryDescription
lead.createdCRMNew lead created
lead.updatedCRMLead fields updated
lead.deletedCRMLead deleted
lead.stageChangedCRMLead moved to a different stage
deal.createdCRMNew deal created
deal.updatedCRMDeal fields updated
deal.deletedCRMDeal deleted
deal.stageChangedCRMDeal moved to a different pipeline stage
client.createdCRMNew client created
client.updatedCRMClient fields updated
client.deletedCRMClient deleted
contact.createdCRMNew contact created
contact.updatedCRMContact fields updated
contact.deletedCRMContact deleted
invoice.createdSalesNew invoice created
invoice.updatedSalesInvoice fields updated
invoice.paidSalesInvoice marked as paid
invoice.deletedSalesInvoice deleted
quotation.createdSalesNew quotation created
quotation.updatedSalesQuotation fields updated
quotation.deletedSalesQuotation deleted
form.response.createdCRMNew form response submitted

Payload design

Webhook payloads follow industry standards:
  • IDs included for all related entities (e.g., clientId, ownerId, leadId)
  • Key scalar fields for immediate identification (e.g., clientName, ownerName)
  • No full nested objects — use the REST API to fetch complete details
  • Public IDs used for entities that support them (leads, clients, deals)
This approach keeps payloads lightweight while providing enough context for most use cases.