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 case

Push lead & customer information from a <glossary:3rd-party> into Enerflo

Source of truth

<glossary:3rd-party>

Data destination

Enerflo

Data exchange tool

Enerflo REST API: POST: api/v1/partner/action/lead/add

Resources

Documentation for /api/v1/partner/action/lead/add

:eyes: noteable callout, :point_up: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.

Trigger

Determined by the user or 3rd-party

Possible design patterns

WHEN 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 tips

Ensure 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 case

Push lead & customer information from Enerflo to a <glossary:3rd-party>

Source of truth

Enerflo

Data destination

<glossary:3rd-party> (such as CRM)

Data exchange tool

Enerflo Event (such as v1 new_customer)

Resources

Definition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0

Trigger

Enerflo event *

*Requires an active Enerflo Webhook Event Subscription

Possible design patterns

WHEN a new_customer event occurs in Enerflo, THEN push the lead to my CRM.

Data handling tips

The 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 case

Push data from an Enerflo Install Project to a <glossary:3rd-party>

Source of truth

Enerflo

Data destination

<glossary:3rd-party> (such as CRM)

Data exchange tool

Enerflo Event

Resources

Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 2.0

Trigger

Enerflo 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 patterns

As 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 tips

The 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.

:eyes: 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.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.

3.1) 3rd-party >> Enerflo

Use caseUpdate an Enerflo install project milestone based on data from a <<glossary:3rd-party>>
Source of truth<<glossary:3rd-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 case

Push updated milestone data from Enerflo to a <glossary:3rd-party> when it changes in Enerflo.

Source of truth

Enerflo

Data destination

<glossary:3rd-party> (such as CRM)

Data exchange tool

Enerflo Event

Resources

Definition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0

Trigger

Enerflo 1.0 event: project_milestone_updated *

*Requires an active Enerflo Webhook Event Subscription

Possible design patterns

WHEN 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 tips

The 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 truth<<glossary:3rd-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 case

Inform a <glossary:3rd-party>CRM when the Enerflo Install project is On Hold

Source of truth

Enerflo

Data destination

<glossary:3rd-party> (such as CRM)

Data exchange tool

Enerflo Event ( v1 update_install)

Resources

Definition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0

Trigger

Enerflo event *

*Requires an active Enerflo Webhook Event Subscription

Possible design patterns

WHEN 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 tips

The 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 truth<<glossary:3rd-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 case

A note is created on an Enerflo Install Project and I want the same note to sync/push to my <glossary:3rd-party>CRM.

Source of truth

Enerflo

Data destination

<glossary:3rd-party> (such as CRM)

Data exchange tool

Enerflo Event ( v1 new_install_note)

Resources

Definition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0

Trigger

Enerflo event *

*Requires an active Enerflo Webhook Event Subscription

Possible design patterns

WHEN the new_install_note event occurs in Enerflo, THEN pass the note into my CRM.

Data handling tips

The 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 case

A Change Order is processed and signed in Enerflo and I need my CRM record to remain synchronized with the same data.

Source of truth

Enerflo

Data destination

<glossary:3rd-party> (such as CRM)

Data exchange tool

Enerflo Event ( v1 signed_change_order)

Resources

Definition of Enerflo 1.0 Events
Definition of Enerflo 2.0 Events
Create an Event Subscription in Enerflo 1.0 or Enerflo 2.0

Trigger

Enerflo event *

*Requires an active Enerflo Webhook Event Subscription

Possible design patterns

WHEN a change order is signed, THEN pass the data into my CRM.

Data handling tips

The 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.

:eyes: 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