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.
Offering | Link | Other info |
---|---|---|
Job State Changes | Job Webhooks | More here |
Inspection Checklist | Inspection Checklist Webhooks | More here |
Capture Request State Changes | Capture Request Webhooks | More here |
Deliverable Changes | Deliverable Change Webhooks | More here |
Estimate Groups | Estimate Group Webhooks | More here |
Material Lists | Material Lists Webhooks | More here |
Proposals Documents | Proposal Webhooks | More here |
Order Documents | Order Document Webhooks | More here |
Model Created | Model Created | Coming soon |
Job State Changes
job-state-changed
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:
State | Description |
---|---|
uploading | Waiting for the contractor or homeowner to take pictures of the home and submit them. |
processing_upload | The uploaded data has been received and we're verifying the uploaded data and authorizing the uploaded user. |
submitting | The uploaded data is being submitted to our processing pipeline. |
working | We'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. |
waitlisted | Your account is on our waitlist. The job will stay in this state until we take your account of the waitlist. |
waiting_approval | The user that uploaded this job must get approval from their org's administrator before the job will progress. |
retrieving | 3D model and measurements are ready. When the job is in this state we're fetching the results from our processing pipeline. |
processing | Apply partner specific branding and other final processing |
paying | We're collecting payment for the job |
complete | All done. Your results are paid for and available. |
failed | We weren't able to finish processing this job. |
cancelled | This job was cancelled before we finished processing it. |
requesting_corrections | The client was unhappy with the job and we're sending it back to the processing pipeline for corrections. |
processing_upload_for_improvements | More images were uploaded for the job after processing was done. Let's pre-process those images and get them ready for the pipeline. |
requesting_improvements | We'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
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
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
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:
State | Description |
---|---|
new | The capture request has been created but the capturing user has not registered an account with Hover. |
connected | The capture request has been associated with a user that has signed up with Hover. |
complete | The job has been captured. |
deleted | The request was deleted before the job was captured. |
Deliverable Changes
deliverable-change-request-state-changed
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:
State | Description |
---|---|
first_attempt | We're still making our first attempt to upgrade this job's deliverable |
waiting_for_job_to_finish | The 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_attempt | We 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. |
complete | The upgrade was completed and the user will get the new requested deliverable |
failed | We 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-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
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
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
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
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
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
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_at
will 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
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
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
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
}
Updated 1 day ago