Usage Instructions

Before You Start

This guide is intended to walk you through common use cases and configurations for Hover’s Salesforce integration. If you have not followed the installation instructions for the integration and tested the initial connection, please refer to our installation guide.

This integration requires a special installation link and password. If you're interested in using Hover's Salesforce integration, please fill out this form and the install link and password will be sent to you.

Custom Objects and Flow Overview

This integration includes three primary custom objects that are added to your Salesforce Instance. Additionally, the integration includes a Salesforce flow to evaluate webhook events and process data coming from HOVER. This section will dive into these concepts in more detail.

HOVER Webhooks Config Object (HOVER_Webhook_Config__c)

This object is used to make the webhooks connection between HOVER and Salesforce and should only be utilized during the setup process. This object takes your digital experiences site (set up in the installation process) and registers a webhook in HOVER. As a part of the registration process, this object also listens for the initial webhook event from HOVER, takes the verification code, and verifies the hook so that the integration can start receiving webhook events.

Field NameDescriptionNotes
HOVER Webhook Config NameThe name of your webhook
URLYour webhooks URLBase URL should be the same as your digital experiences site
Content TypeContent Type of webhookUsed to create the hook in HOVER. Should always be json
HOVER Webhook IDThe ID of the webhook within HOVER
Verification CodeCode used to verify the hook within HOVERThis will auto populate upon creation.

HOVER Webhooks Object (HOVER_Webhook__c)

This object represents the raw webhook event data coming from HOVER. In practicality, HOVER sends all webhook data that is evaluated (by a Salesforce Flow) and encapsulated within this object. This object captures all webhook events coming from HOVER – a list of possible webhook events can be found within the HOVER developer documentation.

Field NameDescriptionNotes
HOVER Job NameThe name of the job in HOVERWill always be webhook
Content AvailableStatic booleanWill always be 1 (true)
EventThe event type of the hook.Possible event types can be found here
HOVER JobThe name of the Job in HOVER
Job Estimated Hours to CompletionEstimated hours that the job will be processed in HOVER
Job External IdentifierExternal ID of the Job as seen in HOVER.Typically reserved for ID of associated object in Salesforce (e.g. a lead, a claim, an opportunity, etc.)
Job IDThe ID of the job in HOVER
RequestJSON representation of the full webhook event
StateThe state of the given event in HOVER. The state values depend on the event typeThe state values depend on the event type
Webhook IDThe ID of the webhook within HOVER

HOVER Job Object (HOVER_Job__c)

The HOVER Job object encapsulates all data associated with a job or capture request in HOVER. Upon creation of a HOVER Job/Capture Request object in Salesforce, a “shell job” or a property that awaits photo capture. When the property is captured in HOVER, automation occurs that will pull in and populate the measurement fields based on HOVER’s summarized measurements (for complete and roof-only deliverables). Additionally, the measurements PDF and the measurements JSON file are written to the Notes & Attachments fields within the specific job object.

The following table is all of the possible fields when creating a HOVER Job:
Note: There are numerous more custom objects on the HOVER job fields associated with measurement data that are not listed in this table.

Field NameSalesforce Field NameDescriptionNotes
HOVER Webhook NameNameThe name of the HOVER Job
HOVER Job IDHOVER_Job_ID__cThe ID of the job in HOVER
Location Line 1Location_Line_1__cThe first/main line of a property addressRequired for job/capture request creation
Location Line 2Location_Line_2__cThe second line of a property address
Citylocation_city__cThe city where the property resides
State (Region)location_region__cThe state where the property resides in
Postal Codelocation_postal_code__cThe zip code where the property resides in
Countrylocation_country__cThe country where the property resides in
StateState__cThe state of the property within HOVER’s reconstruction pipeline
AssigneeAssignee__cThe user who the job is being created byThis is a picklist to select a Salesforce user. The user in Salesforce also needs to have the exact email address associated with an Admin user in HOVER.
Suborg AssigneeSuborg_Assignee__cAn user on a HOVER suborg to assign the jobOnly relevant if using a suborg structure in HOVER
Suborg Assignee IDSuborg_Assignee_ID__cThe ID of the suborg user in HOVEROnly relevant if using a suborg structure in HOVER
Customer Emailcustomer_email__cHomeowner or user assigned to capture a property
Customer Phonecustomer_phone__cPhone number of user assigned to capture a property

The following table is all of the possible fields when creating a Hover Connect Request:

Field NameSalesforce Field NameDescriptionNotes
Send Connect RequestSend_Connect_Request__cA checkbox indicating that a connect request should be sent to a user to capture the propertyBoolean. True indicates the connect request, false indicates a job creation
Capturing User NameCapturing_User_Name__cThe name of the user capturing a property in a connect requestRequired for a Capture Request
Capturing User PhoneCapturing_User_Phone__cThe first/main line of a property addressRequired for a Capture Request
Capturing User EmailCapturing_User_Email__cThe second line of a property addressRequired for a Capture Request
Capture Request IDCapture_Request_ID__cThe ID of the Connect RequestMapped back to Salesforce when the Capture Request is created
Connect StatusConnect_Status__cThe state of the connect requestMapped back to Salesforce when the Capture Request is created or updated
Connect IdentifierConnect_Identifier__cThe unique identifier of the capture request link
Connect LinkConnect_Link__cThe full capture request link (connect identifier is appended)Can be used to resend to a homeowner to capture a property

