Hover Webhook Events

Available Webhooks

Below is a list of Webhooks Hover has available, click the corresponding link to be taken to more information about the webhook and its payloads.

OfferingLinkOther info
Job State ChangesJob WebhooksMore here
Inspection ChecklistInspection Checklist WebhooksMore here
Capture Request State ChangesCapture Request WebhooksMore here
Deliverable ChangesDeliverable Change WebhooksMore here
Estimate GroupsEstimate Group WebhooksMore here
Material ListsMaterial Lists WebhooksMore here
Proposals DocumentsProposal WebhooksMore here
Order DocumentsOrder Document WebhooksMore here
Model CreatedModel CreatedComing soon

Job State Changes

job-state-changed

When a job's state changes, you will receive a webhook with the following post body.

{  
  "event": "job-state-changed",  
  "webhook_id": 230293,  
  "job_external_identifier": "order01239181",  
  "job_id": 19402492,  
  "state": "processing_upload",  
  "content-available": 1,  
  "job_estimated_hours_to_completion": 1.3902
}

The state attribute lets you know which state the job just entered. Hover currently provides the following job states for job-state-changed events:

StateDescription
uploadingWaiting for the contractor or homeowner to take pictures of the home and submit them.
processing_uploadThe uploaded data has been received and we're verifying the uploaded data and authorizing the uploaded user.
submittingThe uploaded data is being submitted to our processing pipeline.
workingWe're turning the 2D images you uploaded into a photo realistic 3D model and measurements. At this state and beyond you may request all photos from the API.
waitlistedYour account is on our waitlist. The job will stay in this state until we take your account of the waitlist.
waiting_approvalThe user that uploaded this job must get approval from their org's administrator before the job will progress.
retrieving3D model and measurements are ready. When the job is in this state we're fetching the results from our processing pipeline.
processingApply partner specific branding and other final processing
payingWe're collecting payment for the job
completeAll done. Your results are paid for and available.
failedWe weren't able to finish processing this job.
cancelledThis job was cancelled before we finished processing it.
requesting_correctionsThe client was unhappy with the job and we're sending it back to the processing pipeline for corrections.
processing_upload_for_improvementsMore images were uploaded for the job after processing was done. Let's pre-process those images and get them ready for the pipeline.
requesting_improvementsWe've received and processed an upload for an already complete or failed job. In this state we're sending the job back to the processing pipeline for improvements.

Inspection Checklists

inspection-checklist-created

When an inspection checklist has been created, you'll receive a webhook with the following post body:

{  
  "event": "inspection-checklist-created",  
  "inspection_checklist_id": 573,  
  "job_id": 333  
}

inspection-checklist-updated

When an inspection checklist has been updated, you'll receive a webhook with the following post body:

{  
  "event": "inspection-checklist-updated",  
  "inspection_checklist_id": 573,  
  "job_id": 333  
}

Capture Request State Changes

capture-request-state-changed

After creating a capture request, you will receive webhooks letting you know about it's state changes. Here's an example:

{  
  "capture_request_id": 4290429,  
  "state": "complete",  
  "event": "capture-request-state-changed",  
  "job_estimated_hours_to_completion": 0.0,  
  "job_client_identifier": "test-client-identifier-992759",  
  "job_id": 19402492,  
  "job_external_identifier": "order01239181"  
}

Hover currently provides the following job states for capture-request-state-changed events:

StateDescription
newThe capture request has been created but the capturing user has not registered an account with Hover.
connectedThe capture request has been associated with a user that has signed up with Hover.
completeThe job has been captured.
deletedThe request was deleted before the job was captured.

Deliverable Changes

deliverable-change-request-state-changed

When a deliverable change request's state changes you'll receive a webhook with the following body:

{  
  "event": "deliverable-change-request-state-changed",  
  "webhook_id": 230293,  
  "job_id": 19402492,  
  "state": "complete",  
  "deliverable_change_request_id": 3234  
}

Hover currently provides the following job states for deliverable-change-request-state-changed events:

StateDescription
first_attemptWe're still making our first attempt to upgrade this job's deliverable
waiting_for_job_to_finishThe job wasn't in a state that allowed a deliverable upgrade. In this state we wait for the job to be finished so that we can request the upgrade afterward.
second_attemptWe weren't able to upgrade the job's deliverable the first time, so we waited for it to finish. In this state we make our second and final attempt to upgrade the job's deliverable.
completeThe upgrade was completed and the user will get the new requested deliverable
failedWe weren't able to upgrade this job.

