🔹 1. Introduction #
The Perfex CRM Webhooks Module enables real-time communication between Perfex CRM and third-party apps. Whenever an event (like lead creation, invoice payment, or project update) happens inside Perfex, the module can send structured data to another application.
Examples:
- Send new leads to Google Sheets.
- Notify your Slack channel when a support ticket is created.
- Sync invoices with Xero or QuickBooks.
- Trigger automated marketing workflows via Zapier or Make (Integromat).
🔹 2. Installation Guide #
Step 1 – Download the Module Perfex CRM Webhooks #
After purchase, download the Webhooks Module ZIP file from your Systematica account.
Step 2 – Upload to Perfex CRM #
- Login to Perfex CRM as Admin.
- Go to Setup → Modules.
- Click Upload Module and select the ZIP file.
- Click Install.
Step 3 – Activate #
- Once installed, navigate to Setup → Modules.
- Locate Systematica Webhooks.
- Click Activate.

✔️ The module is now ready for use.
🔹 3. Creating Your First Webhook #
Step 1 – Access Webhooks #
- Go to Setup → Webhooks (Systematica).
- Click Add New Webhook.
Step 2 – Configure Webhook Settings #
Fill in the following details:
- Webhook Name → Friendly name for your webhook (e.g., “Send Leads to Google Sheets”).
- Module / Event → Select the Perfex CRM event (Lead Created, Invoice Paid, Task Updated, etc.).
- Request Method → Choose GET, POST, PUT, PATCH, or DELETE.
- Request URL → Destination URL (e.g., Zapier Webhook URL).
- Request Headers → Add authentication tokens, Content-Type, or custom headers.
- Payload (Body) → Use dynamic variables to send CRM data (e.g., {lead_name}, {invoice_amount}).
Step 3 – Test the Webhook #
- Click Test Webhook → Sends sample data to the target URL.
- Verify in your external app that the data was received.
🔹 4. Supported Functions & Events #
Supported Functions #
- Leads
- Customers (Add/Edit/Delete)
- Invoices (Recurring included)
- Tasks & Projects
- Estimates & Proposals
- Support Tickets
- Payments
- Contracts & Calendar Events
- Expenses (Recurring included)
- Staff Activities & Custom Fields
Supported Events #
- Create (new records)
- Update (changes in existing records)
- Delete (record deletion)
- Special Actions → Proposal Accepted/Declined, Invoice Sent, Lead Converted
Supported Methods #
The following methods are included in every webhook creation:
- GET
- POST
- PUT
- PATCH
- DELETE
- Status Change (for Leads)
Supported Request Headers #
The following Request Headers are supported:
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Accept-Datetime
- Authorization
- Cache-Control
- Connection
- Cookie
- Content-Length
- Content-Type
- Date
- Expect
- Forwarded
- From
- Host
- If-Match
- If-Modified-Since
- If-None-Match
- If-Range
- If-Unmodified-Since
- Max-Forwards
- Origin
- Pragma
- Proxy-Authorization
- Range
- Referer
- TE
- User-Agent
- Upgrade
- Via
- Warning
- Every custom header is supported
🔹 5. Example Integrations #
Zapier Example (Send Leads to Google Sheets) #
- In Webhook settings, choose Leads → Create.
- Method: POST.
- URL: Paste Zapier Webhook Catch URL.
- Payload:
{ "name": "{lead_name}", "email": "{lead_email}", "phone": "{lead_phone}" }
- Save and test.
- In Zapier, connect to Google Sheets and log new leads.
Slack Example (Ticket Notification) #
- Choose Tickets → Create event.
- Method: POST.
- URL: Your Slack Incoming Webhook URL.
- Payload:
{ "text": "New Ticket Created by {customer_name}: {ticket_subject}" }
Xero Example (Sync Invoices) #
- Event: Invoice → Create.
- Method: POST.
- URL: Your Xero API endpoint.
- Include authentication headers (OAuth2 token).
🔹 6. Advanced Options #
- Delayed Execution → Trigger webhook after a delay (via CRON job).
- Custom Headers → Add tokens, session cookies, or API keys.
- Error Handling → Failed requests are logged in Webhook Logs.
🔹 7. Troubleshooting #
Issue | Cause | Solution |
---|---|---|
Webhook not firing | Event not supported or not enabled | Check supported events list |
Wrong data in payload | Incorrect placeholder | Verify dynamic variables |
Request rejected | Missing headers/authentication | Add proper API key or bearer token |
Delayed execution | CRON not configured | Setup CRON job in hosting panel |
🔹 8. Security Notes #
- Always use HTTPS URLs for security.
- Use Authorization headers (Bearer tokens, API keys) when integrating with third-party services.
- Restrict access to webhook endpoints with authentication.
What does “Perfex CRM webhooks” mean? #
Can I trigger multiple webhooks per event? #
Yes — you can set as many webhooks as needed for the same event.
Is a REST API better than webhooks? #
No. REST API is pull-based and slower. Webhooks are push-based and instant — ideal for automation.
Are recurring events supported? #
Yes. Both recurring invoices and expenses trigger webhooks accordingly.
Is the module updated with new Perfex versions? #
Yes. Lifetime updates are included for all module users.
What if a webhook fails? #
Errors are logged. Review the Webhook Logs to diagnose issues like missing headers or bad endpoints.
Perfex CRM Webhooks Cron (optional but recommended)
For scheduled Perfex CRM Webhooks and queued execution, set up a cron that triggers Perfex’s cron controller. On most installs:
“`bash
*/5 * * * * php /path/to/perfex/index.php cron/index > /dev/null 2>&1
“`
Then enable “Webhooks Cron Job Queue” under Settings → Other → Webhooks.
Permissions
– Staff must have permission to “view” Webhooks to access the module.
– Access to Perfex CRM Webhooks Logs can be limited by staff permissions as configured in Perfex.
Navigation
– Main menu: Webhooks (icon: plug)
– Submenus:
– Webhooks: Manage and create webhooks
– Log: View historical deliveries and responses
– Settings: Access to the cron/queue settings
Creating a Perfex CRM Webhooks
Go to Webhooks → “New Webhook”. Fill the following:
– Name: Human-friendly description
– Request URL: Destination endpoint (must be a valid URL)
– Request Method: GET, POST, PUT, PATCH, DELETE
– Request Format: JSON or FORM
– Webhook For: Entity type (e.g., leads, client, invoice, tasks, projects, proposals, ticket, contract, estimate, expenses, event)
– Webhook Action: One or more actions (e.g., add, edit, delete, status_change, accept, decline, sent, recurring_create, recurring_create for expenses, etc.)
– Headers: Add custom or predefined headers (e.g., `Authorization: Bearer <token>`, `Content-Type` is auto-managed based on format)
– Body: Define fields as key/value pairs. Values support merge fields and mentions.
– Debug Mode: If enabled, requests and responses are captured in detail.
– Trigger After (optional): Delay execution by minutes/hours/days using the queue.
Supported Events (high level) For Perfex CRM Webhooks
– Client/Contact: add, edit, delete
– Leads: add, status_change, delete
– Invoices: add, edit, delete, recurring_create
– Tasks: add, edit
– Projects: add, edit, delete
– Proposals: add, edit, delete, accept, decline, sent
– Tickets: add, edit, status_change, delete
– Payments: add, edit, delete
– Contracts: add, edit, delete
– Estimates: add, edit, delete
– Calendar Event: edit
– Expenses: add, edit, recurring_create
Note: Actual payload contents depend on Perfex models. See examples below.
Request Headers Perfex CRM Webhooks
You can add any of the following common headers:
– Authorization, Proxy-Authorization
– Accept, Content-Type (auto set based on format)
– Custom headers via “custom” option
Example Authorization header:
“`
Authorization: Bearer YOUR_API_TOKEN
“`
Request Body and Merge Fields
– When “JSON” is selected, the body is sent as JSON.
– When “FORM” is selected, data is sent as `application/x-www-form-urlencoded`.
– Values support Perfex merge fields and mentionable tokens (e.g., `@staff_firstname`).
– For contacts and clients, custom fields are exposed as merge fields as available.
Example JSON payload (Lead created):
“`json
{
“event”: “lead.add”,
“lead_id”: 123,
“name”: “{{lead_name}}”,
“status”: “{{lead_status}}”,
“source”: “{{lead_source}}”,
“owner”: “{{staff_fullname}}”,
“created_at”: “{{date_created}}”
}
“`
Example FORM payload (Invoice updated):
“`
event=invoice.edit&invoice_id={{invoice_id}}&total={{invoice_total}}&status={{invoice_status}}
“`
Perfex CRM Webhooks Conditions and Filtering
– To include only selected fields, choose “Select Fields” in body configuration.
– You can selectively add headers or body keys per webhook.
– For leads, invoices, projects, etc., you can create separate webhooks scoped to specific actions.
Scheduling and Delays
– Use “Trigger After” to delay execution:
– Number + Select: Minute(s), Hour(s), Day(s)
– Requires cron to be configured and “Webhooks Cron Job Queue” enabled.
Perfex CRM Webhooks Debugging and Logs
– Enable “Run in Debug Mode” on a webhook to capture request payloads and responses.
– View logs in Webhooks → Log. Each log shows:
– Request URL, method, headers, body
– Response code and response body
– Recorded at timestamp
– Use “Clear Log” if needed.
Perfex CRM Webhooks Security Recommendations
– Always use HTTPS endpoints for webhooks.
– Use secret tokens or HMAC signatures when supported by the receiver.
– Restrict webhook URLs to trusted services.
Real-World Scenarios For Perfex CRM Webhooks
1) Notify Slack when a new Lead is created
– Webhook For: `leads`
– Action: `add`
– URL: Slack Incoming Webhook URL
– Method: POST
– Format: JSON
– Body example:
“`json
{
“text”: “New lead: {{lead_name}} (Status: {{lead_status}})”
}
“`
2) Sync Invoice updates to an external accounting system
– Webhook For: `invoice`
– Action: `edit`
– URL: `https://api.example.com/accounting/invoices/update`
– Method: POST
– Format: JSON
– Headers: `Authorization: Bearer <token>`
– Body example:
“`json
{
“invoice_id”: “{{invoice_id}}”,
“client”: “{{client_company}}”,
“total”: “{{invoice_total}}”,
“status”: “{{invoice_status}}”
}
“`
3) Payment received → Fulfillment system
– Webhook For: `invoice_payments`
– Action: `add`
– URL: `https://fulfillment.example.com/payment/received`
– Method: POST
– Format: JSON
– Body example:
“`json
{
“invoice_id”: “{{invoice_id}}”,
“payment_id”: “{{payment_id}}”,
“amount”: “{{payment_amount}}”,
“paid_at”: “{{payment_date}}”
}
“`
4) Project created → Create board in project management tool
– Webhook For: `projects`
– Action: `add`
– URL: `https://pm.example.com/api/boards`
– Method: POST
– Format: JSON
“`json
{
“name”: “{{project_name}}”,
“client”: “{{client_company}}”,
“owner”: “{{staff_fullname}}”
}
“`
5) Ticket status change → Discord notification
– Webhook For: `ticket`
– Action: `status_change`
– URL: Discord Webhook URL
– Method: POST
– Format: JSON
“`json
{
“content”: “Ticket #{{ticket_id}} status changed to {{ticket_status}}”
}
“`
6) Scheduled lead follow-up (delay)
– Webhook For: `leads`
– Action: `add`
– Trigger After: `2 Day(s)`
– URL: `https://crm-automation.example.com/follow-up`
– Method: POST
“`json
{
“lead_id”: “{{lead_id}}”,
“next_action”: “follow_up”
}
“`
7) WhatsApp notification for new contact
– Webhook For: `client` (contact)
– Action: `add`
– URL: Your WhatsApp API provider endpoint
– Method: POST
“`json
{
“to”: “{{contact_phonenumber}}”,
“message”: “Welcome {{contact_firstname}}!”
}
“`
Perfex CRM Webhooks Troubleshooting
– Webhook not firing:
– Confirm the module is active and staff has permission.
– Check that the selected entity/action combination is supported.
– Review logs when Debug Mode is enabled.
– Scheduled webhook not running:
– Verify cron is configured and “Webhooks Cron Job Queue” is enabled.
– Check server time and cron frequency.
Perfex CRM Webhooks Changelog
– 1.0.0
– Initial release by Tech9Pros
– Core events coverage, logging, scheduling support
Finally Transform Perfex CRM Mobile Powerful, Stress-Free Mobile App Check it Out
Support & Help #
Perfex CRM Webhooks Purchase includes 6 months of premium support from Tech9Pros. You’ll get personalized help with installation, API setup, and automation workflows.
- Support Email: support@tech9pros.com
- Live Chat: Available via Tech9Pros.com
- Documentation: Step-by-step guide included in the module files
Need customization? Contact us for tailored Perfex CRM Webhooks solutions.