Webhooks & Custom Integrations
Overview
Webhooks are the backbone of custom integrations in AutomateNexus CRM. They allow the CRM to send real-time HTTP notifications to external systems whenever specific events occur, such as a new contact being created, a deal changing stages, or a payment being received. Whether you are building a custom application, integrating with an in-house system, or connecting to a service that does not have a native AutomateNexus CRM integration, webhooks provide the flexibility to make it happen. This guide covers everything from creating and configuring webhooks to understanding payload formats, securing webhook deliveries, and building custom integrations with the AutomateNexus CRM API.
Prerequisites
Before setting up webhooks and custom integrations, ensure you have:
- An active AutomateNexus CRM account with Administrator role permissions.
- A receiving endpoint (server, serverless function, or automation platform) that can accept HTTP POST requests.
- Basic understanding of HTTP, JSON, and REST APIs.
- Your AutomateNexus CRM API key for making API calls back to the CRM (available under Settings → API → API Keys).
Navigating to Webhook Settings
- Log in to your AutomateNexus CRM dashboard.
- Click Settings in the left-hand sidebar.
- Select Integrations from the settings menu.
- Click the Webhooks tab at the top of the Integrations page.
Creating a Webhook
Step-by-Step Webhook Creation
- Navigate to Settings → Integrations → Webhooks.
- Click Create Webhook.
- Fill in the webhook configuration:
- Name: A descriptive name for the webhook (e.g., "New Contact to Internal CRM", "Deal Won to Slack").
- Endpoint URL: The URL where webhook payloads will be sent. This must be a publicly accessible HTTPS URL. Examples:
https://yourapp.com/webhooks/automatenexus,https://hooks.slack.com/services/..., or a serverless function URL. - HTTP Method: Usually POST (default and recommended). Some receiving systems may require PUT or PATCH.
- Content Type: Select application/json (default) or application/x-www-form-urlencoded.
- Select the Events that should trigger this webhook. You can select one or more events from the available categories.
- Optionally configure Advanced Settings (see sections below for signing secrets, custom headers, and retry policies).
- Toggle Active to on.
- Click Save Webhook.
Available Event Types
AutomateNexus CRM supports a comprehensive set of webhook events organized by category:
Contact Events
contact.created— Fired when a new contact is created.contact.updated— Fired when any field on a contact is modified.contact.deleted— Fired when a contact is deleted.contact.merged— Fired when two contact records are merged.contact.tag_added— Fired when a tag is added to a contact.contact.tag_removed— Fired when a tag is removed from a contact.
Deal Events
deal.created— Fired when a new deal is created.deal.updated— Fired when a deal is modified (value, title, custom fields).deal.stage_changed— Fired when a deal moves to a different pipeline stage. Includes both the previous and new stage in the payload.deal.won— Fired when a deal is marked as won.deal.lost— Fired when a deal is marked as lost.deal.deleted— Fired when a deal is deleted.
Task Events
task.created— Fired when a new task is created.task.updated— Fired when a task is modified.task.completed— Fired when a task is marked as completed.task.deleted— Fired when a task is deleted.
Form Events
form.submitted— Fired when a form is submitted. Includes all form field values.
Payment Events
payment.received— Fired when a payment is successfully processed.payment.failed— Fired when a payment attempt fails.payment.refunded— Fired when a payment is refunded.subscription.created— Fired when a new subscription is created.subscription.canceled— Fired when a subscription is canceled.
Appointment Events
appointment.booked— Fired when an appointment is booked through a booking page.appointment.rescheduled— Fired when an appointment is moved to a new date/time.appointment.canceled— Fired when an appointment is canceled.
Communication Events
email.sent— Fired when an email is sent from the CRM.email.opened— Fired when a tracked email is opened by the recipient.email.clicked— Fired when a tracked link in an email is clicked.email.bounced— Fired when an email bounces.sms.sent— Fired when an SMS is sent.sms.received— Fired when an inbound SMS is received.call.completed— Fired when a voice call ends.
Webhook Payload Format
All webhook payloads are sent as JSON with a consistent structure. Here is the general format:
{
"event": "contact.created",
"timestamp": "2026-03-21T14:30:00.000Z",
"webhook_id": "wh_abc123def456",
"account_id": "acc_789xyz",
"data": {
"id": "con_12345",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone": "+15551234567",
"company": "Acme Corp",
"created_at": "2026-03-21T14:30:00.000Z",
"custom_fields": {
"industry": "Technology",
"lead_source": "Website"
}
}
}Payload Fields Explained
- event: The event type string that triggered the webhook.
- timestamp: The ISO 8601 timestamp of when the event occurred in UTC.
- webhook_id: The unique identifier of the webhook configuration that sent this payload.
- account_id: Your AutomateNexus CRM account identifier.
- data: The full record data associated with the event. The structure varies based on the event type (contact, deal, task, etc.).
Event-Specific Payload Examples
For deal.stage_changed events, the payload includes additional fields:
{
"event": "deal.stage_changed",
"timestamp": "2026-03-21T15:00:00.000Z",
"data": {
"id": "deal_67890",
"title": "Enterprise License - Acme Corp",
"value": 50000,
"currency": "USD",
"previous_stage": "Proposal",
"new_stage": "Negotiation",
"pipeline": "Sales Pipeline",
"owner": {
"id": "user_111",
"name": "Sales Rep"
}
}
}Securing Webhooks
Webhook Signing Secret
To verify that webhook payloads are genuinely from AutomateNexus CRM and have not been tampered with, configure a signing secret:
- When creating or editing a webhook, expand the Security section.
- Click Generate Signing Secret or enter your own secret string.
- Copy the signing secret and store it securely in your receiving application.
- AutomateNexus CRM will include an
X-AutomateNexus-Signatureheader with each webhook delivery. This header contains an HMAC-SHA256 hash of the payload body, signed with your secret.
Verifying Webhook Signatures
In your receiving application, verify the signature by computing the HMAC-SHA256 hash of the raw request body using your signing secret, then comparing it with the value in the X-AutomateNexus-Signature header. If they match, the payload is authentic and untampered.
Custom Headers
Add custom HTTP headers to webhook requests for additional authentication or routing:
- In the webhook configuration, expand the Headers section.
- Click Add Header.
- Enter the header name and value (e.g.,
X-API-Key: your-custom-key). - You can add multiple custom headers.
- Custom headers are sent with every webhook delivery.
IP Whitelisting
For additional security, configure your receiving server to only accept webhook deliveries from AutomateNexus CRM IP addresses. The current list of IP addresses can be found under Settings → Integrations → Webhooks → IP Addresses.
Retry Policy and Error Handling
Automatic Retries
If a webhook delivery fails (HTTP status code outside the 2xx range or connection timeout), AutomateNexus CRM will automatically retry the delivery:
- Retry schedule: Retries occur at 1 minute, 5 minutes, 30 minutes, 2 hours, and 24 hours after the initial failure.
- Maximum retries: 5 retry attempts (configurable per webhook).
- Timeout: Each delivery attempt has a 30-second timeout. If your server does not respond within 30 seconds, the attempt is considered failed.
Configuring Retry Behavior
- In the webhook configuration, expand the Retry Policy section.
- Adjust the following settings:
- Maximum retries: Set between 0 (no retries) and 10.
- Retry intervals: Customize the delay between retries.
- Timeout: Set the request timeout (5-60 seconds).
- Disable on failure: Optionally auto-disable the webhook after a specified number of consecutive failures (e.g., 50 consecutive failures).
- Click Save.
Monitoring Webhook Deliveries
- Navigate to Settings → Integrations → Webhooks.
- Click on a webhook name to view its details.
- The Delivery Log tab shows recent deliveries with:
- Timestamp of each delivery attempt.
- HTTP response status code from the receiving server.
- Response body (first 1000 characters).
- Delivery duration in milliseconds.
- Retry count for failed deliveries.
- Use the delivery log to debug failed webhook deliveries and identify issues with your receiving endpoint.
Custom Integrations with the API
AutomateNexus CRM REST API
For building bidirectional custom integrations, use the AutomateNexus CRM REST API alongside webhooks. While webhooks push data out of the CRM in real time, the API allows you to pull data and push changes back into the CRM.
API Authentication
All API requests require authentication via the Authorization header:
Authorization: Bearer YOUR_API_KEYCommon API Endpoints
- GET /api/v1/contacts — List contacts with pagination and filters.
- POST /api/v1/contacts — Create a new contact.
- GET /api/v1/contacts/{id} — Retrieve a specific contact.
- PUT /api/v1/contacts/{id} — Update a contact.
- DELETE /api/v1/contacts/{id} — Delete a contact.
- GET /api/v1/deals — List deals with pipeline and stage filters.
- POST /api/v1/deals — Create a new deal.
- PUT /api/v1/deals/{id} — Update a deal.
- GET /api/v1/tasks — List tasks.
- POST /api/v1/tasks — Create a task.
- GET /api/v1/activities/{contact_id} — Get activity timeline for a contact.
API Rate Limits
- Standard plan: 100 requests per minute per API key.
- Professional plan: 300 requests per minute per API key.
- Enterprise plan: 1,000 requests per minute per API key.
- Rate limit headers are included in every API response:
X-RateLimit-Limit,X-RateLimit-Remaining, andX-RateLimit-Reset.
Building a Custom Integration
A typical custom integration pattern combines webhooks and API calls:
- Set up a webhook in AutomateNexus CRM to receive events when specific CRM actions occur.
- Process the webhook payload in your application. Extract the relevant data from the JSON payload.
- Perform your custom logic. This could be updating an external system, running calculations, sending notifications, or triggering other processes.
- Call the API to update AutomateNexus CRM if needed. For example, after processing a webhook for a new contact, you might enrich the contact with additional data from an external source and update the contact record via the API.
Testing Webhooks
Using the Built-in Test Feature
- Navigate to Settings → Integrations → Webhooks.
- Click on the webhook you want to test.
- Click the Send Test button.
- Select the event type to simulate.
- AutomateNexus CRM will send a sample payload to your endpoint with test data.
- Check the delivery log to verify the test was received successfully (HTTP 200 response).
Testing with Request Inspection Tools
If you do not have a receiving server ready, use request inspection tools to test webhook payloads:
- webhook.site: Provides a temporary URL that captures and displays incoming webhook requests. Copy the URL and use it as your webhook endpoint for testing.
- RequestBin: Similar to webhook.site, provides a temporary endpoint for inspecting payloads.
- ngrok: Creates a secure tunnel to your local development server, allowing AutomateNexus CRM to send webhooks to your local machine during development.
End-to-End Testing
- Create a test webhook pointing to your receiving endpoint.
- Select all event types you plan to use.
- Perform the corresponding actions in AutomateNexus CRM (create a contact, update a deal, submit a form, etc.).
- Verify each event is delivered to your endpoint with the correct payload.
- Test error handling by temporarily making your endpoint return a 500 error, then verify retries occur as expected.
- Test signature verification by comparing the computed HMAC against the
X-AutomateNexus-Signatureheader.
Troubleshooting
Webhook Not Firing
- Verify the webhook is set to Active.
- Check that the correct events are selected for the webhook.
- Confirm the action you performed in the CRM matches one of the selected event types.
- Review the delivery log for any error messages.
Receiving 4xx Errors
- 400 Bad Request: Your receiving server is rejecting the payload format. Ensure it accepts JSON POST requests.
- 401 Unauthorized: Your receiving server requires authentication. Add the required credentials as custom headers in the webhook configuration.
- 403 Forbidden: Your server is blocking the request. Check IP whitelisting, firewall rules, or CORS settings.
- 404 Not Found: The endpoint URL is incorrect. Verify the URL path is correct and the server is running.
Receiving 5xx Errors
- Your receiving server is experiencing an internal error. Check the server logs for error details.
- Ensure your server can handle the payload size and processing time within the 30-second timeout.
- AutomateNexus CRM will automatically retry failed deliveries according to the retry policy.
Payloads Not Matching Expected Format
- Verify the Content-Type is set to
application/jsonin the webhook configuration. - Check the event type to ensure you are receiving the correct event (e.g.,
contact.createdvs.contact.updated). - Review the webhook documentation for the specific payload structure of each event type.
Signature Verification Failing
- Ensure you are using the raw request body (not parsed JSON) when computing the HMAC.
- Verify the signing secret matches exactly between AutomateNexus CRM and your application.
- Check that you are using HMAC-SHA256 as the hashing algorithm.
- Ensure there are no character encoding issues with the signing secret.
Too Many Webhook Events
- If you are receiving more events than expected, narrow down the selected events to only those you need.
- Use event filters to limit webhooks to specific conditions (e.g., only contacts with a specific tag, only deals in a specific pipeline).
- Consider batching webhook processing in your application to handle high-volume events efficiently.
Related Articles
- Automation Platform Connections — Use webhooks with Zapier, Make, n8n, and other automation platforms.
- Payment Processor Setup — Configure payment webhooks for Stripe and PayPal.
- MCP Integration Guide — Use MCP as an alternative to webhooks for AI-powered integrations.
- Communication Integrations — Set up Twilio webhooks for inbound SMS and voice.