Overview
Webhooks allow Enerflo to send real-time data to external platforms or services when specific events occur — such as a deal being created, a customer being updated, or an agreement being signed. This enables integrations with CRMs, automation tools, and other third-party systems without manual data transfers.
This article covers:
Accessing your webhooks
Adding new webhooks
Viewing and refiring webhooks
Editing existing webhooks
Filtering webhooks (controlling when they fire)
Testing webhook filter conditions
Note: For detailed event documentation including field definitions and payload examples, visit the Enerflo 1.0 Events and Enerflo 2.0 Events reference docs.
Accessing Webhooks
You can access webhooks from two locations depending on your organization type:
Sales Orgs: Go to Sales Company > Company Settings > Webhooks
EPCs / Installers: Go to EPC > Settings > Webhooks
Adding a New Webhook
Navigate to your Webhooks page (see above) and click + Add New.
Select the Event you'd like to trigger the webhook. Events are grouped by resource (for example, update_customer, new_agreement).
Once an event is selected, an Event Description will appear automatically.
Add a Name that describes what the webhook will do for your specific use case (for example, Push lead to CRM).
Add the URL where the webhook payload should be sent.
Optionally, add a Header Name and Header Value to pass parameters when the webhook fires. Note: dynamic headers are not currently supported.
Click Create Webhook.
Viewing and Refiring Webhooks
Click View next to the webhook you'd like to inspect.
Select a specific customer to preview the JSON payload that will be sent.
If the webhook relates to an agreement, you can select from the customer's available agreements and either Preview JSON Payload or Send JSON Payload to Webhook to refire it.
Editing Webhooks
While viewing a webhook, click Edit to modify any previously entered parameters such as the URL, name, or headers.
Webhook Filtering
Webhook filtering lets you control exactly when a webhook fires, so you only receive the events you care about. For example, the Deal Updated event fires every time any field on a deal changes — filtering lets you scope it to only fire when specific conditions are met, such as a deal moving to a certain stage or a specific field being updated.
Setting Up Filters
When creating or editing a webhook subscription, scroll to the Conditions section.
Add a rule by choosing the field, operator (equals, contains, does not equal, etc.), and value you want to match.
Click Save.
The webhook will now only fire when your conditions evaluate to true. If conditions aren't met, the event is logged as Filtered and not sent.
What Data Can You Filter On?
You can filter on any field available in the webhook payload for that event type. For the Deal Updated event, available fields include:
Deal properties: ID, short code, status, state, customer ID
Assignments: Sales rep, installer, disposition
Address fields: Street address, city, state, postal code
Change tracking:
previous.*— values before the updatecurrent.*— values after the updatechanges.*— only the fields that changed
Progress tracking: Fields added/modified/removed, files added/removed, stage changes
Metadata: Target org, who initiated the update
To see exactly what data is available for filtering, go to Settings > Webhooks > Jobs and inspect a recent webhook payload for the event type you're working with. You can also refer to the Enerflo v2 Event Definitions and Webhook Filtering documentation.
Example Filter Rules
The following examples use the Deal Updated event:
Only fire when a deal moves to the "generate-contract" stage:
Field:
changes.progress.stages.current.toOperator: equals
Value:
generate-contract
Only fire for deals in a specific state:
Field:
changes.properties.projectAddress.stateOperator: equals
Value:
CA
Only fire when the selectedProposal field is modified:
Field:
changes.progress.fields.modifiedOperator: contains
Value:
selectedProposal
Only fire when a deal has been assigned to a specific sales rep:
Field:
current.salesRep.idOperator: equals
Value: [sales rep user ID]
You can also combine multiple conditions using ALL (every condition must be true) or ANY (at least one condition must be true) group logic.
Testing Filter Conditions
Use the Condition Tester to verify your filter rules before relying on them:
Paste a webhook job ID from a real event (found under Settings > Webhooks > Jobs).
Click Test.
Review the result:
✓ Pass — Your conditions matched. This webhook would have been sent.
✗ Fail — Conditions didn't match. This webhook would have been filtered (not sent).
Error — There's a problem with your rule logic, or the job ID doesn't exist.
Note: All condition fields must be filled in before the Test button becomes active.
