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
Stage | Description |
---|---|
Stage 1: Leads | Get your lead/customer data into Enerflo to work and sign a deal. |
Stage 2: Enerflo Project Submission & Resubmission | When 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 Milestones | As project milestones are reached during installation, keep CRMs and Enerflo milestone synchronized. |
Stage 4: Updating Install Project Statuses | As the overall status of the install project changes, keep CRMs and Enerflo's project status synchronized. (Including Voided ) |
Stage 5: Updating Install Project Notes | Keep project notes synchronized between your CRM and Enerflo. |
Stage 6: Change Orders | Process changes to orders or agreements. |
Stage 1: Leads
1.1) 3rd-party >> Enerflo
Use case | Push lead & customer information from a 3rd-party into Enerflo |
Source of truth | 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 👀 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. |
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 3rd-party |
Source of truth | Enerflo |
Data destination | 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 3rd-party |
Source of truth | Enerflo |
Data destination | 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. 👀 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) |
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.
3.1) 3rd-party >> Enerflo
Use case | Update an Enerflo install project milestone based on data from a 3rd-party |
Source of truth | 3rd-party |
Data destination | Enerflo |
Data exchange tool | Enerflo REST API: PUT: /api/v3/installs/{id}/milestones/{milestoneId} |
Resources | Documentation for /api/v3/installs/{id}/milestones/{milestoneId} |
Trigger | Determined by the user or 3rd-party |
Possible design patterns | WHEN 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 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. |
3.2) Enerflo >> 3rd-party
Use case | Push updated milestone data from Enerflo to a 3rd-party when it changes in Enerflo. |
Source of truth | Enerflo |
Data destination | 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 case | Something happens outside of Enerflo and I want to update the status of the Enerflo Install Project. |
Source of truth | 3rd-party |
Data destination | Enerflo |
Data exchange tool | Enerflo REST API: PUT: /api/v3/installs/{id}/ |
Resources | Documentation for /api/v3/installs/{id} |
Trigger | Determined by the user or 3rd-party |
Possible design patterns | WHEN my Ops team completes the final milestone in our CRM , THEN set the Enerflo Install Project status to Completed |
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. |
4.2) Enerflo >> 3rd-party
Use case | Inform a 3rd-partyCRM when the Enerflo Install project is On Hold |
Source of truth | Enerflo |
Data destination | 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 case | A 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 | 3rd-party |
Data destination | Enerflo |
Data exchange tool | Enerflo REST API: POS: /api/v3/installs/{id}/notes} |
Resources | Documentation for api/v3/installs/{id}/notes |
Trigger | Determined by the user or 3rd-party |
Possible design patterns | WHEN my Ops team comments on the project in CRM , THEN replicate the note in the Enerflo Install tracker. |
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. |
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 3rd-partyCRM. |
Source of truth | Enerflo |
Data destination | 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 | 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. 👀 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 |
Updated 7 days ago