How to Integrate Enerflo with my CRM

Overview

This guide is designed for Enerflo Partners building custom integrations with the Enerflo platform using Enerflo’s APIs and Webhook Events.

We’ll walk through common business use cases and best practices to help make the integration more approachable.

⚠️ Please note that CRM specific connectors and data structuring are outside the scope of this guide. We'll focus on the data exchanges and will leave the surrounding business logic to your team!

💡 If you’re interested in engaging Enerflo’s Professional Services team for a custom integration, please reach out to Enerflo Support or email [email protected] to schedule a free discovery conversation.


ℹ️ These common data exchanges may not be applicable for all use cases. We'll discuss each and you can choose what is useful for your specific objectives.

Glossary of Common Stages


StageDescription
Stage 1: LeadsGet your lead/customer data into Enerflo to work and sign a deal.
Stage 2: Enerflo Project Submission & ResubmissionWhen a contract is signed and a project is ready to proceed to installation, ship your Enerflo data to an external system.
Stage 3: Updating Install Project MilestonesAs project milestones are reached during installation, keep CRMs and Enerflo milestone synchronized.
Stage 4: Updating Install Project StatusesAs the overall status of the install project changes, keep CRMs and Enerflo's project status synchronized. (Including Voided)
Stage 5: Updating Install Project NotesKeep project notes synchronized between your CRM and Enerflo.
Stage 6: Change OrdersProcess changes to orders or agreements.


Stage 1: Leads

1.1) 3rd-party >> Enerflo

Use casePush lead & customer information from a 3rd-party into Enerflo
Source of truth3rd-party
Data destinationEnerflo
Data exchange toolEnerflo REST API: POST: api/v1/partner/action/lead/add
Resources Documentation for /api/v1/partner/action/lead/add

👀 noteable callout, ☝️this endpoint is multi-faceted and can also be used to create an appointment or to start a deal that's associated to the new lead you're creating.
TriggerDetermined by the user or 3rd-party
Possible design patternsWHEN a webform processes a new lead, THEN deliver the lead to Enerflo

WHEN the status of a lead in my CRM is changed to 'qualified', THEN deliver the lead to Enerflo and create a deal.
Data handling tipsEnsure all data is validated, formatted, and packaged according to Enerflo’s API requirements before sending it. This may involve using additional processing tools or middleware, such as Zapier, to handle, map, and format your data correctly.


1.2) Enerflo >> 3rd-party

Use casePush lead & customer information from Enerflo to a 3rd-party
Source of truthEnerflo
Data destination3rd-party (such as CRM)
Data exchange toolEnerflo Event (such as v1 new_customer)
ResourcesDefinition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0
TriggerEnerflo event *

*Requires an active Enerflo Webhook Event Subscription
Possible design patternsWHEN a new_customer event occurs in Enerflo, THEN push the lead to my CRM.
Data handling tipsThe data in the Enerflo event payload may require further processing to meet the formatting and packaging requirements of your intended destination. This may involve using additional processing tools or middleware, such as Zapier, to prepare or map your data accurately.

Stage 2: Enerflo Project Submission & Resubmission


Use casePush data from an Enerflo Install Project to a 3rd-party
Source of truthEnerflo
Data destination3rd-party (such as CRM)
Data exchange toolEnerflo Event
ResourcesDefinition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 2.0
TriggerEnerflo 2.0 event(s) *:
deal.projectReceived: For installer organizations, indicating a project has been received from an internal or external sales organization.

deal.projectSubmitted: For sales organizations, indicating a project has been submitted to an installer organization.

*Requires an active Enerflo Webhook Event Subscription

The projectSubmitted and projectRecevied events are triggered within the Enerflo UI when a deal satisfies all submission requirements and is submitted by the user (see figure 2.1.1 below).

If an install has been voided and is now being resigned, the Re-submit action (shown in Figure 2.1.2 below) will trigger both the projectSubmitted and projectReceived events.
Possible design patternsAs a Sales Org, WHEN we submit a project one of our Installers, THEN push the install to my CRM.

As an Installer, WHEN a Sales Org submits a project for me to fulfill, THEN push the install to my CRM and email my Ops Director.

WHEN a previously voided install has been resigned, THEN push the newest resigned information to my CRM.
Data handling tipsThe data in the Enerflo event payload may require further processing to meet the formatting and packaging requirements of your intended destination. This may involve using additional processing tools or middleware, such as Zapier, to prepare or map your data accurately.

👀 Enerflo’s project submission events provide a wealth of data in the event payload. However, in some cases you may need data that isn't present in the event payload itself. In cases like this we recommend hydrating the event data with supplementary API calls.

Here's an example that augments the event data with a complete Enerflo install object:

Step 1: Receive the projectSubmitted or projectReceived event.

Step 2: Extract the v2 deal ID from the event payload, located at payload.deal.id.

Step 3: Use the ID from Step 2 as the {id} parameter in a GET request to api/v3/installs/find/{id}. This will retrieve the full install object. (documentation link here)
figure 2.1.1

figure 2.1.1

figure 2.1.2

figure 2.1.2



Stage 3: Updating Install Project Milestones

A project milestone is a specific checkpoint in an install project that marks progress toward completion. A milestone is associated with key dates (such as a start date, due date, and a completion date). Multiple milestones can be active simultaneously, each tracking an essential step within the project timeline.

Example of an Install Project's milestones as depicted in the Enerflo UI.

