Agreements Integration Workflows

How to use Hover's agrement API endpoints within your integration.

Overview

Agreements (FKA proposals) are an easy way for businesses to provide sign-able documents to homeowners from a previously created design or estimate. This guide covers how to retrieve agreement data from the Hover API. In the two workflows detailed below, users can choose to listen to webhooks to pull back agreement data upon agreement creation or upon an agreement signed.

Workflow 1: Pre-Signature Agreement Retrieval

Use this workflow when you want to pull back agreement data upon the agreement creation in Hover. To learn more on how to register a webhook, see our documentation.

Step 1: Listen for agreement created webhook event

This workflow utilizes the project-management-proposal-document-state-changed webhook event. More information can be found here. After a user selects "Create agreement" and Hover successfully generates the agreement, this event will fire with state=complete.

Step 2: Retrieve agreement details

Using the project_management_proposal_document_id from the webhook body (example below), use the get agreement details endpoint to retrieve data such as the PDF, customer signature status, and any related estimates (production lists).

{
  "project_management_proposal_document_id": 60741,
  "estimation_estimate_group_id": 21988,
  "sales_opportunity_id": 55217,
  "job_id": 9903472,
  "org_id": 130582,
  "state": "complete",
  "event": "project-management-proposal-document-state-changed",
  "webhook_id": 4471
}

Workflow 2: Signed Agreement Retrieval

Step 1: Listen for signature state changed webhook event

After sending an agreement out for a customer signature, if your integration only wants to pull back signed agreements, then you can utilize the project-management-signature-request-state-changed webhook event. More webhook information can be found here. After the customer signs the agreement, this event will fire with state=complete in the body along with other metadata. See the example body below:

{
  "project_management_signature_request_id": 33150,
  "project_management_proposal_document_id": 60741,
  "state": "complete",
  "signed_at": 1751657700,
  "event": "project-management-signature-request-state-changed",
  "org_id": 130582,
 "job_id": 22611631,
  "webhook_id": 4471
}

Step 2: Retrieve signed agreement details

Using the project_management_proposal_document_id , use the Get Agreement Details endpoint to retrieve the PDF and other related information to the job. For a successfully signed agreement, the signatureRequest field will be populated with "state": "complete" . An example of the body can be found below:

{
  "id": "8f2c1a3e-4b5d-4c6f-9a0b-1c2d3e4f5a6b",
  "state": "complete",
  "pdf": {
    "redirectUrl": "https://api.hover.to/files/redirect/document.pdf"
  },
  "createdAt": "2026-06-18T14:03:22Z",
  "updatedAt": "2026-06-20T09:47:10Z",
  "orgId": 48299,
  "user": {
    "id": 200294,
    "firstName": "Jordan",
    "lastName": "Alvarez",
    "email": "[email protected]"
  },
  "job": {
    "id": 229900,
    "externalIdentifier": "CRM-88200",
    "locationLine1": "A nice avenue",
    "locationLine2": "Unit 4",
    "locationCity": "New York",
    "locationPostalCode": "99999",
    "locationRegion": "NY"
  },
  "signatureRequest": {
    "state": "complete",
    "signedAt": "2026-06-20T09:45:58Z"
  },
  "productionLists": [
    { "id": 404222 },
    { "id": 404244 }
  ]
}


Did this page help you?