Get a Job's Material List

Introduction

Hover's Material List feature generates material takeoffs for siding and roofing jobs automatically from Hover measurements. The Material List API provides the ability to access this data through your integration. Currently, the Material List API is read-only, and its contents are provided as JSON. Customers looking to receive material lists in other formats, such as CSV and PDF, can access these files on the HOVER website.

Creating a Material List in Hover

The creation of a Material List for a Hover job requires the use of the Hover web application. Material Lists will not appear in API results until a user has performed these actions on a job in Hover.

To produce a material list, a Hover user will access the Hover website and select the Material List option from a property's details page.

Within the Material List web application, a Hover user will select the Material List templates for their project.

Once a user has selected their templates, Hover will automatically generate a Material List that is available via API.

ProductionList

The projectManagementProductionList query can provide data on the material list generated, as well as other details on the Hover job. There are two similar requests that you can use to query Material List data that our outlined below. Both queries are able to extract the exact same data and it is completely up to you on how you would like to pull the data from Hover

Using the Org ID and Job ID

The first method involves passing in your organization's unique Hover ID and the ID of the specific job that a material list has been generated for:

Required Variables for Querying With Org ID and Job ID

VariableDescriptionType
jobIdThe Hover Job ID of the desired material listint
orgIdThe ID of the Hover organization you are accessing the material list on behalf ofint

Using the Material List ID

In lieu of passing in your respective org and job IDs into the query, you can optionally simplify the request by passing in the projectManagementProductionListId value, also referred to as your material list ID.

Required Variables for Querying With Material List ID

VariableDescriptionType
idThe Hover ID of the material list (projectManagementProductionListId)int

Query and Response Examples

Please note that all of the keys in the query examples are optional. If you do not want or need specific data points, you can remove them from your query.

