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.

The three core objects below handle the connection, incoming events, and job data, and are the focus of this guide.

The integration also installs additional objects that support newer features — Hover Estimates (Hover_Material_List__c), Estimate Line Items (Hover_Estimate_Line_Item__c), Adjustments (Hover_Adjustment__c), and Hover Inspections (Hover_Inspection__c) — which are covered in their own guides.

Optional behaviors are toggled through the Hover Config custom setting (see the Custom Settings guide).

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 NameDescription
Hover Job NameAlways "webhook"
Content AvailableStatic boolean (always 1/true)
EventThe event type
HOVER JobJob name in Hover
Job Estimated Hours to CompletionProcessing time estimate
Job External IdentifierExternal ID (typically associated Salesforce object ID)
Job IDHover's job ID
RequestFull webhook event in JSON format
StateEvent state (depends on event type)
Webhook IDHover's webhook ID
Verification CodeVerification code for the webhook-verification-code event
Hover Material List IDID of the production list/estimate referenced by the event
Hover Inspection IDID of the inspection referenced by an inspection event
Hover Proposal IDID of the proposal referenced by a signature-request event

Hover Job Object (Hover_Job__c)

Encapsulates all data associated with a Hover job or capture request. Upon creation, a "shell job" awaits photo capture. When the property is captured, automation populates measurement fields based on Hover summarized data and writes deliverables to Notes & Attachments.

Fields for Job/Capture Request Creation:

Field NameSalesforce Field NameDescriptionNotes
Hover Webhook NameNameJob name
Hover Job IDHover_Job_ID__cJob ID in Hover
Location Line 1Location_Line_1__cPrimary address lineRequired
Location Line 2Location_Line_2__cSecondary address line
Citylocation_city__cProperty city
State (Region)location_region__cProperty state
Postal Codelocation_postal_code__cZip code
Countrylocation_country__cCountry
StateState__cProperty state in Hover's pipeline
AssigneeAssignee__cJob creator (picklist)User must have matching email in Hover
Suborg AssigneeSuborg_Assignee__cHover suborg userSuborg structure only
Suborg Assignee IDSuborg_Assignee_ID__cSuborg user's IDSuborg structure only
Customer Emailcustomer_email__cHomeowner email
Customer Phonecustomer_phone__cHomeowner phone

Fields for Hover Connect Requests:

Field NameSalesforce Field NameDescriptionNotes
Send Connect RequestSend_Connect_Request__cBoolean for connect requestTrue = connect request; false = job creation
Capturing User NameCapturing_User_Name__cUser capturing the propertyRequired for capture request
Capturing User PhoneCapturing_User_Phone__cUser's phone numberRequired for capture request
Capturing User EmailCapturing_User_Email__cUser's emailRequired for capture request
Capture Request IDCapture_Request_ID__cConnect request IDMapped back when created
Connect StatusConnect_Status__cRequest stateMapped back when created or updated
Connect IdentifierConnect_Identifier__cUnique capture request link identifier
Connect LinkConnect_Link__cFull capture request linkCan be resent to homeowners

Other job fields worth noting:

Field NameSalesforce Field NameDescription
Hover Deep LinkHover_Deep_Link__cLink that opens the job's Photo Capture flow in the Hover mobile app
Hover NoteHover_Note__cNote body to create/update on the job in Hover
Hover Note IDHover_Note_ID__cID of the note in Hover (mapped back after creation)
Parent Org IDParent_Org_ID__cParent org ID, stamped at creation when sub-org sharing is enabled

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

Update Hover Job Flow

The Update Hover Job flow is triggered when a Hover Webhook record is created. It routes on the event's Event (and, for some events, State) value and takes the following actions:

Event (Event__c)ConditionAction
job-state-changedState = completeRetrieves measurement data, writes it to the Hover Job, publishes a Job Complete event, and sets the "Synced to Salesforce" label on the job in Hover
job-state-changedState ≠ completeUpdates the job; no measurement retrieval
capture-request-state-changedUpdates connect (capture) request data on the Hover Job
webhook-verification-codeEvaluates the verification code and verifies the webhook
deliverable-change-request-state-changedState = completeHandles the deliverable change request (e.g. a capture-only job upgraded to Roof Only or Complete)
project-management-production-list-createdCreates an estimate in Salesforce when the Auto Create Estimate custom setting is enabled
project-management-production-list-manual-syncSyncs the estimate/material list data into Salesforce
inspection-state-changedState = submittedRetrieves inspection data into Salesforce
project-management-signature-request-state-changedState = signedRetrieves the signed proposal PDF

The documentation notes that users should avoid editing core flow functionality. Additive changes may be overwritten during future version upgrades.


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


Did this page help you?