Example of an Install Project's milestones as depicted in the Enerflo UI.


3.1) 3rd-party >> Enerflo

Use caseUpdate an Enerflo install project milestone based on data from a 3rd-party
Source of truth3rd-party
Data destinationEnerflo
Data exchange toolEnerflo REST API: PUT: /api/v3/installs/{id}/milestones/{milestoneId}
ResourcesDocumentation for /api/v3/installs/{id}/milestones/{milestoneId}
TriggerDetermined by the user or 3rd-party
Possible design patternsWHEN a rep updates my Monday.com project and sets a project's status to permitting complete, THEN update the Enerflo record and set the permitting project to completed using today's date.
Data handling tipsEnsure all data is validated, formatted, and packaged according to Enerflo’s API requirements before sending it. This may involve using additional processing tools or middleware, such as Zapier, to handle, map, and format your data correctly.

3.2) Enerflo >> 3rd-party

Use casePush updated milestone data from Enerflo to a 3rd-party when it changes in Enerflo.
Source of truthEnerflo
Data destination3rd-party (such as CRM)
Data exchange toolEnerflo Event
ResourcesDefinition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0
TriggerEnerflo 1.0 event: project_milestone_updated *

*Requires an active Enerflo Webhook Event Subscription
Possible design patternsWHEN a milestone is edited in Enerflo, THEN check to see if the milestone now has a completion date and if so, push that date into Salesforce.
Data handling tipsThe data in the Enerflo event payload may require further processing to meet the formatting and packaging requirements of your intended destination. This may involve using additional processing tools or middleware, such as Zapier, to prepare or map your data accurately.

Stage 4: Updating Install Project Statuses

4.1) 3rd-party >> Enerflo

Use caseSomething happens outside of Enerflo and I want to update the status of the Enerflo Install Project.
Source of truth3rd-party
Data destinationEnerflo
Data exchange toolEnerflo REST API: PUT: /api/v3/installs/{id}/
ResourcesDocumentation for /api/v3/installs/{id}
TriggerDetermined by the user or 3rd-party
Possible design patternsWHEN my Ops team completes the final milestone in our CRM , THEN set the Enerflo Install Project status to Completed
Data handling tipsEnsure all data is validated, formatted, and packaged according to Enerflo’s API requirements before sending it. This may involve using additional processing tools or middleware, such as Zapier, to handle, map, and format your data correctly.

4.2) Enerflo >> 3rd-party

Use caseInform a 3rd-partyCRM when the Enerflo Install project is On Hold
Source of truthEnerflo
Data destination3rd-party (such as CRM)
Data exchange toolEnerflo Event ( v1 update_install)
ResourcesDefinition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0
TriggerEnerflo event *

*Requires an active Enerflo Webhook Event Subscription
Possible design patternsWHEN the update_install event occurs in Enerflo, THEN inspect the event payload to see if the status_id value is 4(On Hold). and if true, update my CRM record.
Data handling tipsThe data in the Enerflo event payload may require further processing to meet the formatting and packaging requirements of your intended destination. This may involve using additional processing tools or middleware, such as Zapier, to prepare or map your data accurately.

Stage 5: Updating Install Project Notes

5.1) 3rd-party >> Enerflo

Use caseA note or comment is created in my CRM and I want the same note to push into Enerflo so the Sales Rep can see it.
Source of truth3rd-party
Data destinationEnerflo
Data exchange toolEnerflo REST API: POS: /api/v3/installs/{id}/notes}
ResourcesDocumentation for api/v3/installs/{id}/notes
TriggerDetermined by the user or 3rd-party
Possible design patternsWHEN my Ops team comments on the project in CRM , THEN replicate the note in the Enerflo Install tracker.
Data handling tipsEnsure all data is validated, formatted, and packaged according to Enerflo’s API requirements before sending it. This may involve using additional processing tools or middleware, such as Zapier, to handle, map, and format your data correctly.

5.1) Enerflo >> 3rd-party

Use caseA note is created on an Enerflo Install Project and I want the same note to sync/push to my 3rd-partyCRM.
Source of truthEnerflo
Data destination3rd-party (such as CRM)
Data exchange toolEnerflo Event ( v1 new_install_note)
ResourcesDefinition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0
TriggerEnerflo event *

*Requires an active Enerflo Webhook Event Subscription
Possible design patternsWHEN the new_install_note event occurs in Enerflo, THEN pass the note into my CRM.
Data handling tipsThe data in the Enerflo event payload may require further processing to meet the formatting and packaging requirements of your intended destination. This may involve using additional processing tools or middleware, such as Zapier, to prepare or map your data accurately.

Stage 6: Change Orders


Use caseA Change Order is processed and signed in Enerflo and I need my CRM record to remain synchronized with the same data.
Source of truthEnerflo
Data destination3rd-party (such as CRM)
Data exchange toolEnerflo Event ( v1 signed_change_order)
ResourcesDefinition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0
TriggerEnerflo event *

*Requires an active Enerflo Webhook Event Subscription
Possible design patternsWHEN a change order is signed, THEN pass the data into my CRM.
Data handling tipsThe data in the Enerflo event payload may require further processing to meet the formatting and packaging requirements of your intended destination. This may involve using additional processing tools or middleware, such as Zapier, to prepare or map your data accurately.

👀 When you process the event payload, be sure to extract relevant information about the change order, such as:
Updated panel type
Updated panel count
Updated battery configuration
Updated adders