{
   projectManagementProductionList(jobId: {job_id}, orgId: {org_id}) {
    contractLaborTotal
    contractMaterialSubtotal
    contractMaterialTax
    contractMaterialTotal
    contractOtherTotal
    contractPreDiscountPrice
    contractTotalCost
    contractTotalPrice
    createdAt
    id
    laborTotalCost
    materialPretaxCost
    materialSalesTax
    materialTotalCost
    name
    otherTotalCost
    profitAmount
    profitMargin
    totalCost
    totalDiscount
    totalPrice
    salesOpportunity {
      job {
        id
        name
      }
      orgId
    }
    listItems {
      calculatedQuantity
      color
      id
      isManualMeasurement
      listItemGroupName
      measurement
      measurementUnits
      name
      notes
      pretaxCost
      product {
        name
        manufacturerUrl
        productType
        displayName
      }
      quantity
      quantityUnits
      taxPercent
      totalCost
      totalPrice
      tradeType
      type
      unitCost
      wasteFactor
    }
  }
}
{
  projectManagementProductionListById(id: {projectManagementProductionListId}) { #the ID of the material list
    contractLaborTotal
    contractMaterialSubtotal
    contractMaterialTax
    contractMaterialTotal
    contractOtherTotal
    contractPreDiscountPrice
    contractTotalCost
    contractTotalPrice
    createdAt
    id
    laborTotalCost
    materialPretaxCost
    materialSalesTax
    materialTotalCost
    name
    otherTotalCost
    profitAmount
    profitMargin
    totalCost
    totalDiscount
    totalPrice
    salesOpportunity {
      job {
        id
        name
      }
      orgId
    }
    listItems {
      calculatedQuantity
      color
      id
      isManualMeasurement
      listItemGroupName
      measurement
      measurementUnits
      name
      notes
      pretaxCost
      product {
        name
        manufacturerUrl
        productType
        displayName
      }
      quantity
      quantityUnits
      taxPercent
      totalCost
      totalPrice
      tradeType
      type
      unitCost
      wasteFactor
    }
  }
}
{
  "data": {
    "projectManagementProductionListById": {
      "totalCost": 22465.3061,
      "totalDiscount": 0,
      "totalPrice": 36934.663687,
      "salesOpportunity": {
        "job": {
          "id": 11250631,
          "name": null,
          "externalIdentifier": null
        },
        "orgId": 463605
      },
      "listItems": [
        {
          "calculatedQuantity": 501.2176613842516,
          "color": "Primed",
          "id": 5891596,
          "isManualMeasurement": false,
          "listItemGroupName": "Hames Jardie - 7 1/4\" Lap Siding (Statement Colors)",
          "measurement": 25.82,
          "measurementUnits": "squares",
          "name": "7 1/4\" Hardie Plank",
          "notes": "",
          "pretaxCost": 5522,
          "taxPercent": 0.07,
          "productCatalogProductId": "04eaf38d-12ca-4d69-b8b1-0adcabddcd46",
          "sku": null,
          "product": {
            "name": "James Hardie 5/16\" 7-1/4\" x 12' HardiePlank® Select Cedarmill Lap Siding for HardieZone® 5 Primed",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 502,
          "quantityUnits": "PIECES",
          "totalCost": 5908.54,
          "totalPrice": 9867.2618,
          "tradeType": "SIDING",
          "type": "MATERIAL",
          "unitCost": 11,
          "wasteFactor": 0.1
        },
        {
          "calculatedQuantity": 51.64,
          "color": null,
          "id": 5891602,
          "isManualMeasurement": false,
          "listItemGroupName": "Hames Jardie  - 7 1/4\" Lap Siding (Statement Colors)",
          "measurement": 25.82,
          "measurementUnits": null,
          "name": "OSI Quad Max - Body Color",
          "notes": "",
          "pretaxCost": 369.2,
          "taxPercent": 0.07,
          "productCatalogProductId": "e18b68c4-f302-4d5a-8735-a14285ad0a02",
          "sku": null,
          "product": {
            "name": "QUAD Max Window, Door & Siding Sealant - 9.5 Fl. Oz. Cartridge",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 52,
          "quantityUnits": "TUBES",
          "totalCost": 395.044,
          "totalPrice": 659.72348,
          "tradeType": "SIDING",
          "type": "MATERIAL",
          "unitCost": 7.1,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 2.582,
          "color": null,
          "id": 5891607,
          "isManualMeasurement": false,
          "listItemGroupName": "Hames Jardie - 7 1/4\" Lap Siding (Statement Colors)",
          "measurement": 25.82,
          "measurementUnits": null,
          "name": "3\" Tyvek Seam Tape",
          "notes": "",
          "pretaxCost": 54.45,
          "taxPercent": 0.07,
          "productCatalogProductId": null,
          "sku": null,
          "product": null,
          "quantity": 3,
          "quantityUnits": "ROLLS",
          "totalCost": 58.2615,
          "totalPrice": 97.29670499999999,
          "tradeType": "SIDING",
          "type": "MATERIAL",
          "unitCost": 18.15,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 1.0328,
          "color": null,
          "id": 5891606,
          "isManualMeasurement": false,
          "listItemGroupName": " - 7 1/4\" Lap Siding (Statement Colors)",
          "measurement": 25.82,
          "measurementUnits": null,
          "name": "Stingers/Staples",
          "notes": "",
          "pretaxCost": 77.94,
          "taxPercent": 0.07,
          "productCatalogProductId": null,
          "sku": null,
          "product": null,
          "quantity": 2,
          "quantityUnits": "BOXES",
          "totalCost": 83.3958,
          "totalPrice": 139.270986,
          "tradeType": "SIDING",
          "type": "MATERIAL",
          "unitCost": 38.97,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 1.291,
          "color": null,
          "id": 5891605,
          "isManualMeasurement": false,
          "listItemGroupName": "Hames Jardie - 7 1/4\" Lap Siding (Statement Colors)",
          "measurement": 25.82,
          "measurementUnits": null,
          "name": "Touch Up Kit - Siding",
          "notes": "",
          "pretaxCost": 53.4,
          "taxPercent": 0.07,
          "productCatalogProductId": null,
          "sku": null,
          "product": null,
          "quantity": 2,
          "quantityUnits": "EACH",
          "totalCost": 57.138,
          "totalPrice": 95.42045999999999,
          "tradeType": "SIDING",
          "type": "MATERIAL",
          "unitCost": 26.7,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 0.48805555555,
          "color": null,
          "id": 5891604,
          "isManualMeasurement": false,
          "listItemGroupName": "Hames Jardie- 7 1/4\" Lap Siding (Statement Colors)",
          "measurement": 292.83333333,
          "measurementUnits": null,
          "name": "Touch Up Kit - Trim",
          "notes": "",
          "pretaxCost": 26.7,
          "taxPercent": 0.07,
          "productCatalogProductId": null,
          "sku": null,
          "product": null,
          "quantity": 1,
          "quantityUnits": "EACH",
          "totalCost": 28.569,
          "totalPrice": 47.71023,
          "tradeType": "SIDING",
          "type": "MATERIAL",
          "unitCost": 26.7,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 1.16,
          "color": "1-1/4\"",
          "id": 5891603,
          "isManualMeasurement": false,
          "listItemGroupName": "Hames Jardie - 7 1/4\" Lap Siding (Statement Colors)",
          "measurement": 29,
          "measurementUnits": null,
          "name": "Coil Nails",
          "notes": "",
          "pretaxCost": 57.74,
          "taxPercent": 0.07,
          "productCatalogProductId": "0c3c399f-e6b5-4426-8010-0a74ba60fd12",
          "sku": null,
          "product": {
            "name": "1-1/4\" Coil Roofing Nails - Carton of 7,200",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 2,
          "quantityUnits": "BOXES",
          "totalCost": 61.7818,
          "totalPrice": 103.175606,
          "tradeType": "SIDING",
          "type": "MATERIAL",
          "unitCost": 28.87,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 2.700716845815054,
          "color": "SwiftStart® Starter Shingles",
          "id": 5891591,
          "isManualMeasurement": false,
          "listItemGroupName": "TertainCeed Landmark®",
          "measurement": 285.41666666,
          "measurementUnits": "linear_feet",
          "name": "TertainCeed SwiftStart® Starter ",
          "notes": "",
          "pretaxCost": 143.85,
          "taxPercent": 0,
          "productCatalogProductId": "d0067e5b-3abc-425d-93e7-02d5c9f27540",
          "sku": null,
          "product": {
            "name": "SwiftStart® Starter Shingles",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 3,
          "quantityUnits": "BUNDLES",
          "totalCost": 143.85,
          "totalPrice": 240.2295,
          "tradeType": "ROOF",
          "type": "MATERIAL",
          "unitCost": 47.95,
          "wasteFactor": 0.1
        },
        {
          "calculatedQuantity": 3.949305555708333,
          "color": null,
          "id": 5891590,
          "isManualMeasurement": false,
          "listItemGroupName": "TertainCeed Landmark®",
          "measurement": 86.16666667,
          "measurementUnits": "linear_feet",
          "name": "TertainCeed 8\" Mountain Ridge® H/R",
          "notes": "",
          "pretaxCost": 248,
          "taxPercent": 0,
          "productCatalogProductId": "abd27191-c472-4f3c-b010-dd5cc237c0d4",
          "sku": null,
          "product": {
            "name": "8\" Mountain Ridge® High Profile Hip & Ridge Accessory Shingles - 24 Lin. Ft. Box",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 4,
          "quantityUnits": "BUNDLES",
          "totalCost": 248,
          "totalPrice": 414.16,
          "tradeType": "ROOF",
          "type": "MATERIAL",
          "unitCost": 62,
          "wasteFactor": 0.1
        },
        {
          "calculatedQuantity": 4.364743589630769,
          "color": "2 SQ. Roll",
          "id": 5891589,
          "isManualMeasurement": false,
          "listItemGroupName": "TertainCeed Landmark®",
          "measurement": 257.91666666,
          "measurementUnits": null,
          "name": "CertainTeed WinterGuard® G",
          "notes": "",
          "pretaxCost": 419.9,
          "taxPercent": 0,
          "productCatalogProductId": "21ac57a7-8242-4d38-8191-50b780b7fef2",
          "sku": null,
          "product": {
            "name": "WinterGuard® Granular Waterproofing Shingle Underlayment - 2 SQ. Roll",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 5,
          "quantityUnits": "ROLLS",
          "totalCost": 419.9,
          "totalPrice": 701.233,
          "tradeType": "ROOF",
          "type": "MATERIAL",
          "unitCost": 83.98,
          "wasteFactor": 0.1
        },
        {
          "calculatedQuantity": 1.11200000001,
          "color": "10 SQ. Roll",
          "id": 5891588,
          "isManualMeasurement": false,
          "listItemGroupName": "TertainCeed Landmark®",
          "measurement": 11.1200000001,
          "measurementUnits": "squares",
          "name": "CertainTeed RoofRunner™ Underlayment",
          "notes": "",
          "pretaxCost": 266,
          "taxPercent": 0,
          "productCatalogProductId": "2c1d4e6b-561b-4a39-9ca7-28c70ca0089f",
          "sku": null,
          "product": {
            "name": "4' x 250' RoofRunner™ High-Performance Synthetic Roofing Underlayment - 10 SQ. Roll",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 2,
          "quantityUnits": "ROLLS",
          "totalCost": 266,
          "totalPrice": 444.22,
          "tradeType": "ROOF",
          "type": "MATERIAL",
          "unitCost": 133,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 13.708333333,
          "color": null,
          "id": 5891587,
          "isManualMeasurement": false,
          "listItemGroupName": "TertainCeed Landmark®",
          "measurement": 137.08333333,
          "measurementUnits": "linear_feet",
          "name": "Drip Metal",
          "notes": "",
          "pretaxCost": 50.4,
          "taxPercent": 0,
          "productCatalogProductId": "91ff30ea-6ba0-4226-8189-85590e966065",
          "sku": null,
          "product": {
            "name": "28 Gauge x 1-1/2\" x 10' TruEdge Steel T-Style Drip Edge",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 14,
          "quantityUnits": "PIECES",
          "totalCost": 50.4,
          "totalPrice": 84.16799999999999,
          "tradeType": "ROOF",
          "type": "MATERIAL",
          "unitCost": 3.6,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 21.33,
          "color": null,
          "id": 5891586,
          "isManualMeasurement": false,
          "listItemGroupName": "TertainCeed Landmark®",
          "measurement": 21.33,
          "measurementUnits": "squares",
          "name": "Tear Off First Layer",
          "notes": "",
          "pretaxCost": 0,
          "taxPercent": 0,
          "productCatalogProductId": null,
          "sku": null,
          "product": null,
          "quantity": 21.33,
          "quantityUnits": "SQUARES",
          "totalCost": 0,
          "totalPrice": 0,
          "tradeType": "ROOF",
          "type": "LABOR",
          "unitCost": 0,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 1.066,
          "color": "1-1/4\"",
          "id": 5891585,
          "isManualMeasurement": false,
          "listItemGroupName": "TertainCeed Landmark®",
          "measurement": 21.32,
          "measurementUnits": "squares",
          "name": "Fanaco Coil Nails",
          "notes": "",
          "pretaxCost": 54,
          "taxPercent": 0,
          "productCatalogProductId": "e5459757-e641-46c4-9192-24816772fc25",
          "sku": null,
          "product": {
            "name": "Generic 1-1/4\" Coil Roofing Nails - Carton of 7,200",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 2,
          "quantityUnits": "BOXES",
          "totalCost": 54,
          "totalPrice": 90.17999999999999,
          "tradeType": "ROOF",
          "type": "MATERIAL",
          "unitCost": 27,
          "wasteFactor": 0
        },
        {
          "calculatedQuantity": 1.563466666666667,
          "color": "3/8\"",
          "id": 5891584,
          "isManualMeasurement": false,
          "listItemGroupName": "TertainCeed Landmark®",
          "measurement": 21.32,
          "measurementUnits": "squares",
          "name": "Rapid A 11 Staples -3/8\"",
          "notes": "",
          "pretaxCost": 9,
          "taxPercent": 0,
          "productCatalogProductId": "b8d3d22b-88ba-41cc-ac06-40d3317563a4",
          "sku": null,
          "product": {
            "name": "Duo-Fast 3/8\" Staples - Box of 5,000",
            "manufacturerUrl": null,
            "productType": "MATERIAL",
            "displayName": null
          },
          "quantity": 2,
          "quantityUnits": "BOXES",
          "totalCost": 9,
          "totalPrice": 15.03,
          "tradeType": "ROOF",
          "type": "MATERIAL",
          "unitCost": 4.5,
          "wasteFactor": 0.1
        }
      ],
      "orders": []
    }
  }
}
curl -X POST "https://graph.hover.to/graphql" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{"query": "query { projectManagementProductionList(jobId: {job_id}, orgId: {org_id}) { listItems { type unitCost tradeType quantity color totalCost product { name provider { name } } SKU sortOrder } } }"}'

Method: POST
URL: https://graph.hover.to/graphql
Headers: 
  Content-Type: application/json
  Authorization: Bearer YOUR_ACCESS_TOKEN

Body:
{
  "query": "query { projectManagementProductionList(jobId: {job_id}, orgId: {org_id}) { listItems { type unitCost tradeType quantity color totalCost product { name provider { name } } SKU sortOrder } } }"
}

Using Webhooks for Material List events

When a material list is created or updated in Hover, our system will fire notifications that you can subscribe to through a webhooks connection. 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

Material List Created

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

Material List Updated

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

In terms of utilizing this data against the queries referenced above, the webhook payload includes the specific job_id where a material list was created or updated. If you plan on querying this data using the Org ID and your Job ID, you'll need to hardcode your orgId value and use the jobId from the webhook event.

If you decide to use the projectManagementProductionListID to query for this data, you can use the corresponding value for the project_management_production_list_id key within the webhook event.