Webhooks let Novala send a notification to your server whenever something happens in your account — a new inspection is completed, an invoice is paid, or a work order is created. Instead of polling the Novala API for changes, your system receives an HTTP POST request with event details immediately when the event fires.Documentation Index
Fetch the complete documentation index at: https://developers.novala.ai/llms.txt
Use this file to discover all available pages before exploring further.
Add a webhook endpoint
Navigate to Settings → Webhooks, then click Add Endpoint.Enter your endpoint URL
Provide the HTTPS URL where Novala should send events. The URL must be publicly accessible. During development, a tunneling tool like ngrok can expose a local server.
Add a description (optional)
Add a short label to help you identify this endpoint later (for example, “Acumatica sync” or “Slack alerts”).
Choose which events to receive
By default, Subscribe to all events is checked, which means your endpoint receives every event type Novala emits. Uncheck this to select specific event types from the list.
Event types
Events are grouped by module. The event type is included in every payload as thetype field.
Contacts
Contacts
| Event type | When it fires |
|---|---|
contacts.company.created | A new company is added |
contacts.contact.created | A new contact is added |
Inspections
Inspections
| Event type | When it fires |
|---|---|
calso.inspection.completed | An inspection is marked complete |
calso.report.generated | An inspection report is generated |
calso.finding.created | A new finding is recorded on an inspection |
Invoicing
Invoicing
| Event type | When it fires |
|---|---|
invoicing.invoice.paid | An invoice is marked as paid |
invoicing.invoice.overdue | An invoice passes its due date unpaid |
Leads
Leads
| Event type | When it fires |
|---|---|
leads.lead.created | A new lead is added |
leads.lead.converted | A lead is converted to a deal or contact |
Work orders
Work orders
| Event type | When it fires |
|---|---|
work-order.created | A new work order is created |
work-order.completed | A work order is marked complete |
Bookings
Bookings
| Event type | When it fires |
|---|---|
bookings.confirmed | A booking is confirmed |
bookings.cancelled | A booking is cancelled |
Workflows
Workflows
| Event type | When it fires |
|---|---|
workflows.execution.completed | A workflow finishes successfully |
workflows.execution.failed | A workflow encounters an error |
Payload format
Every Novala webhook delivery is an HTTPS POST with aContent-Type: application/json body. The top-level structure is the same for all event types:
| Field | Description |
|---|---|
id | Unique ID for this event |
type | The event type string |
tenantId | Your Novala organization ID |
timestamp | ISO 8601 timestamp when the event fired |
source | The module that emitted the event |
data | Event-specific payload — contents vary by event type |
Verify webhook signatures
Every delivery includes three headers you can use to verify that the request came from Novala and has not been tampered with:| Header | Description |
|---|---|
X-Novala-Signature | HMAC-SHA256 signature of the payload |
X-Novala-Timestamp | ISO 8601 timestamp of the delivery attempt |
X-Novala-Delivery-Id | Unique ID for this delivery attempt |
sha256=HMAC-SHA256(timestamp + "." + raw_body, endpoint_secret).
To verify a delivery:
Retry behavior
If your endpoint returns a non-2xx response or does not respond within 10 seconds, Novala retries the delivery automatically with exponential backoff:| Attempt | Delay after failure |
|---|---|
| 1st retry | 1 minute |
| 2nd retry | 5 minutes |
| 3rd retry | 25 minutes |
| 4th retry | 2 hours |
| 5th retry | 10 hours |
Monitor deliveries
Click the eye icon next to any endpoint to open its delivery log. Each entry shows the event type, status, HTTP response code, attempt number, timestamp, and any error message. From the delivery log, you can click Replay on any delivery to resend it to the endpoint immediately, regardless of its current status. Replaying follows the same signature and retry logic as original deliveries.Test an endpoint
Click the test tube icon next to any endpoint to send a test event. Novala delivers a sample payload and shows you the HTTP response code. Use this to confirm your endpoint is reachable and processing signatures correctly before you go live.Endpoint status
| Status | Meaning |
|---|---|
| Active | Receiving events normally |
| Failing | Recent deliveries have failed; Novala is retrying |
| Auto-disabled | Disabled after 10 consecutive failures; re-enable from the endpoint list after fixing your receiver |
| Inactive | Manually disabled |