Estimate Groups

When an estimate is created, you will receive a webhook event with the following payload, noted by the complete state:

estimation-estimate-group-state-changed

{
  "estimation_estimate_group_id": "e10191d5-5dd6-4821-b3a1-255b6f94147c",
  "state": "complete",
  "event": "estimation-estimate-group-state-changed",
  "webhook_id": 423
}

estimation-estimate-group-updated

This trigger fires when an estimate group is updated, which includes any of these following events:

  • The estimate group is updated
  • A line item from the estimate group is updated
  • A discount for the estimate group is created/updated/deleted
{
  "estimation_estimate_group_id": "e10191d5-5dd6-4821-b3a1-255b6f94147c",
  "job_id": 1234,
  "event": "estimation-estimate-group-updated",
  "webhook_id": 423
}

Material Lists

Hover sends notifications when a Material List is created (project-management-production-list-created) and when a Material List is updated (project-management-production-list-created). The corresponding events:

project-management-production-list-created

When an material list is created, you will receive a webhook event with the following payload

{  
      project_management_production_list_id: 55643,  
      sales_opportunity_id: 347615,  
      job_id: 8675309,  
      event: 'project-management-production-list-created',  
      webhook_id: 13002,  
    }

project-management-production-list-updated

When an material list is updated, you will receive a webhook event with the following payload

{
      project_management_production_list_id: 55643,
      sales_opportunity_id: 347615,
      job_id: 8675309,
      event: 'project-management-production-list-updated',
      webhook_id: 13002,
    }

project-management-production-list-manual-sync

In the use case where an integration requires a user to click a custom button in Hover, when a user clicks "Send to ThirdParty" Hover will send the following webhook. The webhook'sproject_management_production_list_id and a job_id which can be used to fetch any additional data needed.

{
      project_management_production_list_id: 55643,
      job_id: 8675309,
      event: 'project-management-production-list-manual-sync',
      webhook_id: 13002,
    }

See more about use here.

Proposal Documents

project-management-proposal-document-state-changed

When a project management proposal document has been created, you will receive a webhook with the following post body.

{ 
  "event": "project-management-proposal-document-state-changed",
  "project_management_proposal_document_id": "d69021ae-2ebb-457d-b645-b70e6e26a903",
  "state": "complete"
}

project-management-signature-request-state-changed

When a project management signature request has been created, you will receive a webhook with the following post body. The signed_at field value is seconds since the epoch. Please note that a project-management-signature-request-state-changed event signed_atwill only be sent when the state is signed or complete.

{
  "event": "project-management-signature-request-state-changed",
  "project_management_signature_request_id": "b37dfabb-c0f4-4d75-a753-450f819e27af",
  "project_management_proposal_document_id": "ea253901-01a3-4b43-94f1-98802ae8496b",
  "state": "signed",
  "signed_at": 1598555054
}

Order Documents

project-management-order-document-state-changed

When a project management order document has been created, you will receive a webhook with the following post body. This webhook is sent for both Material & Labor Orders.

{
  "project_management_order_document_id": "cab84a4c-0e20-48d5-9096-54358fd9bc062",
  "state": "complete",
  "project_management_production_list_id": 28358,
  "job_id": 4045349,
  "event": "project-management-order-document-state-changed",
  "webhook_id": 423
}

This webhook will only send events for a complete state.

distribution-order-state-changed

When a product catalog provider order has been created, you will receive a webhook with the following post body. Please note that this event should only be consumed when the product-catalog-provider-order-state-changed state is submitted to reflect that the order has been submitted to the provider's system.

{
  "event": "distribution-order-state-changed",
  "distribution_order_id": "a2d65078-b111-44d5-b556-1c197a54096c",
  "state": "submitted"
}

To learn more about using webhooks, click here.

Model Created

model-created

When a Model is created on a job you will receive a webhook with the following post body. This webhook is relevant particularly for jobs with multiple structures, as each structure will have it’s own Model on the job, and model-created event.

{
  "event" => "model-created",
  "model_id" => id,
  "job_id" => job_id,
  "job_external_identifier" => job.external_identifier
}