Note: The integration only supports measurement PDF and JSON deliverables for Roof Only or Complete 3D deliverables in HOVER.

Update HOVER Job Flow

This flow is a part of the integration that processes incoming webhook events from HOVER and maps it back into actions within the integration. In this flow, incoming webhook events are being analyzed to by their state value and event_type values. Here are the possibilities outlined in the default flow:

  • If the event_type is job-state-changed and the state is complete ⇒ integration goes to HOVER to retrieve measurement data and writes that data back into Salesforce
  • If the event_type is job-state-changed and the state is not complete ⇒ do nothing
  • If the event_type is capture-request-state-changed ⇒ update the connect request data in Salesforce
  • If the event_type is webhook-verification-code ⇒ the integration will evaluate the webhook verification code and verify the webhook. This data is associated with the Webhooks Config object in the integration.

It is recommended that you do not edit the core functionality of this flow. If you’d like to make additive changes, please note that they may be wiped away if you decide to upgrade package versions in the future. Here is a snapshot of the flow within Salesforce.

Fig A. Link in a mobile text message (SMS).

Common Workflows and Use Cases

Automate creating a new Hover when there is a new lead/claim/opportunity, etc.

The most common usage of the integration is utilizing input data from another object to automate the creation of HOVER Jobs or HOVER Connect Requests.

HOVER recommends utilizing Salesforce’s flow automation to create these connections within your existing workflows. In the case where you have lead information being created in Salesforce, you can create a flow to create a HOVER Connect Request when a new lead comes in. By using a Salesforce Flow, you can map the user’s name, phone number, and email address, and other information to create a HOVER Connect Request when a new lead is created.

The example below can be extrapolated to originate from any object in Salesforce. The common workflows include generating HOVER Jobs from various Salesforce native objects (Lead, Opportunity, Claim).

Let’s take a simple example where we want to generate HOVER Connect Requests when new lead data is created in Salesforce. At the end of the process, we want to take HOVER’s measurement PDF and post it back to the original lead object so that the Sales Representative has all measurement information attempting to close a sale on a new exterior home improvement project.

  • The first step would be to create a Salesforce flow that triggers when a new Lead is created. Once the lead is created, you can map all pertinent information into the creation of a new Hover Job object (with the Send_Capture_Request option set to true so that the homeowner receives text/email instructions on how to capture their property).

Consider this hypothetical mapping of data within a flow, from a Lead object to the HOVER Job Object:

Lead ObjectHOVER Job Object
Lead NameCapturing User Name
Lead NameHOVER Job Name
EmailCapturing User Email
Phone NumberCapturing User Phone
Send Connect Request ⇒ True
Address Line 1Location Line 1
Address Line 2Location Line 2
CityCity
StateState (Region)
Zip CodePostal Code
Sales RepresentativeAssignee
  • When a lead is created, a Capture Request shell job is created in Hover and a connect invitation is sent to the specific homeowner associated with your original lead.
    • At this point, we wait for the homeowner to capture their property using the HOVER mobile application. Once they’ve captured their property, the data is sent to HOVER’s 3D reconstruction pipeline so that measurements and other deliverables can be generated.
  • Once the job is completed, HOVER sends a webhook notification to Salesforce and the integration automatically pulls back measurement information and the measurements PDF back into the corresponding HOVER Job object
  • Another flow can be created to evaluate when a HOVER Job is updated to be complete. When this flow is triggered, the flow can evaluate the Notes and Attachments field on the HOVER job and pull the PDF into the lead.
Fig A. Link in a mobile text message (SMS).

Support and Frequently Asked Questions

Does the integration work with suborgs in Hover?

Yes. You can assign jobs to any suborgs using the Suborg Assignee field on the Hover Job object. If a job is assigned to a suborg, the user it is assigned to needs to have a matching email address and the proper permissions in Salesforce.

Hover jobs or connect requests are not being created in Hover. How do I fix this?

The most common root cause of this issue is the assignee on the Hover Job not existing or having a matching email address in Hover. For the assignee field on the Hover Job, locate their email address. If you log into Hover and proceed to your team’s settings, validate that there is a user present in your Hover organization that has a matching email address.

If there is no matching email address, you’ll either need to create that user in Hover or change the Salesforce assignee’s email address to match an existing email address in Hover.

Can I view/edit the integration code?

Yes! The integration is completely open source and you can view the integration code within the Apex Settings in Salesforce. Please note that any changes made to the integration code are not subject to troubleshooting or support from the Hover. Additionally, updating to any new/future versions of the Hover for Salesforce integration may cause your custom code to be overwritten.

I have questions about the integration or I’m running into issues I cannot resolve. Who can I contact?

Please reach out to your main Hover point of contact, account manager, or [email protected].