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
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
Variable | Description | Type |
---|---|---|
jobId | The Hover Job ID of the desired material list | int |
orgId | The ID of the Hover organization you are accessing the material list on behalf of | int |
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
Variable | Description | Type |
---|---|---|
id | The 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.